I first came up with this scenario at last fall’s Ajax Experience conference in Boston, which wasn’t too long after the first RailsConf. Between these two conferences and noting the unusually high concentration of Macs at both, and perhaps from having many, many drinks with Brent Ashley, Pete Forde, Brendan Eich and Douglas Crockford, this idea popped into my head and it goes like this…
The Time Machine
Imagine that you could get your hands on a time machine, perhaps like the one Uncle Rico bought in the movie Napoleon Dynamite….
…but with a couple of crucial differences, namely:
- This one actually works
- Its “destination” setting is stuck and it can send you to only one specific time, a time around the end of the dot-com bubble: December 31st, 2000.
- The machine will send you back so that you have five minutes to tell your past self about things that will happen in the future. Once your five minutes are up, you will be returned to the present.
What Would You Tell Your Past Self?
Let’s suppose that once you’ve told your past self to avoid doing those things that you now regret, s/he asks “Hey, Future Self, what interesting changes happened — er, I mean, are going to happen — in the tech world?”
Now let’s suppose you told your past self these three things:
1. The Mac is going to steal developer mindshare from Windows, and you’ll also see a lot of “I deploy on Linux, but develop on a Mac” people. You’re going to see more and more “alpha geeks” using it as their development machine of choice. You will see developer conferences where Macs outnumber Windows machines by 10 to 1 or even more. And a popular application framework — at least in terms of mindshare and influence, if not in raw numbers — is going to be developed by a team that prefers working on the Mac.
2. Ruby is going to be one of the top 10 programming languages. You know Ruby, that obscure little programming language that the guys who wrote The Pragmatic Programmer keep raving about? The one with documentation that’s difficult to find, and even if you find it, it’s in Japanese? It’s going to be hot, with people writing all sorts of books on it and buying them too, and its popularity will be largely due to the fact that a hot new web development framework is going to get built on it.
How Would Your Past Self Respond?
If you were to make these three statements about the development world in 2007 to your past self, would s/he believe you?
I’m not sure my December 31, 2000 self would. I can imagine my past self dismissing me with “Future weed must be pretty potent stuff!”
And Now, the Twist…
There’s a mantra in the Agile Programming world: “Do the simplest thing that could possibly work”. It encourages developers to implement solutions that follow that mantra, to write their code with the notion that getting the job done in the simplest way possible is the preferred way of doing things.
Imagine switching the word “simplest” in the mantra to “stupidest”.
With that in mind, let’s turn our little time travel thought experiment upside down.
Suppose your future self from December 31, 2013 came to visit you and tell you about the programming world from his or her era. Now try to imagine what sort of things s/he’d tell you that you might think are downright stupid.
Keep in mind the way your December 31, 2000 self might have thought of present-day tech. Think of present-day stuff that’s considered too “out there” or “obscure”: Erlang, perhaps? OCaml? Haskell? Some Lisp or Smalltalk derivative? LOLcode? Mobile phones as the next laptops? Tabletop computers everywhere? ePaper?
Let your imagination run wild, and make a list of what you come up with.
From that list, pick one or two items that pique your interest and follow them.
I figure it’s a no-lose situation. If they don’t become the future of computing, the actual exercise of working with them will still be valuable. However, if one of those ridiculous ideas becomes the next big thing, you’re going to be ahead of the curve — you might even be considered a guru or visionary!
2. It’s ranked 10th in the May 2007 edition of the TIOBE Programming Community Index.