How to be an Exceptional Software Developer
What makes some developers stand above the rest? How can some developers create wildly new and useful algorithms while others struggle? What are the important traits that make an exceptional developer? Your answers will be different depending on whether you are a developer--OR someone who hires and manages them. In this article, I’ll explore some of these questions and pose answers that will help make you a better –and more valuable—developer. If you hire developers, you’ll know a good one when you see them.
Different Kinds of Developers
developers come in all shapes and sizes, and different skill sets. Some skills are unique to a particular industry; some skills can be for a specific type of machine. There are developers that work at the machine level, some work on operating systems, some work on building compilers that other developers use, some build business applications, some build web sites. What the different qualifications are for each of these different types of programming jobs varies widely. However, you will most likely find there are basic traits all of these developers have in common.
Common Developer Traits
There are some traits inherent to most developers, things like the ability to concentrate for long periods of time, high intelligence, and an unwavering tenacity. Of course these traits can also apply to many other individuals that are not developers. So what are some of the traits unique to the best developers? Over almost a decade and a half of working with dozens of projects and companies and countless staff, we’ve seen, time and time again, the following qualities show up in all good developers. These people are:
Let's look at each of these and think about why these traits are necessary for a top notch developer.
If a person is adaptive, then that person has the capability to adjust to new situations quickly and easily. In the world of computers, if there is one constant, it is change. A developer who works in one language or one a specific kind of machine today, is almost guaranteed that soon they will be working in another language or on another kind of machine. If a person can not adapt to this ever-changing world, then they most likely will not make a good developer. To put it another way, if you are unable to learn new tricks, you are of limited value after your project completes.
Machines are logical, so it therefore follows that one who programs a machine must also be logical. To understand how to program, a person must have the ability to reason how certain inputs must produce certain outputs when dealing with a machine. Without this ability a person would never be able to get a machine to do what that person wants to have done.
The ability to be analytical is a very similar trait to that of logical. However, being analytical refers to the ability to take a given problem and break it down into a series of small tasks. A computer program is generally made up of many different parts put together in a logical way. Each of the parts must be created by a developer. The developer must be able to create the parts and put them together in such a way as to create a program that solves the problem. If a person can do this given any type of problem, then that person is typically a good developer.
The first three traits are very "scientific" in some ways. This trait (creativity) is not. Here’s why the art of creativity is priceless in a developer. It turns out there are typically many ways to solve the same problem. Some methods of solving problems can be better than others. If a person is creative, along with the other traits, they can quickly think of various solutions and rule out those that may not be "the best."
Now that we have identified those traits that all developers typically have in common, what makes some developers stand out in the world? I won't name any names, you know which developers stand out in your programming circle. But I will bet these exceptional developers have many of the same traits in common.
Of all of the above, I think the first trait is the most important. Those people that truly enjoy what they do are the ones that will also have the rest of the traits listed. In my 20+ years of programming and architecting I have met many exceptional developers. They love to talk about how they solve problems, how they approach different programming situations, and what they think is the best way to program. They get excited about programming and are very passionate when discussing programming topics.
Most exceptional developers are ones that create tools. They create tools to help them get their job done quicker and more efficiently. Exceptional developers get bored easily, so if a task is repetitive, then they will invent a tool to get that task done.
The most successful people are those that hold themselves up to very high standards. Exceptional developers are the same. Their code and how they solve problems must be top-notch. They also expect others that they work with to adhere to the same high standards. Most exceptional developers will tend to work with exceptional developers. Sometimes too high of standards can be a bad thing. It is important to make sure that the exceptional developer also has a realistic view of getting a job done. If there standards are forcing them to miss deadlines and run over-budget then this can take away from them being an exceptional developer.
Many exceptional people are curious, and exceptional developers are no different. Those people that really wish to understand how a program, process, or machine works will be the ones who will dig in and try to figure it out. By figuring it out, they learn, by learning they become more knowledgeable, and by becoming more knowledgeable, they become more exceptional. This is a great circle to get caught up in!
And a bonus trait…
Besides the above traits, there’s one more that shows up in a truly exceptional developer: they are quick to share their expertise and knowledge with others. This can come in the form of mentoring co-workers, giving a lunch-time presentation to colleagues, writing articles or public speaking. This is what can truly set a developer apart from others. In addition, this trait is also what makes a great employee!
Managing the Exceptional Developer
When someone is an exceptional developer, you might think you do not need to manage them. Well, this is not always the case. While they may be excellent at programming, it does not necessarily mean they have interpersonal skills or project management skills needed in your environment. I remember that we hired an exceptional developer one time. While they created some outstanding code, it was difficult to keep them focused on the project at hand. We also wanted them to share more with the rest of the team, but it was difficult for them to do this.
Just because someone is great at writing code, does not make them an exceptional employee. There is a lot more than just programming when it comes to a project. There are schedules and deadlines to meet, requirements to extract from users, and specifications to write. If you are a large enough organization you can have different people perform these different tasks. However, a truly exceptional developer is one that can also understand the business problem they are trying to solve, as well as deliver their portion of the project on-time and on-budget. An exceptional technologist is someone who understands business and technology and is able to translate a business problem into a technical solution quickly and efficiently.
Identifying specific traits for a particular job can help you decide if you should be developer. If you are a manager responsible for hiring developers, these traits can help you identify the type of person you would like to hire. To be truly exceptional, never rest on your laurels. Always push to understand more, do more, and create more.