Good vs Great Programmers: 7 Qualities That Make the Difference
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
Table Of Contents
1. A 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, a 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 a Positive Attitude
During an interview, you can test a developer’s positive attitude by asking behavioral questions that prompt them to describe challenging situations they’ve faced and how they maintained a positive outlook. You can also present hypothetical scenarios to gauge their reaction and observe if they approach challenges with optimism and resilience.
Additional sample 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?”
For more, see 13 sample questions and 4 vital interview questions.
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 remote 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 Communication Skills
- 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.
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, communicate this, and deliver 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 into a 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 a Developer’s Learning Ability
To test a developer’s learning ability, you can assess their aptitude for quickly grasping new concepts, their ability to apply learned knowledge to practical scenarios, and their eagerness to seek out and learn new technologies or programming languages independently. Additionally, evaluating their problem-solving skills and their willingness to take on challenging projects can provide insights into their learning agility and adaptability.
Additional sample questions:
- “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?”
- “How many daily active users could you potentially get for a dating app targeting college students?”
For more, see 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 on 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 deploying applications, so ask questions along these lines.
How to Test Technical Experience
- Ask for examples of previous work: Can they showcase previous products they’ve built, and send over code samples or screenshots of different enhancements? Also, ask if they have a portfolio website and GitHub profile that they can share.
- Conduct a 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.
- Give a programming challenge: 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.
- Source talent from hackathons: Nowadays many companies have started hiring straight out of hackathons. You get to see highly talented programmers build software in a matter of hours at hackathons. 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.
- 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
To evaluate if a candidate is a team player, consider their mentoring experience, work preference, and insights from references. Assess their mentoring involvement, work style, and references for a well-rounded understanding of their collaborative aptitude.
For more sample questions, see LinkedIn’s article on how 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 a Developer’s Big-Picture Focus
- 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 through staff augmentation services: Communication 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.
The 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?
Becoming a great programmer requires intellectual curiosity, continuous growth, and practical experience. Great programmers have a passion for innovation, seek diverse experiences, and build a versatile toolbox of skills. With this foundation, developers can continuously improve and enhance their programming abilities. Here are some ways developers can further improve and excel in their craft.
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.
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.
Understanding the common traits shared by the best developers is crucial for organizations seeking to attract and hire top talent. By recognizing and fostering qualities such as technical expertise, problem-solving abilities, collaboration skills, adaptability, and a continuous learning mindset, organizations can build a dynamic and high-performing development team. These exceptional developers bring innovation, efficiency, and a drive for excellence to their work, making them valuable assets in the competitive landscape of software development. By prioritizing these qualities in the hiring process and investing in the growth and development of their developers, organizations can create an environment that attracts and retains the finest talent, setting the stage for long-term success in hiring developers and achieving organizational goals.