Software is Like a Box of Chocolates

Software has had to endure a proliferation of metaphors over the years. Architecture, Engineering, Art, Craft, Design, Magic, Gardening. We’ve seen them all. Or maybe not all of them, because here is another “software is” I’d like to throw into the ring: Exorcism.

Breaking the Marble Spell

What I mean by this is summarised by Bill Joy in an essay anyone in technology should read:

“In The Agony and the Ecstasy, Irving Stone’s biographical novel of Michelangelo, Stone described vividly how Michelangelo released the statues from the stone, “breaking the marble spell,” carving from the images in his mind. In my most ecstatic moments, the software in the computer emerged in the same way. Once I had imagined it in my mind I felt that it was already there in the machine, waiting to be released. Staying up all night seemed a small price to pay to free it - to give the ideas concrete form.

Ah yes, I know that feeling.

If you’re an architect or a town planner, you might be blessed and cursed with visions of glorious structures.

<img style=”width: 600px; alt=”A Winter Sonata In South Korea A Snow-Covered Buddhist Temple Asian…” src=”” title=”A Winter Sonata In South Korea A Snow-Covered Buddhist Temple Asian…” />

Unfortunately, the only way to make them happen is to close your eyes and dream.

The other way you can get close is with software.

And that’s the point. If software is your craft (there, I used another metaphor), you actually can turn dreams into reality. It’s really all about the pixels, or as a Facebook has it, “pixels talk”.

One of Bill Joy’s greatest works is Vi, the grand-daddy of Vim, the program thousands - perhaps millions - of other developers and writers spend most of our days in. And how was this gift to humanity created from his initial vision? “I just stayed up all night for a few months and wrote vi”

Having an idea that grows in your head like a bad weed, and yearns to be unleashed as pixels on the screen. That’s exorcism.

Follow Your Passion to the Dole Queue?

I would be remiss if I didn’t mention this important and under-appreciated point.

Should you embrace every whim that comes to you, devoting the next few months or years to make it happen?

No. “Follow your passion” is popular advice, but it usually comes with a dangerously large dollop of survivorship bias. Of course Richard Branson will tell you to follow your passion. He’s the 0.00001% survivor, try listening to the other million who went down this path. It’s true that you’re likely to be better and more persistent at following your passion than maintaining a legacy invoice program in COBOL; but don’t confuse that with being a surefire way to put food on the table.

Commercial viability aside, a hacked-up prototype is not the same as a production system. There are many things to consider in building an application for real-world use: reliability, security, design, support, etc. The good news is you can still mock things up in a weekend and maybe even make them useful for yourself and friends who will tolerate a little breakage. You can also build extensions to tweak existing websites (you can try my Chrome boilerplate to get a Chrome extension up and running quickly). But committing to anything more major … go in with eyes wide open about the risks involved, and make sure it’s an idea that really, really, wants to come out. It’s what I’ve done recently and I’m loving it!