I am half-way with the book, Coders at Work, by Peter Seibel. I read Jamie Zawinski, Brad Fitzpatrick, Douglas Crockford, Brendan Eich, Joshua Bloch, Joe Armstrong, Simon Peyton Jones, and Peter Norvig. I still have 7 more programmers to go.
Yeah, I know, you might say, what a tech dodo is doing on a Coders at Work book? When they start talking about these programming languages, their differences and such, I definitely get a nosebleed. But I get interested when they talk about how they started program, how they get to learn it, their funny stories about their projects, and the juicy parts.Their passion for programming is just really amazing!
From the 8 programmers that I read already, they usually come up common set of characteristics when they were asked what makes a good programmer, or what a programmer should have to be a good one. These are:
* Readable code — I am not sure what does it mean in the programming context but I guess what they mean is that it is easier for your and for programmers to fix a bug or connect to your program if you write it articulately. The programmers most of the time related coding is like writing where one should know the proper places of commas, syntax. One should write a program with a good flow of story.
And, I guess readable code is important for the reason that ‘no man is an island.’ Another programmer might need to use, and it is important that you make it easy for others to understand it.
* A good programmer can write functional mini programs then paste them all together to complete one whole application or program. The thought behind this is that it is easy to spot a bug if your code can be broken into small pieces. It is easier to check one by one the mini programs than going back and forth a one big whole program. Plus when one mini program gets boinkers, the other parts can still run on their own avoiding for the whole program to crash.
* Side projects — When asked what is one of their criteria when choosing a good programmer. I think almost 8 of them answered that they would always ask the person what projects they got involved in the past — either for work or fun. Because this will somehow show how enthusiastic a person is at programming. The side projects a person got involved with is an indication how one is passionate at programming.
* Ability to grasp and hold the whole program in your head — All of them, one time in the interview, have mentioned that they have the ability to have a mental picture of the whole program in their head. This is important because they would know what this change or new entry they put on the other side of the program will affect the other part or the whole program. Or, they can easily identify which part of the program is broken when they see a particular symptom of problem.
For those times I got to work with programmers, I am always amazed with this particular talent in them. I remember working as a bug tester, I would know that one is a great programmer if when I reported a bug, he or she could easily point out which part of the program went wrong. They always just gave me this absent-minded look, and then after a few seconds would then shoot back to me some answers as to where the bug might be.
This reminds me why I backed out of my first choice as college degree in UP Cebu. I was n 3rd or 4th year when internet was somehow available for users here in Cebu. Naturally, I got hooked to it and thought I should put BS Computer Science as my 1st choice in my UPCAT form. But then I never was good at programming in my 4th year. I just copy and paste a classmate’s ‘video rental’ program for our final project, and just change the names and colors. That was a clipper program we had back then. Simply, I did and do not have the talent of being able to form the whole program in my head.
* The language a programmer is good at does not matter. If a programmer is good in JAVA, then he is mostly will be good at other programs. And, it is mostly how a programmer implements and use a language that makes him good, and never the language. So it is a wrong idea that students or people would study what language is ‘in demand’ in the industry. Well of course, it might mean their probability of being hired is high, but then it is mostly the same thing to a person who is very good at another language. It is like a good story teller in English is most likely to be a good story teller in whatever language.
These are the common theme that get repeatedly mention by the 8 programmers I had read. Just to add a side bit, not one of them talk about gadgets or what kind of computer they use — Mac, PC, or junk. They talk about debugger application they used, but not one of them talk that this computer gadget can make you a better programmer. So please, it is not necessary to have the highest end computer to be a programmer. It is all about talent.