Why No Programming Language Will Be Your “Last”

Leading up to BKLYN Bit Labs, I’ve had what I call “Something of a reverse career track” than a lot of programmers. I began as the only dude who knew HTML in the newsroom of the Contra Costa Times in San Francisco’s East Bay and was recruited because of it when they decided to launch their online paper in ’96. From there, I learned a little JavaScript and a lot of Perl which got me the next job I took at Wired. I learned PHP while there as well as the now useless TCL language. After moving to New York, I then learned Java (after having messed around with it but never setting out to learn it until around 1999 or 2000 or so).

And once I knew Java, I declared, “That’s it. I’m never learning another language.”

What a fool I was. Though it took me over ten years to realize it.

For over a decade, I made my living doing server side Java. And though I was interested in iPhone apps, that they were written in Objective-C essentially stopped me from doing anything about it. Then Android came around and to me it proved that I would indeed not need to learn another language to get into the mobile game.

Three Android apps later and a lot of consulting, I finally realized that, while people wanted an Android app, they really wanted to be on the iPhone first, market share and statistics be damned.

So I knuckled down and learned Obj-C, my first new language in just over a decade. And the floodgates opened.

For whatever reason, Android is and was seen as a second-run OS by the creative class’ running today’s startups. But iOS on the resume suddenly peaked a lot of people’s interest and business boomed. But, more importantly, it opened my eyes to something that I’d long ignored. It’s not the language you program in, it’s what you’re programming.

More importantly, it now made available to Dan and I one of the most profitable platforms on which to launch a game, a dream he and I have shared for a few years now.

As almost everyone knows, it’s almost impossible to make a successful game only on the Android platform and for a myriad of reasons, ranging from rampant piracy to user’s unwillingness to pay for seemingly anything. But a game launched on iOS and Android together stands a much better chance. Which brings me to the latest language I’ve learned: C++.

No company that is beholden to another can ever be a true success, as people who’ve made money building Twitter clients discovered when the terms of service were suddenly changed. But learning yet another language allows us to port the bulk of our game code between iOS and Android. And should we wish to expand past Google’s Play store, there’s always Amazon to sell through as well.

I call this progression of languages “the reverse track” because many of my colleagues of the same age or older have gone in the opposite direction, starting with the complex languages first but who now mostly use scripting languages. This is because, for what they do, this direction towards simplicity makes sense.

I, on the other hand, have found more complex languages freeing in when and where they allow me to build innovative new products. And, while C++ is my lastest, it will probably not be my last. Nor does the direction toward complexity have to remain. Our current game requires C++ but it’s entirely possible that our next might be written in Lua or JavaScript to interface with the game engine.

The point, I suppose, is to never declare a language the last you will ever learn. Because if your next project needs it, you may have to learn another. And that’s a good thing.