Do the Stupidest Thing that Could Possibly Work

by Joey deVilla on June 1, 2007

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….

Uncle Rico’s Time Machine

…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.

The first “Sam and Fuzzy” comic featuring “Future Fuzzy”
The first “Future Fuzzy” strip from the webcomic Sam and Fuzzy. Click the comic to see it on its original page at full size.

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:

Black Macbook

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.

“Programming Ruby” cover

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.

JavaScript reference book cover

3. JavaScript is going to be one of the most important programming languages. People will discover that it had hidden powers and expressive capabilities that put it more on par with Lisp than with Java. It will form part of the basis of a new approach to building web applications, drive the user interfaces of some of the world’s most popular applications and be the basis for a number of new application platforms.

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!”

A developer of that era would probably sooner place bets on Java, rich client apps running on Windows and maybe PHP. That developer would probably think that the rise of the Mac, Ruby and JavaScript were interesting notions, but highly unlikely. Perhaps even ridiculous. Maybe even stupid.

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!

Footnotes

1. According to this web page, the entire Rails core team develops Rails using Textmate on Mac OS X.

2. It’s ranked 10th in the May 2007 edition of the TIOBE Programming Community Index.

{ 18 comments… read them below or add one }

1 RichM June 2, 2007 at 11:49 am

1. The Whitespace language finally breaks out: Educators enthusiastically endorse it as a child’s first programming language, but the developers’ wiki is marred by invisible revert wars.

2. Widespread use of free phones*, entirely supported by ads delivered in the form of ringtones.

3. Some entrepreneur will join the list of the twenty richest people by cornering the market in Chinese computer input devices.

*The phrase “mobile phone” will have fallen out of use by then as being overly redundant.

2 Eric TF Bat June 6, 2007 at 2:02 am

1. The word “computer” gets the same old-fashioned sound to it that “microcomputer” or “home computer” has now. Computers are small devices you wear or carry, and all the peripherals like screens, keyboards and internet connections are separate and connected only by some kind of wireless connection. You never need to worry about setting up your work PC to have the same settings as your home PC, because your “device” keeps track of that sort of thing for you. In fact, people don’t even need their own desks, because any screen and keyboard they sit down at becomes their “computer”. As a side-effect, the Palm Foleo is seen as a blatantly obvious idea and nobody will admit to having laughed at it.

2. At least one language in very common use will work with non-ASCII symbols. Not just unicode, but graphs, diagrams or pictures. It may even be animated, making the print-it-out-and-debug-on-the-kitchen-table development cycle a thing of the past.

3. Perl 6 STILL won’t be out. Come on, this isn’t science fiction, you know!

3 Joost M. June 6, 2007 at 3:59 am

I would need all five minutes to convince myself in vain that I’m myself. Even my secret pass phrase that I invented for this precise occasion wouldn’t help – what’s more likely, time travel or mind hacking?

4 HopeNot June 6, 2007 at 7:14 am

1. The Internet has been shut down. Authoritarian governments everywhere cooperated to outlaw it, unifying against a common threat. Now, only an MSN service exists, unless you go to the seamy underside of the illicit p2p mesh.

2. General purpose programmable computers are outlawed. If you have a black-market computer not limited to strictly obey the worst excesses of copyright law, you will go to a Halliburton labour camp for longer than a paedophile rapist. Only annually licensed Microsoft Valued Professionals are allowed develop programs and they have to use Managed VB unless they’re Microsoft employees.

3. Patents have been made reneweable indefinitely. After all, it was necessary to “harmonise” them with copyrights, which were extended indefinitely.

5 ryan June 6, 2007 at 9:50 am

1. Ballmer sets Microsoft HQ on fire in a murderous rage after Linux and the Mac break 50% combined market share.

2. Steve Jobs subclasses his RDF generator into a fountain-of-youth-like device and announces he will be Apple CEO for eternity.

3. California falls into the Pacific after a massive earthquake but 50,000,000 nerds sacrifice themselves holding it in place while Silicon Valley is moved brick by brick to a safe location.

6 dj June 6, 2007 at 10:44 am

1. DHH admitted he was drunk while developing RoR.
2. Ballmer fell from the stage and broke his neck. His last words were : “Delvelopers, f*ck …”
3. COBOL is still in top 20 languages.

7 K June 6, 2007 at 12:58 pm

1. Nothing new has happened. Just smaller, better, faster, cheaper and generally improved versions of what we have today. Expect some mergers of current technologies, like the camera’s did with phones.

2. The embedded cameras in mobile phones will be good enough for journalists, but they will still have to have a specialized camera to use special lenses etc.

3. Speech recognition will finally understand enough to replace the keyboard when writing mails/essays. This will never happen to programming languages.

4. There will only be two platforms. The GPL’ed Java (the framework and JVM, not the language) and .Net. Both will run most programming languages (Ruby, Python, Java, Erlang). The only difference is the choice of operating systems.

5. Javascript will be the most popular programming language, even on the server side (JVM, .Net)

6. Internet Explorer still doesn’t support most web standards.

7. The web has become as interesting as the average cable network, and net neutraility is a thing of the past.

8. Iraq is still in chaos.

9. President Jeb Bush tries to stabilize Iran, after years of occupation.

10. While the U.S. economy is worse than ever after spending so much money on the military in the last decade, China prospers more than ever.

11. Most have forgotten about Facebook and Twitter, and Rails has long since been replaced by a new way of thinking about web applications.

8 ttt January 16, 2008 at 9:24 am

i want to time travel to warn me to ask someone out at the beggining of the 6th grade year!

9 Ollie Saunders February 26, 2008 at 7:34 pm

1. The use of programming languages to build web applications falls to minimal as instead we string together a bunch of domain-specific languages to get stuff done.

2. Web services effectively replace the need for any kind of persistence layer.

3. Distributed version control takes off.

4. The HTML 5 spec is completed.

10 Pure Roon February 12, 2009 at 6:57 am

If I were to tell my past self all the glorious secrets of the future, it would be just my luck that by knowing my own future it would change again, simply to spite me.

11 Ritesh February 12, 2009 at 7:04 am

I would have told my past self to buy Google shares :) More realistically, my past self would have thrown me out and told me C rules. I would have also told myself, You will learn about databases, but they will become unimportant soon. So do a Phd in distributed storage systems using Hashtables

My future self would probably tell me Mac’s rule the world. All developers are now using Windows or Ubuntu. Windows 8 and Ubuntu 13.08 are really cool!! Yahoo shares are up again and Wikipedia has been replaced by twitter.

12 Too Much TV February 12, 2009 at 11:32 am

Then again, maybe I’ll just stick with my Diet Pepsi

13 Robert 'Groby' Blum February 12, 2009 at 5:39 pm

1. Work on C++1x has barely begun. One of the main features discussed is skinnable syntax. Proponents would like to use ” to indicate skinnable syntax, since they’re not overloaded enough yet. Also, operator whitespace is finally included

2. According to all research, the singularity is about 20 years out. Then again, you knew that. It was 20 years out in 2000, and it was 20 years out in 2009

3. People finally realize that video blogging is a major waste of other people’s time and provide transcripts for easier access. They will be called vblogs, and all the hip people will complain about the name.

On the serious side:

1. A major online application will have had an irrecoverable data loss (either caused by tech issues or insolvency), teaching people that maybe having local backups is not a bad idea after all.

2. Java/C#/PHP/Javascript will still be the mainstream languages of choice. Ruby and Python are catching up, but only the version running on the JVM/CLR.

3. We will have 64-core machines, and most developers *still* won’t be able to code threadsafe. Mainstream programming starts understanding that “shared nothing” is a good idea, and is desperate to hire all the web guys who did it already.

14 shawn April 13, 2009 at 10:44 am

What Would I Tell to my Past Self? Simple. winning number combinations of lottery draws.

15 Trav April 22, 2009 at 4:28 pm

In 2000 I never would have believed my future self if he’d told me that in 2007 (and 2009) developers are still spending effort arguing about what computer hardware they should use to develop software — software in languages that are only supported by virtual machine languages.

16 Myself April 22, 2009 at 5:39 pm

I totally would make out with myself … no second to waste of those 5 minutes!

I wouldn’t even talk to me … it was so obvious what to do.

17 Samantha Wilson May 18, 2009 at 8:55 pm

Can i borrow your time machine please? My mother passed away on August 31 2008. She had a dieasse ever since 2003 and she wouldn’t go to the doctor. The only thing that would’ve saved her was a operation were they remove her collapsed lung. Over the years it got worst and she got weaker then August 2008 she went but she was too late she was too weak for the operation. I want to start from 1999 and I’m gonna talk her into going on April 18 2004 so she’ll live and there are other things I wanna change in the past too.

18 Honor Knightly September 5, 2010 at 4:13 am

1, BET on the Black Presidential candidate. Take 100:1 odds. I know…right? Just do it!

2. Ruby on Rails is NOT a porno title, but it should be.

3. FLIP real estate until Summer of 2007, then wait four years to snatch cheap holdings at a bargain.

Leave a Comment

{ 4 trackbacks }

Previous post:

Next post: