In the rapidly expanding realm of computing technologies, it's reasonable to assume that most developers have only a limited spread of knowledge. I regularly hear it said that keeping up with the welter of new frameworks, platforms, systems, and capabilities is almost impossible. Except that it's only occasionally you actually get abruptly confronted with this uncomfortable truth.
I freely admit that I'm fairly solidly fixed in the Microsoft world these days, but even then there are loads of areas that I have only viewed from afar. I've never tried to build an app for Windows 8 store; or played with StreamInsight and SQL Server Integration Services; or even seen an Xbox in action – never mind tried to write programs for it. And my experience with WPF, WCF, BizTalk, and SharePoint can optimistically be described as fleeting.
So the "how little you really know" event happened to me twice this week. The first was when writing map/reduce code for HDInsight. Unless you use the Hadoop streaming interface, or some fancy framework, the code has to be Java. Not a problem - Java isn't one of my strengths, but if you know a few procedural programming languages such as VB, C#, and Pascal (as opposed to declarative languages such as Lisp) working in a different one is not a major problem.
In fact, a friend who is multi-lingual often remarks that, once you've learned a couple of foreign languages, adding new ones is much easier. So it is with programming languages. You just need to figure out the equivalent dictionary words (in programming terms, the objects and methods) and master the pronunciation (the programming runtime environment).
Yet, try as I might, I could not get my Java code to execute. It compiled fine without errors, and loaded. But it seems that I missed some fundamental stage between the compiler and the runtime environment. Perhaps because there are endless different examples and reference topics on the web that say different things, and the object libraries in Hadoop on HDInsight seem to bear no relationship to the online docs and examples.
I guess the days of being a "developer" in the IT world are long gone, but maybe even a specialization such as "web developer" is now a thing of the past. Perhaps we are an industry of increasingly narrow focused specializations, because each is so complex - and is just one of a rapidly expanding domain. Maybe now you need to be a "rapid Android app developer", or an "SEO optimization engineer", or even a "presentation style management administrator".
But I suppose this fragmentation is just like what's happened in other, much older professions. I probably wouldn't want an osteopath to fix my teeth, or a pulmonary hypertension cardiologist to write the prescription for my new spectacles...