If you’re like me, I’m sure you’ve had someone do some construction work on your house or maybe you just hired a painter. Well, there’s that painter who gets paint all over everything as they don’t put down drop cloths. And there is the painter who leaves drips on the wall or misses spots. The whole time the painter is painting your house he tells you how his real passion is to be a writer. Painting is just how he pays the bills. And guess what, it shows!
After you give that painter his walking papers, you find that rare painter craftsman. He believes his destiny was to be a painter. He loves the craft and is always working to perfect it. He doesn’t accept payment unless his customer is completely satisfied with his work. Every morning before he starts painting, he meditates or prayers for a higher power to work through him. He is humble with his gifts and generous with his time and talent.
Programmers are as varied as they come. Some love to jump headfirst into coding on a new project while others like to plan out every move before writing a line of code. From working with many programmers over the years, I’ve gleaned some common traits to highly effective programmers.
Highly Effective Programmers …
- They code for love, not money, fame or power. The only reason they live is to code and share their gifts. They are pushed to code via a deep force or power, a muse. They discovered a need or problem to be solved, found a challenge, or have something to say through their code and its impact. They take great pride in their code and are compelled to make their code both beautiful and powerful as well as leave a mark on the world.
- They code without abandon. They know they are gifted and must use their time on Earth wisely. They don’t waste time debating about computer languages or software processes. They code ’til it hurts.
- They take requirements gathering seriously but aren’t anal about it either. Too many programmers jump head first into coding. They get virtually half done and then realize there design is untenable for scaling up, or has left the project overly complex or difficult to maintain. Worst yet, they render their code a resource hog perhaps with many bugs, too. On the flip side, programmers can get into analysis paralysis and never hardly get off the ground. Or take two years for a project that should have only taken 6 months. I think we’ve all see too many times projects like the latter. Highly effective programmers need to find a balance. Do a sound job of gathering requirements but then get coding and create their genius for the world.
- They put their name and reputation behind their code. They sign all of their code files in the same way an artist would sign a painting. They do this by typing their name (and cell phone number) and other comments in the header of each source file they make. They remain accountable to the program even if they no longer are on the project or even at the company. If someone has a question two years later, they are more than available to field it. They know their reputation demands it and that it’s the right thing to do.
- They test their code with passion. They review their code and spend about a third of their time on the project testing the code. They test at the unit level, mid-level, and systems level. They test against the requirements and when time permits, ensure test automation exists, such as automated unit testing.
- They continue to sharpen the saw and master the craft. They see learning and teaching (and even research) as one of the highest virtues and spend much time reading and learning about the craft.
- They’re humble and a servant to others. They know that they are pre-destined for greatness. They also know that although they possess the gift to code, they know they are not entitled to the fruits of their labor and instead give back to the community. That is, they open-source all their code they reasonably can. Although they don’t take a vow of poverty, they believe that the fruits of their art will benefit the world and ultimately later be reflected back to them as well.