“The best programmers are up to 28 times better than the worst programmers” – Robert. L. Glass
Great developers are rare. Their productivity is 3 times that of an average developer and 10 times that of a bad developer (Reference: The Mythical man month). The top 1% developers in the world don’t just write solid code but have important intangible traits. After working with over 1000 developers, we have been able to identify 7 qualities that set great programmers apart.
1. Positive Attitude
A great programmer cares about your product. They are positive, willing to go the distance to get the job done and bring their best everyday. Although it’s important not to exhaust a developer with frequent urgent deadlines, sometimes this is unavoidable. When you need to bring a product to market or need to ship a certain feature out by the deadline, the great programmer will step up and get the product released whenever possible. Because they care. A great developer doesn’t let their ego get in the way of taking feedback. A good way to instill a positive attitude is to give them interesting projects to work on, give them a sense of ownership and praise them for good work. Startups can give out stock options, pay employees for working overtime, provide compensated paid leave or find other perks that ensure great programmers are retained.
HOW TO TEST THIS SKILL
- How do you deal with conflict? (conflict averse or solution oriented)
- Do you consider yourself lucky? (cocky or humble)
- How was your commute to the interview? (complainer or no worries)
- What kind of people do you not like working with? (do they bring up their boss)
2. Supreme Communication Skills
Good communication skills directly correlate with good development skills. A great developer is able to understand problems clearly, break them down into hypotheses and propose solutions in a coherent manner. They understand concepts quickly, or ask the right questions to understand, and don’t need to have everything written down specification document. Great offshore developers usually speak multiple languages coherently and are very comfortable with documentation in English. In the world of technology, English is the defacto language of most documentation and developer interactions. If they don’t speak it well enough, they’ll require interpreters and translators, making their knowledge second hand, and quickly outdated.
HOW TO TEST THIS SKILL
- Simulate a scrum meeting and see how they interact.
- Give them a problem/scenario and see how they communicate effectively.
- 10 questions to ask
3. Great at Time and Task Management
Great developers are highly reliable. They have a strong work ethic and show up at meetings on time. An important skill is the ability to estimate the amount of time needed to complete a task, communicating this and delivering on it. Exceptional developers are great at managing their clients or leaders instead of you managing them.
HOW TO TEST THIS SKILL
The proof is usually in the pudding. A good way to test any developer on these qualities is to enter a into short-term contract and have an evaluation period where everyone provides feedback about the developer. The key is to recognize strengths and weaknesses of your team early on and evolve the team based on performance. If someone is not delivering, perhaps you need to make the tough decision to drop them from the team and try someone new.
4. Quick Learning Ability
Great developers are usually amazing self-learners. They have the ability to learn new technologies on their own and aren’t intimidated by new technologies. They have the ability to pull disparate bits of information and process information on the fly. Every programmer will experience a situation where he or she doesn’t know the answer. Great programmers will find different resources, talk to the right people and find the solution no matter what. The best skill anyone can have is knowing how to learn, and great developers have mastered the skill of self-learning.
HOW TO TEST THIS SKILL
5. Deep and Broad Technical Experience
Great developers have worked with a handful of technologies long enough to become experts and are competent with many. Of course, finding a programmer who has worked on a product similar to yours or that uses the same technologies important. The right programmer for your project will be able to hit the ground running because they already know the right technologies. They will follow coding standards and will write code that is understandable and commented where necessary and can be passed on to someone else easily. By combining their cognitive abilities and diverse industry experience, they’re able to arrive at optimal solutions quickly. An experienced developer is well versed in best practices like agile development, task management software (Jira, Trello, etc.), version control (If they know Git, it’s a sign they’ve moved on past older systems like SVN), and working in different environments (local development environment, and working knowledge of deploying applications) so ask them about these things.
HOW TO TEST THIS SKILL
- Ask for examples of previous work: Can they showcase previous products they’ve built, send over code samples or screenshots of different enhancements.
- References: Ask for references. Talking to entrepreneurs or CTOs they have worked for will give you an indication of their technical skill and their other intangible qualities.
- Programming challenges: Although most challenges involved with real work do not resemble the programming challenges found on sites like CodeEval, if a developer can succeed at some of the more difficult algorithmic-based problems in a short period of time, you know you are dealing with an intelligent person who knows their computer science.
- Hackathons: Nowadays many companies have started hiring straight out of hackathons. At hackathons you get to see highly talented programmers build software in a matter of hours. It’s a great way to assess programming efficiency, the need to create usable software and how well they work individually as well as in teams.
6. A Good Team Player
Another superb quality of premium developers is their ability to help other developers get better. They offer teammates help when they are stuck, teach new skills to others and write documentation that would help teammates not only in their organization but the developer community in general.
HOW TO TEST THIS SKILL Questions to test collaborative skills
7. High End User Focus
A good programmer does what is asked of them while a great programmer thinks of the end user of the software and works to solve problems for them within the abilities of the organization. A great programmer wants to know the feature they’re building is of high value and pushes back when a feature creates no value for anyone. Sometimes a feature is extremely hard to build or is time consuming. The great developer will understand the need to build it and will motivate the technical team to finding the solution.
OTHER THINGS TO CONSIDER:
Expertise is overrated: As much as expertise is important, it shouldn’t be the single factor you use to hire technical talent. Someone with a quick learning ability, great attitude and emergent leadership skills might be more creative with solutions which is of huge value to the business. Expertise often comes with ego, and we’ll take the right attitude over expertise in many scenarios.
Importance of these qualities differs based on company size: Larger, more mature companies are often looking for a specific skill set because their positions are more static and defined. However, the ability to solve problems, learn new technologies, wear many hats and work in small teams becomes more important in a startup scenario.
HOW CAN SOMEONE BECOME A GREAT DEVELOPER?
Sharpen The Mind: With the accessibility to courses online, you don’t have to go to school to become a great developer. However, a lot of great programmers went to good schools and specialized in computer science. Getting a degree in computer science helps understand architecture better and gives you a holistic perspective on the world of computer programming. Being in sync with the latest in technology helps to stay up to date. Read a lot of articles and blogs on the latest trends on technology, try out new toys during your spare time, follow communities, attend conferences and add value to the community by writing.
Follow Your Heart: Doing things that you’re passionate about will automatically help you improve. The best programmers are curious, love building things and just love the impact technology has on the world. It will help you be more creative and pick up skills across the board.
Gain The experience: While starting off, don’t take a job just because it pays you well. Take a job that will help you gain significant experience in a short period of time. Even its for close to no pay. Build that experience. Try working for a startup. Work for a large company. Work across industries.
Form Your Toolbox: Technology is changing really quickly. New platforms are being built, new languages are being developed and products are being created at an amazing rate. It’s important to stay adaptable and embrace the change. Pick up the latest tools and form your toolbox. A great developer learns the tools early on and then creates things.
Shortage in talent makes it harder to attract great developers. They are in high demand and they want to work on cool projects. If you want to get the crème de la crème working with you, your company needs to have an exciting product and an inviting culture. Many companies are going the traditional route of offering valuable compensation packages (salary + equity + benefits) while others are looking at new outsourcing models where they can hire curated premium talent on demand.
Have a comment? Would love to hear your views in the comment section.
Reference: The Mythical Man Month