Considering the topic: I think that an excellent programmer must be hardworking and analytical.
Hardworking is must for anything. :)
programming - 75% skill and perseverance; 25% BS.
How did you define those numbers. ;)
Yes!!! I feel its the skills and the efficiency of a person using it makes him a good programmer.
I believe a good program makes a computer look human
Effectivess and Attitude for me. As a java programmer i believe that a good criteria is not how deep the knowledge they have in Java or the Experience they have but how do they perform in System Development. Is how meet the deadline with almost no detectable errors.
And another one is attitude, there some programmer (im speaking in General) that are so uncooperative and bossy who threat themselves as a superstars and wants everyone to pamper them just because they graduated in some classy schools or got those cool positions. Yes i would follow his lead but he wont earn my respect. For me being humble, approachable and reliable is another way of determining a Good Programmer, because most of the time we are working as a team and we wouldnt want to waste time arguing it is much better to work in harmony. ^_^
Thats only my Opinion.
Patience, concentration and coffee.
Wenbo Mao suggests Masterworks of Modern Cryptographic Practice are only achievable with countermeasures such as clearly positioned explainations from The Dark Reverend Revelations. Please, new guy, explain your responses in a manner clearly adderessing the question originally posted ~ we do not have time nor interest in shriveled attacks on half-rails.
My point of view is that the person becomes good programmer during his working experience. Programmer should work on his skills all the time.
I think the good programmer is the one who is very persistent and emphatically searching the solution for the unsolved problems. But also the good programmer should at least try to find the most optimal solution for his problem.
And one more thing from my side is that if you've looked through the code which you've written e.g. 6 months ago, and you've found better solution for the current way, that's mean that you've grown to another level during this time.
I was thinking about what darkstar said and how it all works to the favor of some remarkably under-achieving standards. You can do something like Randomizer.getSomeBytes(); and tell the average terminal user ( pun intended ) that these are strong password tools, which could be used to attain a zero ROI minimum floor on assets, and nitwit will not use them.
You can take that same person, tell them these are lotto nuimbers, which has an ROI of ( -0.50 ), and they will remeber them for the rest of their life,.....'
Duh, TheDarkReverend wins first round before even got here. Maybe with him I could go with the zeros, that would at least be up-hill in a down-hill world. If you really want to prove his point, examine kernel entry points for popular consumer-grade software and get some real laughs..........big timel!
For me, all I gain by looking at previous code is fast-fixes for todays challenges, taken on wholesale with few changes. It is a long, tedious drag trying to get to some useable code - but once I get something working it is not a change adjuvant. It is rather slap-and-paste coding that I can use in a modular fashion while I put the new challenge to code test.
Like most things in life, to be good at anything, you have to feel a passion for what you're doing. The same goes for programming. I'm not saying that passion alone makes a good programmer... you need other qualities like dedication, responsibility, respect, etc,. But passion is one of the important aspects of programming. Feeling the challenge of doing a programming task, even if you don't know how to tackle it, but are sure you will prevail, is so satisfying.
A good example of programming passion are the people who help other people on this forum with their programming problems and questions.
A programmer without passion, is like a ball without air.