Software Creation Mystery - http://softwarecreation.org

Top 10 Qualities of The Perfect Programmer

Who are the perfect programmers?

Popular blogger Alex Iskold answers in Top 10 Traits of a Rockstar Software Engineer:

  1. Loves To Code
  2. Gets Things Done
  3. Continuously Refactors Code
  4. Uses Design Patterns
  5. Writes Tests
  6. Leverages Existing Code
  7. Focuses on Usability
  8. Writes Maintainable Code
  9. Can Code in Any Language
  10. Knows Basic Computer Science


It is a solid list, but this list concentrates on the secondary traits, which are just consequences of the deeper set of qualities. And it is an idealistic list. Do you expect the same qualities from a Flash programmer for kids websites and a software engineer for B2B financial transaction services? But how can we recognize a perfect programmer in the crowd of developers?

The Ultimate Criteria for finding The Perfect Programmer: The perfect programmer delivers good software that meets client’s expectations.

Therefore, the shocking truth is that perfect programmers could know only one programming language, don’t have any idea what are design patterns and don’t program all nights in their basements creating the next Google. We cannot objectively measure the programmers perfection like you could measure diameter of your biceps. The perfect programmers are simply perfect if they deliver a quality, usable and maintainable software system [a good system] in time and meet client needs.


Corollaries:


1. A perfect programmer should match a client’s problem or grow to match it within reasonable time. All programmer’s qualities are relative to the client’s problem and context:

  • some problems need creativity, some – detail orientation
  • some problems need mostly technical expertise, some – deep business knowledge
  • some problems need thorough analytical mind, some social skills and intuition

2. A perfect programmer should understand what is “done” and care about quality. Meaning of “Done” for the software system includes more than finishing writing code. A perfect programmer will do all the necessary steps to deliver the system: test, clean code to keep it minimal, effective and readable, make system usable and ensure that client and users like the system.

Top 10 qualities of The Perfect Programmer

Every quality of a perfect programmer has a range depending on the specific problem and context. There is no absolutely perfect programmer for all the problems (at least on this planet). And the perfect programmer for particular problem should have

  1. Intellect- can understand the problem, translate and express ideas in clear and readable code, has analytical and logical mind (range: building programs for narrow well defined requests to conquering freaking complex problems in elegant way)
  2. Personality - has right mixture of personal traits (detail-oriented vs. creative, flexible vs. disciplined, sociable vs. independent)
  3. Expertise - knowledge and experience for solving client’s problems in the specific context with chosen technologies (range: a specialist in one technology to a veteran programmer with broad experience in different domains and platforms)
  4. Motivation - cares about work, shows enthusiasm, interest and love for programming (range: from working for money only to implementing interesting ideas in spare time without pay)
  5. Maturity – knows and uses sound software development principles, practices and approaches as agile, design and architecture patterns, domain-driven design, unit testing, refactoring (range: from an enthusiastic amateur to a black belt guru, who can invent new approaches on the go)
  6. Pragmatism - understands what is possible, loves simplicity and avoids over-engineering; understands business goals, keeps touch with reality and focus on what should be done (range: from a spontaneous artist to a self-driven pragmatic achiever)
  7. Cooperation - listens, accepts that other people could have better ideas, supports team goals without hidden agenda, shares ideas and knowledge and coach others (range: from idea challenger to a team coach)
  8. Communication - effectively communicates and exchanges ideas, supports knowledge and decisions about the system with clear explanations, justifications and answers (range: from a quiet introvert to a system evangelist)
  9. Potential - has professional goals, good learning skills, curiosity, adaptability and performs constant self correction (range: from person who reached his limits to the future programming star)
  10. Vision - sees the big picture, understands context, trends and people, aligns actions with team and company implicit goals, contributes into building shared vision for the software system (range: from interested in programming only to entrepreneurial visionary)

How to find perfect programmers for the specific problem?

Certainly, it is better to find the programmers with the best qualities. But these geeks are expensive, often unavailable or will be bored with your problem.

Therefore,

  1. Understand the problem before hiring. Assess the required level for each quality. Prepare questions and even tests.
  2. Build a perfect team with not necessary perfect programmers. Just ensure that a sum of qualities of team members matches required levels. Probably only cooperation is very important quality for every team member.
  3. Create environment that enables most effective use and growth of these top qualities. Use right leadership style. Make programmers happy.


People with good core qualities will pick up the best approaches including writing unit tests and refactoring; learn design patterns and what is most important – deliver great and useful software.

Perfect programmers are not born, they just work on the right for them problems.

AddThis Social Bookmark Button AddThis Feed Button


Comments

The list is great, but if i where to add 1 more i would suggest to have a
programmer that has PASSION to his work. A programmer with this quality will definitely be productive.

Comment by programmer | April 24, 2008 4:51 am

Yes, the concept of “Done” is critical. There is no perfect programmer. I don’t think the programmer has to be a genius. The key is to follow a methodology and work as a team. Individually you can create crap, but as a team following a methodology (preferably Scrum) you can come up with something that does the trick.

Raza Imam
http://SoftwareSweatshop.com

Comment by SoftwareSweatshop | April 24, 2008 2:33 pm

Good post, the only thing I would say is: Socialable and over communicating can be a bad thing.
We don’t need 100 meetings on how to display “hello world”.

Comment by signal9 | April 25, 2008 7:48 am

Thank you! nicely written.

Comment by Henry | April 25, 2008 8:55 am

What a load of crap!

Comment by Ken | April 25, 2008 11:02 am

Ken,

I respect your opinion, but can you provide a little bit more information why it is a load of crap? Maybe I can find better arguments for you :)

Thanks,
Andriy

Comment by Andriy Solovey | April 25, 2008 1:38 pm

To me, the “perfect” programmer is one who gets the job done. Simple as that.

Comment by Dennis Martinez | April 25, 2008 9:56 pm

[…] Software Creation Mystery » Top 10 Qualities of The Perfect Programmer (tags: programming) […]

Pingback by uglychart.com: a blog about stocks » Blog Archive » links for 2008-04-27 | April 27, 2008 12:34 am

[…] …fehlt dort noch: Das ist doch mal was, die Top-10-Programmiertugenden: Zitat von softwarecreation.org: […]

Pingback by Will Code for Food » Code Candies | April 28, 2008 4:05 am

What do you mean about “get the job done” bullshit. Dude, when you are working on a multidisciplinary team this becomes relative.
I think that a perfect programmer is the one that adds real value to the succesful projects that he is involved. And for a succesful project I refer for the ones that accomplished the goals of time, quality and cost.

Comment by Omar | April 29, 2008 6:34 pm

I think the only one missing is:

Efficient – Someone who can solve any problem, large or small with just the right amount of effort. They should understand when the optimum solution is required versus just getting something out the door. The main goal is that they work solidly and achieve a full 8 hours of work during their day.

From my experience, having a good manager above a perfect programmer is required for that person to reach their peak.

Comment by Doolwind | May 7, 2008 6:24 am

hi… nice post. that’s exactly the traits and the very good qualification of a good programmer. if you wanted to hire a programmer in your company, just find that qualifications. have a nice day!

Comment by it solution provider | May 14, 2008 7:57 pm

hello that was awesome.i have a question that is I’m programmer but i just love the result of programming .coding doesn’t Interest me because I’m careless in math & Algorithm functions, how can i solve my concentration problem?
is only trying more enough?
or i should abandon programming?
please rospond if you have a good opinion
thanks

Comment by developer | June 23, 2010 4:33 am

This blog have little value without you and your comments, thoughts and discussions. Please, leave your comments. You are welcome to debate and criticize any idea, but, please, don't attack other people. Thanks for your contribution!

XHTML: You can use these tags: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Subscribe without commenting

Software Creation Mystery - http://softwarecreation.org
This work is licensed under a Creative Commons Attribution-Noncommercial-Share Alike 3.0 License .