I've read some great articles recently about what makes a good/great programmer. I agree with a lot of it and disagree with some of it. Viewing comments that are posted on these articles, I can see that there is quite a bit of disagreement from others too. Being in the Software Development industry myself for many years, I also have my own strong opinions about what makes a great programmer. Most of the things I disagree with are things that are fairly insignificant. Whether a person uses Hungarian Notation or not is an example of something that is just a matter of preference and overall it's not critical. Here is a brief list of the skills that I think most "good" programmers have: 1) Passion Most lists of desirable traits have this as the number one item and I couldn't agree more. A strong passion for one's work will make up for many shortcomings. It will drive a person to do their best work and the pride will be noticeable in the end product. 2) Strong Desire To Learn In a competitive industry, passion combined with a desire for constant learning is a necessity for any kind of success. No one knows everything and things change quickly, so what a person knew two years ago is almost irrelevant today. 3) Good Problem Solving Skills A good developer will not be afraid to tackle difficult challenges. Much like an elite skier is not afraid to conquer the 'scariest' slopes, a good software developer thrives on a challenge. They rise to the occasion to master problems that at first glance seem unsolvable. Tackling these types of problems leads to growth and maturity in the profession. Thinking "outside-the-box" (to use a greatly overused phrase) is a definite necessity. 4) Adaptability As stated above, the software industry is constantly changing. Someone that is unwilling to change will quickly be devoured by the sea of change and will drown. They will wonder why they were so successful two years ago and today cannot even understad the new technologies tha have been introduced. Platforms, hardware, software, culture and paradigms are constantly changing and a professional must be able to cope. It's clear that my list has no "semantic-type" items. Semantics are just that - semantics. Whether a person puts curly braces on one-line or another is inconsequential in the grand scheme of things. Which language a person chooses is also not as important (in my opinion) as the 4 key ingredients listed above. I believe that the traits listed above will make up for many shortcomings and will greatly increase a person's chance of becoming a successful Software Developer. Submitted 1/21/2008 12:19:28 AMComment (0)