Table of contents
No headings in the article.
When we refer to someone as "the best programmer I know," what do we mean? To shed light on this, let's start with the assumption that the speaker considers themselves a decent programmer. Here are some characteristics that might make someone the "best" programmer in their eyes:
1. A Unique Perspective: The best programmers possess a unique ability to see beyond the surface. "He sees what is there. I see what I am conditioned to see. Once he points it out, it was obvious all along." This fresh perspective allows them to identify solutions that might elude others.
2. Pragmatic Problem Solving: Instead of getting lost in the complexities of generalized solutions, the best programmers focus on "solving the problem at hand, not a fancy generalized version of it." Their approach is practical and results-oriented.
3. Clarity in Code: Simplicity is a hallmark of their code. They "write simple, obvious code that is easy to change later." This commitment to clarity ensures that their work remains accessible and adaptable over time.
4. Humility and Perseverance: Great programmers acknowledge their limitations. "He knows he doesn’t know, but tries anyway. He then iterates on his attempts until he gets there. This requires humility and perseverance." They embrace the learning process and aren't deterred by challenges.
5. Tool Mastery: These programmers are tool-agnostic, choosing the right tool for the job, even if it's unfamiliar. They believe that "the investment in learning the tool is worth it to solve the problem the right way." This mindset leads to innovative and efficient solutions.
6. Deliberate Decision-Making: When to hack and when to invest in quality is a crucial choice. "He knows when to hack and when to invest in quality and makes these choices deliberately." Their hacks are still written in a way that allows easy stabilization later.
7. Knowledge Sharing: The best programmers are generous with their knowledge and "take genuine delight in seeing people learn." They understand that knowledge is more valuable when shared, and they encourage learning in others.
8. Versatility: They don't limit themselves to software. "He doesn't constrain himself to software. He looks at the whole situation and will happily refactor a process, make physical hardware, build a supporting app, challenge the premise of the problem, whatever it takes." This adaptability broadens their problem-solving toolkit.
9. Networking: Staying informed is vital. These programmers actively engage in various networks of individuals and groups that challenge and advise each other. This continuous learning approach keeps them at the forefront of their field.
10. Giving Back: Being a net contributor is more than sharing information. "He is a net contributor to any group he is a member of. Not just through information, but through encouragement and support." Their positive impact extends beyond knowledge.
11. The Ability to Just Start: Procrastination has no place in their work. "He can Just Start. He just goes from stoplight to stoplight until he is done." They understand that action, not hesitation, drives progress.
12. Hard Work: The best programmers work relentlessly. "He works hard at this. There is no 'innate programming gift.'" Mastery is the result of consistent effort.
13. Adaptability: They don't adhere to a single method or methodology. "He doesn’t follow any single method or methodology, but he learns about them in case they may be useful, and so he has context when other people talk about them." Their flexibility allows them to choose the best approach for each situation.
14. Diverse Learning: Learning is a lifelong endeavor. "He learns languages, tools, libraries, programming styles." This diverse learning enriches their perspectives and problem-solving capabilities.
15. Work-Life Balance: Quality programmers maintain a balance. "He has interests outside of programming, including physical activities like acrobatics, and takes his family life seriously." Their example encourages others to maintain a healthy work-life equilibrium.
16. Respect for Others: While they have amazing attention to detail, they "don't take themselves too seriously." This blend of precision and humility creates a productive and enjoyable work environment.
17. Versatility in Design: Their design skills extend beyond just software. "He is as comfortable designing (awesome) web pages as he is designing (awesome) backend infrastructure and (awesome) distributed architectures." This comprehensive knowledge streamlines development.
18. User-Centric Approach: Listening is integral to their process. "He watches how people use his software, figures out what frustrates them, simplifies it, and eliminates their frustration." They prioritize user feedback over assumptions.
19. Domain Understanding: The best programmers invest time in understanding the business domain they work in. "He studies the business domain he is working in, and its inhabitants, so he can express domain concepts clearly in code and connect them to solve meaningful problems."
Note: These characteristics are not gender-specific; they are qualities that many programmers, regardless of gender, can possess.