Becoming a professional programmer/developer

I was discussing with a good friend the open java initiative by Sun, he has some good points; things that can go bad for the community because of this move by Sun.

I want to concentrate in one of the points he listed that triggered an exception in my head.

He said and I paraphrase “What is going to happen to the developer/programmer that has invested all it’s time, energy and money into completely mastering and becoming the ultimate guru, when that language stops being relevant?”

My response is: He got what he deserved! I could see the rage in his eyes, but the truth is that there is a universally known fact to all of us old programmers:

You use the language that fits the problem.”

You don’t force the problem into a language, or a domain just for the hell of it. That means you need to know several languages, in fact, by learning different languages you become a better programmer, and you start realizing that languages are tools! the important part is not the language, it’s you! Yes, you, damn it! the language can’t think for you, but some languages do make some difficult problems trivial to solve –though that doesn’t necessarily means it’s the right language. You need to know different languages, to be able to determine and use the strengths of a language to solve the problem at hand. To quote Fred Brooks There are no silver bullets” the sooner we realize this the further we can go. As programmers/developers we need to understand to become a professional programmer, we need to think like one, and that means leaving passions, and favoritism aside, and use the right tool for the problem at hand, what ever that tool may be.

To be a professional programmer you need to be comfortable with all the different types of programming (at least be able to understand the basics of each) specialization is a very big buzz this days, but to me it’s not sustainable, it works well for some professions: Medical Doctors, and lawyers, but it does not hold for us. The basic reason is that programming is programming (does not matter the paradigm or the language, the process is more or less the same), heart surgery, cosmetic surgery, and neurosurgery share common grounds, but they tackle very different problems and scenarios , so it makes sense to have specialization, but programming paradigms are not that different one from each other, they are just different ways of framing a set of problems that are not efficiently handled by the other paradigms.

I hear you asking: “What about AI? What about embedded programing?” It’s still programming. You may say: “Surgery is surgery”. You are right. But the domain is totally different. The head and neck of a human being, is very different from the heart; but the deal breaker is the way each is taught in medical school and the fact you specialize in one area or another. This trend of specialization is now making it’s appearance in Computer Science, but not on the field of programming.

There has already been several articles and blogs on the difference of a programmer and a developer and which is higher in the food chain; I personally don’t care, and I’m old enough to know it doesn’t mean shit. But I will tell you this, you need to be able to adapt if you want to make a living as a professional programmer.

To finish this rant with some advice, please read The Pragmatic Programmer, this book will help, if you follow it’s principles .


About this entry