What is a good developer ?

Being a developer is nowadays a way of life that seems to be easy when it comes to find a job. Most firms need informatics to be part of the business, like having their own website and internal softwares. They need developers to make them, so they have to hire or ask for another company’s services. In this sense, there is a lot of work and many job opportunities to be taken. On the other hand, learning the basics is kind of everybody’s capabilities. No special hardware is required except for the computer and Internet access. Still, it’s not that easy to get the job you want, or the salary you expect. Companies want developers so they can deliver the projects, but as in any other field, they also need them to be good in order to be efficient in satisfying the client (or themselves).

Along my experience, I found that it’s actually quite difficult to hire people that you feel will do a good job. Ideally you’d want to hire the best guys but you eventually find yourself despaired to find someone that will just do the job, at least. Why is that ? Well, I believe that good developers are a rare resource, and thus they are hard to find.

But haven’t I just said that starting off is an easy pace ? Unfortunately that doesn’t mean people get good at what they do. How can we recognize a good developer from an average one ?

Maybe, a skilled developer

This is the most obvious criterion, skills are what make you produce code the way you do. But what are skills ? Should we give a mark to a developer depending on the number of language features he knows, and admit he’s good if he gets a better grade than other ones ? That’s one way to evaluate the experience of people, but a large experience does not give necessarily a good developer.

A good developer should be able to solve various kind of problems, not just some specific ones he has already met. Having an experience in different projects is therefore a good indicator of the skills, but it’s not the only one. I deeply believe that it’s not possible to be proficient in this job if you don’t have an understanding of the different layers involved when creating an application.

Full stack developer ?

We’re not talking about being an expert in each and every field but having some solid skills in frontend web development and server architecture is a mandatory minimal set for a backend developer. Would you trust someone to develop you website if he’s not able to set up a web server for the technology he’s using ? That’s why you should have some knowledge of the work that the people around you are doing, even if that’s not your job. It will bring your skills to the next level and ease the communication between people, making the team more efficient.

Does this mean that a good developer should be a full stack one ? I wouldn’t go that far, considering that many technologies come into play in all projects we’re dealing with now, and being an expert with each one would take far too much time for anyone. But getting to know the tools you’re working with shouldn’t be so hard, right ?

Being curious

A bit of cultural background may be the little bonus that helps one understand the inside of his environment and be more efficient in solving the day to day issues. In one word, it’s all about being curious about everything related to technologies, not just pure development.

That’s in my opinion the main criterion to becoming a truly good developer. Curiosity brings you to discover new tools, new topics, new technologies, and will help you get into the deeps of software development. Technologies evolve every day. Most tools we use today just didn’t exist a few years back, and there will be something new tomorrow, and the days after, so you should be prepared for change.

Learn to learn

This preparation asks people to be constantly learning, it’s part of the deal. You cannot be good at what you do if you produce code using features from 10 years ago, otherwise we’d still be developing websites with tables layouts !

The important thing is that good developers get interested in stuff that is not necessarily directly relevant with what they do every day. I think it’s important to be open-minded and learn about tools that you never considered using on your project, either because you already have one which is fitted or because you have no use for such tool. Still, knowing about it keeps your mind open and will bring new ideas in the future. Everything you do today will build your skills for tomorrow, and when doing this job, you always want to be one day ahead.