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?

In the time I've worked in the industry I have seen it all. I've been (am) a programmer, software architect, got hired, was hiring manager, helped hire or referred people and I've programmed in HTML, CSS, JavaScript, PHP, SQL, ActionScript, Perl, Bash, Ruby, C, C++, C#, .NET, ObjectiveC, Java, TurboPascal, Visual Basic, VHDL, etc... It seems there is a common notion though that if you need something developed you need a specialist for that job. To do Kernel development you need an experienced C hacker. Application developers need to have years of experience writing in Java or C++, maybe even specializing in frameworks as well, like Qt, Wx or Win32. On Windows if you don't have .NET 1, 2, 3 and 4 experience of at least 5 years don't even talk to us. You have not programmed HTML 3 on IE5 and Netscape or worked with Javascript before CSS was even an acronym? Go away!

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?

  1. Programming is not as difficult as some people make you believe it is.
  2. Once you know how programming basics work, you can wrap your head around pretty much any programming language out there.
  3. 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.
  4. 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!

Filed under:

Add new comment

Restricted HTML

  • Allowed HTML tags: <a href hreflang> <em> <strong> <cite> <blockquote cite> <code> <ul type> <ol start type> <li> <dl> <dt> <dd> <h2 id> <h3 id> <h4 id> <h5 id> <h6 id>
  • You can enable syntax highlighting of source code with the following tags: <code>, <blockcode>, <cpp>, <java>, <php>. The supported tag styles are: <foo>, [foo].
  • Web page addresses and email addresses turn into links automatically.
  • Lines and paragraphs break automatically.

Ready for transformation?