What makes a great developer? Whether you are a developer yourself or are in the business of hiring developers, this is an important question to answer. As a developer, just knowing what it takes to stand above the rest can be key to success. From a business management perspective, knowing what makes a good developer for your organization guides recruiting decisions and helps to ensure the individual is the right fit for the role for which they are being considered.
Unfortunately, this question is almost as hard to answer as it is important. Often, the best developers seem to come from the least likely places and show no indication of their rock star nature during the typical interview process. Other times, it’s obvious from the first brief conversation that someone could do great things for a project or company. Even after working with a developer for years, it can be difficult to nail down exactly what makes one developer better than the next. There are a few common threads, however, that I have found over the years of interviewing, hiring and working with developers that distinguish great developers from the rest. Regardless of the role or organization, a developer without these qualities will not contribute as much as a developer with them.
The four pillars of a great software developer:
1.Has a Passion to Learn
3.Takes Pride in their Work
4.Gets Stuff Done
There is purposefully nothing in this list that is specific to software development, or even technology at all. I have found that specific technical prowess or years of experience are surprisingly poor indicators that an individual will be a great developer. Technology in general and software development in particular changes almost daily and only those that can adapt will excel. It is common to run into developers with 15+ experience that a fresh college graduate can run circles around in nearly all aspects of their trade. The more experienced developer may not be able to adapt and suffers from what is referred to as “15 years of 1 year of experience” – i.e., they learned for one year and have been doing that same thing ever since.
That said, let’s define what each of these traits actually mean.
1. Has a Passion to Learn
Technology changes. Software development technologies change *fast*. If you aren’t learning new things constantly in this industry, you are going to fall behind quickly. Great developers know this and are driven to learn new things as a matter of habit. Ask a great developer what they plan to learn next and you will usually have a laundry list of technologies, frameworks, platforms and tools that they want to sink their teeth into.
Great developers aren’t satisfied with maintaining the status quo and are happiest when they are pushing their boundaries. Being comfortable in the uncomfortable is something that is innate in some and a learned trait in others, but important either way. By continuing to push and learn, the path is paved towards further learning and production.
2. Communicates Well
The idea of the solo basement hacker building the next big thing without the support of a team is glorified, but impractical. Beyond the most basic of businesses, more than one person will be necessary to bring an idea to fruition. Without a strong line of communication, plans tend to break down fairly quickly.
Highly technical people can talk about their work fluently. Look at some of the most productive developers in existence (think John Carmack, Oculus CTO and legendary creator of Doom) and note how they can talk for hours on very technical topics without losing their nearly always less technical audience. It is a skill that indicates someone has reached another level with their technical knowledge.
Of all of the traits of a great developer this is possibly the rarest to find. The significance of good communication is often mentioned in recruiting efforts, but it isn’t normally made a top priority of technical interviewing and in the ultimate hiring decision. This is a mistake both from an interpersonal skill assessment and from a technical assessment.
3. Takes Pride in Their Work
A developer has to care about their work. Like the rest of the traits of great developers, this can be applied to nearly any occupation, but it particularly important for software. Software development isn’t always sexy or glamorous. It often consists of slogging through mundane tasks for days or weeks at a time in order to take a project to completion. Great developers take even the most basic tasks, however, and turn them into something that they can be proud of.
A developer that takes pride in their work will write cleaner, more consistent code. They will also be able to motivate themselves and others to just get stuff done.
4. Gets Stuff Done
All of the brilliance and talent in the world is useless without a drive to take a given task to completion. If the Golden Gate Bridge spanned only 99% of the San Francisco Bay but was then abandoned for the next project, it would be useless. Similarly, if the original developers at Google completed their entire search engine then never bothered with the menial task of developing the webpage with a search box for users, it would not have been particularly useful.
Developers are notoriously attracted to the novel; drawn to the next big thing. Great developers temper that predilection with the motivation to take projects to completion. You may have heard about the idea of the “10X Developer”; the developer that is worth 10 times the amount of a “regular” line developer. What gives them this label? It isn’t that they are 10 times smarter, or that they have 10 times as much experience. At the end of the day, they get 10 times as much work done and this ultimately is what defines much of their worth to a project or company.
So Where Do I Find Great Developers?
After defining what a great developer is, the next logical question would be, “How do I find great developers?” This is a useful question to ask whether you are hiring software developers or are looking for a place to work to surround yourself with high level talent.
Look for future posts where I’ll explain my process for identifying and hiring the best developers around.
Director of Software Development