The Myth of the Specialized Programmer
Ever heard of it? Apparently there is this mystical creature who is a master of his trade, knows all the tricks in the book and is generally just untouchable. He is the only one that can really solve the programming issues or even come up with any form of useful code in this particular programming language. Hmm... so if I learned to program Java that automatically disqualifies me from successfully programming in C? Or PHP? Or Visual Basic?
Semantics and Syntactics
I've asked myself a lot of times: “Why is that?” Last I checked all programming languages are based on the same more or less simple principles. No matter if you're looking at procedural programming or object oriented design (a nice blog topic as well). Even in shell, web or any other form of scripting it's the same basics. We have our conditionals, if-then-else and switch-case. There are loops like for-then, for-each, do-while, while-do. Let's not forget function calls and return statements. Variables and constants. Data types and key words. All in all it's straight forward stuff. What changes from language to language are semantics and syntactics. And of course the available support libraries.
Now suddenly we wonder what makes that specialized programmer so special then? Well, there is one thing that the specialized programmer is better at than the noobie: speed. Since he's worked with the language for soooo long he knows exactly what libraries to use when, doesn't have to think about syntax and semantics for more than a split second and is familiar with the 'special features' of his programming language of choice. But really what it comes down to is that anybody else who can program can program in any other language as well. Well, given access to sufficient documentation (e.g. google) that is.
Programming Outside Your Comfort Zone
So but why is everybody looking for these master programmers all the time? I personally think the answer lies in the last statement, "anybody who can program." The issue really is that there are too many people out there that are just not good programmers. Either that or they are too afraid of breaking out of their box or comfort zone. I'd even go so far as to say that a real programmer can and wants to program in multiple languages. He pushes himself constantly to learn new things and solve problems in new, even more exciting ways than before. It's fun for him to 'discover' a new language. To do things with it that are so much more difficult to achieve with another language. Being really provocative about it I'd even say that a person who has only one or two programming languages on his resume is most likely not worth considering. Take into account that you want people that can solve problems and as such can adapt to the situation. Someone who is so rigid in their professional life that they only can/wants to write in a single language has most likely serious issues thinking outside the box. Trust me I've seen people like that. It's not pretty...
Overall what did we establish then?
- Programming is not as difficult as some people make you believe it is.
- Once you know how programming basics work, you can wrap your head around pretty much any programming language out there.
- If you have great programmers in your organization, try to keep them. They are all-purpose 'tools' and given a little ramp-up time can possibly solve pretty much any issue you run by them.
- If you're looking for new hires, look for talent not for specific programming language experience.
Send me your opinion and/or experience on this topic. I'd be happy to hear about it!