Have you ever worked with a brilliant developer? I did. And I couldn’t help but notice what he did differently than others I met.
Here are the four traits of outstanding developers that make the difference.
They learn all the time
Great developers learn all the time. They read books, watch courses, and experiment with the code. They’re up to date with the new emerging patterns. But it’s not enough to be genuinely excellent. The learning itself doesn’t matter if you’re not learning the right things.
They do learn the right things, and that’s the real difference between good and great developers.
The thing is, you can’t learn everything. There are just too many new things popping up. The greats focus on the things that have the most significant impact and can be used throughout their whole career — they value patterns over frameworks, techniques over tools. They can easily understand and explain how languages work and can use their features when necessary, not just to show off.
This focus on underlying concepts adds breadth to their knowledge. And while they’re usually experts in only one or two areas, their understanding of computer science and programming allows them to learn anything fast and talk about almost any programming-related subject with ease.
They empower others
Do you know this African proverb?
If you want to go fast, go alone; if you want to go far, go together.
Programming is a team sport. It doesn’t matter how good you are if you’re not cooperating with others.
Let’s say you do everything better than everyone in your company. You’re faster and deliver better quality. It doesn’t mean you have to do everything. You need to delegate and empower your team. Even if you’re brilliant, you won’t achieve much alone — your day is only 24 hours long. Your pride will get in the way of productivity if you don’t let others help.
The great developers do the opposite — they understand their job is not to write the best code but to empower their teams to do the best work. And they do it in many different ways.
Maybe the best thing they do is foster the growth of others. Great developers don’t impose solutions. Instead, they allow discussion or even let other developers do their work as they want, inside some accepted boundaries. They’re mature enough to understand others have to make mistakes to progress and trust them enough to allow it.
Another way great developers empower their teams is by removing themselves from the processes. One of the most significant challenges of building modern software is the concentration of knowledge in just a few bottlenecks — the developers who have a unique understanding of the system. Great developers do everything not to become bottlenecks — they write documentation, share knowledge, and encourage others to expand their expertise. And if the bottlenecks arise, the best developers focus their energy on removing them and unlocking others.
Their codebase is a joy to work with
There is a great way to assess if a developer is good or not. Inherit their project after a year or two and see how fast you can understand it and make meaningful changes. If everything seems easy and logical they did a marvelous job.
When you start building a project, everything is pretty simple. You go fast, add feature after feature, and life is excellent. But as time goes on, things tend to slow down. Unexpected bugs start to creep in. Every additional feature is hard to add. You start discovering duplication everywhere; after a year codebase is a total mess.
This does not happen to great developers. They can architect code in a way that’s appropriate to the requirements. And when the requirements inevitably change, they do adjust.
But architecture is not everything. The exceptional developers also have up-to-date documentation, so whenever someone joins the team they can start working almost immediately.
Even the extraordinary documentation can’t contain everything, or it will become too big to be readable. Great developers have a solution for that, too — they write tests. That’s a hidden benefit of tests — they’re a perfect documentation source as they describe what should happen in what circumstances.
If you can understand the codebase by looking at its structure, documentation, and tests, you can be sure the person working there before you was a spectacular developer.
They understand business
The great programmers know the sad truth about software development — your code is not the product.
Real-life programming is not a contest for the best code. It’s about solving real problems and creating products. It’s about providing value. And to give the value, you have to understand the needs of your clients and users.
Experienced programmers change their approach depending on the business circumstances. Maybe their client is a startup that wants to build MVP fast, has a tight budget, and has only half a chance of succeeding big? Or perhaps it’s a huge bank that needs secure and reliable software for the decades to come? These questions are essential cause they impact every project decision they make.
They’re also aware that even the stakeholders often don’t know what they want or need. So exceptional programmers build their domain knowledge and communication skills to make products that make a difference.
They take time to understand what products are essential to their company and where they should put their focus. And if their team lacks some vital skills needed to deliver a product, they learn those skills and later share the knowledge. These developers make the difference between the success and failure of the project.