Great programmers are rare. Their productivity is 3 times that of an average developer and 10 times that of a bad developer*. The top 1% of developers in the world don’t just write solid code but have important intangible traits. After working with thousands of developers, we have been able to identify 7 qualities that set a great programmer apart from the crowd.
“The best programmers are up to 28 times better than the worst programmers” – Robert. L. Glass
1. Positive Attitude
A great programmer cares about your product’s success. They are positive, willing to go the distance to get the job done and bring their best every day. Although it’s important not to exhaust a developer with frequent urgent deadlines, crunch time is sometimes unavoidable. When you need to bring a product to market or need to ship a certain feature out for a 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 constructive criticism. 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
Interview sample questions: 6 sample questions and 4 vital interview Q’s.
Other questions:
- Tell me about someone you found it difficult to work with in the past.
- Give an example of an instance where you had a hard time meeting a major deadline.
- What was your favorite thing about working at your last job?
2. Supreme Communication Skills
Good communication skills directly correlate with good development skills. A great programmer 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 help make them clear, and don’t need to have everything written down in a specifications 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.
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.
- Ask them to give a time estimate for how long it would take to build something, and see what questions they ask about it to form their estimate.
- Additional questions to ask
3. Good Time and Task Management
A great programmer is 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 the 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. Here at Scalable Path, we offer trial periods for new engagements and make a habit of checking in with our clients to ensure that things are running smoothly.
4. Quick Learning Ability
Great programmers are usually amazing self-learners. They have the ability to teach themselves new languages and technologies quickly and often do so out of personal interest outside of work. They have the ability to process information and make connections 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 programmers have mastered the skill of self-learning.
HOW TO TEST THIS SKILL
- Tell me about something you recently learned about or taught yourself to do.
- If you wanted to teach yourself a new programming language, how would you go about doing it?
- What concept in your “space” do you find difficult to understand, and how have you tried to overcome that difficulty?
- “Guesstimate” questions, such as “How many daily active users could you potentially get for a dating app targeting college students?”
- Amazon’s “Learn and be curious” interview questions
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 others. Of course, finding a programmer who has worked on a product similar to yours or that uses the same technologies is beneficial. Successful programmers will follow coding standards and will write code that is understandable and commented so that it can easily be passed on to someone else. 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 and task management software such as Jira and Trello. They also have mastered version control, different development environments, and the process of deploy applications – so ask questions along these lines.
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? Also, ask if they have a portfolio website and GitHub profile that they can share.
- Technical interview: Consider conducting a whiteboard, take-home, or interactive coding challenge. Here at Scalable Path, we do this for you. We like to administer a 1-hour interactive coding task that tests real-world skills using relevant technologies rather than academic knowledge. If a candidate is applying to be a full-stack developer, it makes sense to see if they can make a simple app with a frontend that communicates with some REST endpoints, instead of asking them to implement quicksort on a whiteboard.
- Programming challenges: Although most challenges involved with real work do not resemble the programming challenges found on sites like LeetCode, 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.
- 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.
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. They also should be able to navigate the interpersonal nuances of working in a diverse team and be able to navigate conflict gracefully should it arise.
HOW TO TEST THIS SKILL
- See if the candidate has formal or informal experience mentoring other developers.
- Ask if they prefer working on a team or independently.
- When following up with references, inquire about whether the candidate was well-liked by their teammates, or if they could sometimes be challenging to work with.
- Ask questions to test collaborative skills
7. Big-Picture Focus
A great programmer doesn’t simply complete tasks that are assigned to them, but rather they take into account the broader impact on the system and user experience as a whole. They want to know the feature they’re building is of high value and they are willing to speak up when a change request may compromise some other aspect or use-case of the software.
HOW TO TEST THIS SKILL
- Ask questions about responsive design, accessibility, localization, and other areas often overlooked by developers trying to move too quickly.
- See if there was a time the candidate disagreed with their project manager over a feature request due to potentially negative side effects.
- Consider asking questions about UX design, even if you aren’t hiring for a design-centric role.
OTHER THINGS TO CONSIDER
Expertise can be overrated: As much as expertise is important, it shouldn’t be the single factor you use to hire technical talent. Someone with quick learning ability, a great attitude, and emergent leadership skills might be more creative with solutions, which can be of huge value to an organization. As tech stacks become more complex and specialized, it’s important to keep in mind that a programmer with a proven track record will be able to translate their skills over to something they haven’t used before.
If you’re hiring remote: Communication ability and team fit become even more important. Even though modern collaboration tools have facilitated the rise of remote-first organizations, daily check-ins and the quick chats that happen organically in an office environment can be lost. We’ve written a guide on how to interview remote candidates, in particular, to ensure a proper match when hiring for a remote position.
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. Always keep in mind context, and what it is that your organization really needs today.
HOW CAN SOMEONE BECOME A GREAT PROGRAMMER?
We happen to run a Quora space with content that focuses on how to be a great programmer which has just over 100,000 subscribers at the time this post was last updated. We also curate content at How to Build an App which is focused on entrepreneurs looking to create software. Engaging with the community is key for those striving to become a great developer or creator. For those facing a technical interview, we also wrote a blog post on the subject to help candidates prepare. In addition to those resources, here are some other tips:
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 in 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, enjoy 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 just take a job just because it pays well. Take a job that will help you gain significant experience in a short period of time. Build on that experience. Try working for a startup. Work for a large company. Work across industries. Find your passion and niche.
Form Your Toolbox: Technology is changing rapidly. 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 to help propel your career forward.
CONCLUSION
Shortage in talent makes it harder to attract a great programmer to the role you are hiring for. 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? We would love to hear your views in the comment section.
*Reference: The Mythical Man Month
Editor’s note: This article was originally published on September 3rd, 2015, and was updated on June 11, 2020.