I’m a utilitarian software developer, or so I have always thought. For me, being a utilitarian developer has long meant using whatever tools I could wield to “get the job done” as quickly and correctly as possible, and was something I take pride in. In practice, this mindset has translated to writing every project in whatever language I happened to be using at my day-job, and lucky for me, at work, I write Java: the swiss-army-knife of programming languages. Need a chart? Here’s a shitty charting library. Sure, the result isn’t going to be sexy like something made with D3.js, and while the project won’t require much, if any, new learning, it is going to require a LOT more time and/or brainless effort than if I knew how to do it in say, Python. But hey, I needed a chart and I made a chart, case closed, great success!. This mode of thinking tends to drive technology choices, for instance why write Objective-C when you can just Java away on Android and leave the iOS work to someone else. You don’t care that an idle Tomcat server suckes down 200mb of RAM, just as long as it serves the JSON when you asked for it.
Of course, the problem with using a hammer for every project is that your faucet leaks because, instead of installing it with a pipe-wrench and some thread-tape, you bashed it on like a neanderthal wielding a river stone. The other issue with this one-tool approach is that while you get really good at beating things with your hammer, you never really learn to use the other tools in the box. When you see a screw, you look over suspiciously at the phillips-head driver in your box, and decide that “no, threads aren’t all that important, any old piece of steel filling the hole will work”, and you instead draw your trusty hammer as you always do, and commence to banging away.
Despite my attention difficulties (the next Docker.io post is in the mail, I promise) I have set my sights on learning some new languages; 8 to be exact. The first 7 will be those covered in The Pragmatic Press’s 7 Languages in 7 weeks, and the eighth will be Apple’s Swift (more on that choice later).
7L7W features languages designed for all programming paradigms. From Ruby’s OOP to Haskell’s pure functional, I really hope to become a utilitarian with a big toolbox, equally comfortable hammering nails as I am cutting wood with a newly sharpened band-saw, and even if I only get a feel for 4 of the 8 languages I have set my sights on, I’m sure I will be the better for it.