Sunday, July 11, 2010

Top 10 Qualities of a 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. 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)

No comments: