It really scares me how few good programmers actually exist in this world. I only bump into them professionally and even then, not as often as I’d like. If, for example, I meet someone at a party and he says he codes I’ll put a bet on he or she lacking a huge range of skills.
The sad thing is, I’m not perfect either. I understand stacks, and linked lists, and bitwise operations, and all the different logical operations. I find loosely typed languages annoying and scary – I hate orphaned variables, do-nothing functions, and the spaghetti that seems to make up so many modern systems. But I’m easily confused by OOP, understanding only the basics and not really having a full grasp of things like polymorphism. My excuse being that I’m a database and procedural languages expert instead. But the modern world seems to demand skills in a range of languages, and the slightly obscure stuff of my past (PL/I, Adabas Natural, PeopleCode, SQR and Application Engine leap to mind) aren’t relevant in this WEB2.0 world.
Now, I’m getting to the point of this post… I found a great post by an Indian blogger titled How To Become a Good Programmer and it’s an excellent summary of the knowledge required to be a quality developer. Some isn’t strictly a must-have – I’ve known astonishing developers who wouldn’t make half his list… but I think as a broad guide it’s spot on.