Learn Your Tools, Learn Others Too
December 27, 2007
I’ve always lived at the fringe of computing, with a foot in the popular and a foot in the obscure. When I was a kid, I had a Tandy TRS-80 when all my friends had the Vic-20 or Commodore 64 - and I attribute my open-mindedness to this early acceptance of the obscure.
In my career I spent a lot of time on alternative platforms, with my early start on the Commodore Amiga, exploring *BSD and Linux on PC compatible hardware, a brief specialty in Silicon Graphics workstations and servers, right up to these days on my Macbook Pro.
My programming career has been just as varied. As a hobbyist I enjoyed 6809 and 68K assembly programming, BASIC and C / C++ programming. Professionally enjoying Perl, C++, Ruby and Java programming. I continue to tinker on the fringe dabbling in Scala and even a little retro-focused on Smalltalk.
The recent Smalltalk focus was triggered by the rising popularity of solid-state-disk drives. I read a review today of the 64GB Samsung SSD, as I’ve been wondering if we’re going to see a flip that makes traditional storage obsolete. Imagine a world where all you have is RAM, it’s your permanent storage, your transient storage. A world that will be well understood by the Smalltalk crowd.
One thing that I continue to shake my head at is people putting down other programming languages. I see it all the time, even among people that really ought to know better.
Over the holidays I’m having fun continuing to explore. I’ve begun a re-write of my company’s core CMS product using some modern Java techniques - had the core interface together in under a day of development. This is mostly thanks to Java EE 5 and the JBoss Seam framework. This is just as fast as anything I’ve ever put together in Ruby or Perl, which proves yet again that it has little to do with your programming language, and everything to do with your tools and techniques (which come from experience!).
The lesson learned from this is simple - learn your tools and open your eyes. Don’t draw technology conclusions until you’ve explored the current state-of-the-art in each realm. Many people have jumped away from Java because they were frustrated by their old techniques, old tools, or old frameworks. I believe they’ll be back, perhaps not for the Java programming language, but likely for the unfortunately named Java Virtual Machine (which runs code produced by hundreds of different compilers and environments). This is why I enjoy Scala and JRuby.
But also branch beyond your environment. Spend some time playing with Python, OCaml, Javascript, Haskell. You’re going to learn something - it’s inevitable. Ignore the language snobs who say you will never understand their language because of where you came from. Go with an open mind and learn what you can. Go beyond the syntax of the language and look at how they assemble projects, how they modularize code.
Now some people disagree with this idea, citing reasons such as demotivation (you get demoralized about your “home” environment, wishing it “measured up”). It hasn’t worked this way for me, perhaps it does for others, but I have to believe that if you are aware of this risk you can act on that knowledge.
Happy developing :)