Some days ago I did a post that generates a lot of comments, it is called Java Versus .Net Programmers, and it made me think that there are a lot of ideas out of there on “what are the characteristics that makes a good programmer”
Most of the time I hear people claiming that “this is better than that”, “programmers that does not knows concepts A B and C are not good ones”, etc. The problem is that the question remains not answered: “What are the characteristics that make a programmer a good one?”. I think we could eventually speak for decades to search the answer for this question, and maybe after a long time we’ll find that the answer is 42, but we completely forget the question.
This morning I started to think, “if I absolutely need to express one single reason that identify a good programmer, what can I say??”
My first answer was one of the most common “A good programmer is the one who constantly try to improve himself/herself always learning something new”, then I started thinking to the real reason why people write software. Yes, I have fun writing software, but the ultimate goal is creating a program,not having fun during the creation. If you can have fun, still build a great software surely is better, but no one of the user of your software cares about DI, IOC, Pattern etc, the user cares about what program do, if you forget to remember that the user is the real reason for the program you should better read this book.
Surely using DI, IoC, patterns, and whichever superadvanced technique you have learned, you can create flexible products, that are more maintainable, performs better, etc etc, but in the end is the user that really judge if the product is good for him.
So I changed my mind and now my single reason that identify good programmers is “A good programmer is the one that put code in production” it means that good programmers makes programs that works and works for long time. Surely I really think that with DI, IoC, AOP you can create better programs, but the fundamental stuff is to put code in production. Bad programmers do not put a lot of code in production, because if they produce crap software, they will begin to spent so many time in maintenance, that they will not be able to ship anything anymore. Good programmer at other side, makes programs that work, they put them in production and then just leave them away, to return only when the customer needs another release.
Alk.
Tags: Programming





May 9th, 2009 at 4:40 pm
Amen, brother!
Tools like DI, IOC, etc… are only there to allow us, the developers, a better experience. It’s absolutely true that the user could care less about the inner details.
Write your software and get it out!
May 11th, 2009 at 10:44 am
So, by your definition hackers are always bad programmers
May 11th, 2009 at 1:18 pm
Yup. it doesn’t matter to the user how the software is built. But it really matters when it stopped working.
May 11th, 2009 at 7:46 pm
I agree that good programmers often put code into production, but I think many bad programmers do this a lot as well. I’ve used too much buggy, badly-thought-out software to believe that any code I use is the product of good programmers.
Granted, some of those problems may be the product of bad management rather than bad programmers, but I have a hard time believing that it’s all made by good programmers.
May 12th, 2009 at 1:15 am
@Jake. Yes, in my opinion a lot of problems are caused by bad management, but a good programmer quite often can make a not so bad program, even with hostile management.
@Alex LOL, I do not think so, even hacker do write software, probably they have a different concept of “putting it in production”.
Alk.