Do you think it’s a coincidence that perhaps 80% of the people I consider the best Java talent in the area have a moderate to considerable understanding of either Python, Smalltalk, Scala, Lisp, to a lesser extent Erlang, and most recently Clojure? If you answered ‘no coincidence’, perhaps you are in that top tier of talent. If you answered ‘what a coincidence!’, please consider reading on. If you answered ‘what are Python/Scala/etc.?’, definitely read on.
If you have only been in the technology business for less than ten years and you read this newsletter, chances are Java is your only real professional development experience or at least the overwhelming majority of what you’ve been paid to do. Comp Sci majors from the mid to late 90’s might have focused on C++ academically, but probably had at least some if not the majority of their coursework in Java. Most recent graduates of the past five years probably focused much more on Java than anything else in class projects.
Consider now developers and architects that have been slinging code since the 80’s, or even (gasp!) the 70’s. These seasoned pros earned their gray hairs by transitioning from one language/platform/system to another, perhaps moving from punch cards to mainframes to midrange to client/server and beyond. If you’ve been in the business long enough to make these adjustments on the fly without the advantage of four years at a university every time a new technology was introduced, you probably consider yourself more of a ‘Software Engineer’ than as simply a ‘Java Programmer’.
But it’s not just the most senior of you that are in the 80% of that top tier mentioned in my opening. Probably 20% of that 80% in the top tier (I know you can do the math!) weren’t eating solid food when Smalltalk was created. The younger contingent of the elite decided to seek these languages out as part of their quest for greatness, perhaps realizing that it would make them a better engineer and not just a ‘(insert any language here) Programmer’. Chances are, those that sought out this learning were influenced by one or many of the aforementioned with the grays. If you really want to learn the blues, you don’t start with Robert Cray – you start with Robert Johnson (apologies to those unfamiliar with blues). If you really want to learn to be a great engineer, the world didn’t start with Gosling, it arguably started with Turing.
If you aspire to be amongst the best engineers, you surely understand that the tools will change over time. Even more junior programmers have seen dozens of new frameworks, IDE’s and multiple changes to the Java platform in a relatively short period of time. By taking a step back or in some cases forward in time to study other languages, you’ll gain a better understanding of the progression of vital concepts in computer science, and without question you will become a better overall technologist regardless of whether you ever use these other languages in a paid capacity. And your Java skills will get better too.