Virtues of a Great Programmer

1 – Laziness

Believe it or not this virtue is really important, its true good programmers are often lazy people. The quality that makes you go to great effort to reduce overall energy expenditure. It makes you write efficient, labor-saving programs that other people will find useful and document what you wrote so you don’t have to answer so many questions about it.

2 – Hubris

The quality that makes you write (and maintain) programs that other people won’t want to say bad things about.

3 – Patience/Tenacity

It’s necessary, in order to not lose oneself in front of a program that insists not to work,or stress under nearing deadline. Being cool under pressure.

It may not seem like it to the outsider, but programming can be an extremely stressful profession. When deadlines are tight and nothing seems to be working, it’s easy to freeze up. The ideal programming candidate will be able to handle even the most stressful situations calmly and, most importantly, be able to continue working.

Sample interview question: Describe a time when you were under extreme pressure and your application wasn’t working. What did you do?


It’s needed, during a “bug hunt”, for not giving up until the bug has been flushed off. It’s clearly related to Patience.

4 – Problem solving/Logic

It’s highly needful, so that one writes functioning programs. Analytical thinking, problem solving skills. Abstraction, ability to separate big task in smaller steps.

5 – Consistency

Highly requested in order to never fall into contradictions when writing a code. It helps in having to appeal as little as possible to Patience and Tenacity.

6 – Foresight/Planning

Software/system architecture skills

Always look few steps in future, it’s summed up into the motto: “the good programmer has to think about all the possibilities”.

7 – Imagination

Used to find the best solution in every situation, and also to realize that there is always a clever/cleverer solution to any problem.

8 – Perfection

Now matter how serious or big project is, from writing website for small buisness to writing asm routines for spaceships or satelits. It’s mandatory to always seek for perfection, or, at least, the optimisation of the program; it’s what allows you to write codes that will do twice the things in half the time, compared to those codes written by those who don’t possess pedantry. Typically, this is one of the last skills you get.

9 – Readability/aesthetic

Most of time you wont work alone on project. So its really important to write clean, beautiful, readable code that is understandable and can be modified without any effort,and of course without introducing new errors.

10 – Empathy

Maybe not today, maybe not tomorrow, maybe not five years from now; but the odds are good that someone in the future (maybe even yourself) is going to have to look at your code, figure out what it does, and make changes. Keep that future programmer in mind as you write your code and give him the information he needs to get his work done with as little friction as possible.The quality that makes you document your code, and leave helpful comments and commit messages, so that others don’t have to puzzle out what you’ve done. It makes you take the time to help coworkers understand things, and change your code to take their needs into consideration.

11 – Mindfulness

Every line of code you write (or, for that matter, don’t write) is a decision that affects you and everyone else who will use your software. Never make those decisions lightly, and always keep the user experience in mind. Mindful code can sometimes be hard to write, but it is always a joy to use.

12 – People skills

Awasome people skills,Good communication skills directly correlate with good development skills. A great developer 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 understand, and don’t need to have everything written down specification document. Great offshore 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. If they don’t speak it well enough, they’ll require interpreters and translators, making their knowledge second hand, and quickly outdated.

13 – Quick learning

Never stop learning, constanltly adapt to new technologies and practices.

Quick learning and adapting. Practise a lot, practise smart and devote lot of time to it.

Abiltliy to learn from mistakes, not just yours but other peoples.

Researching,ability to read documentation/manuals and to quickly find stuff you need.

Great developers are usually amazing self-learners. They have the ability to learn new technologies on their own and aren’t intimidated by new technologies. They have the ability to pull disparate bits of information and process information 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 developers have mastered the skill of self-learning.

14 -Time/task management

Great developers are 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, communicating this and delivering on it. Exceptional developers are great at managing their clients or leaders instead of you managing them.

15 -Passion and loving what you do

Additional skills:




Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Google+ photo

You are commenting using your Google+ account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )


Connecting to %s