With all the latest attention again on what does and doesn’t make a good programmer, I couldn’t help but put together my own top 10 list.

1. Being a great problem solver.
2. Being driven and lazy at the same time.
3. Ability to understand other people’s code
4. Having a passion for programming
5. Loving learning for the sake of learning
6. Being good at math
7. Having good communications skills
8. Strong debating skills
9. Extreme optimism
10. Extreme pessimism

After putting together this list some aspects surprised me, and I was the one who put together the list. So let me explain each in detail.These attributes describe those I’ve found in pretty much every great programmer I’ve come across. There were a number that fell through the cracks and I’ll explain those later.