Big Rewrite

Music: "American Pie" by Don McLean / © Don McLean

The story goes that an interviewer once asked Don McLean what American Pie actually meant. His reply? ‘What does American Pie mean? It means I never have to work again.’

When I wanted to write something that captured the whole history of software development, from assembly to MS-DOS to the dotcom bubble to devops and cloud and agile, there was really only one song to work with. And, of course, the ‘big rewrite’ is one of those eternal fallacies of our industry: generation after generation of developers doomed to repeat history because they haven’t learned from it.

But mainly it’s just a sort of combined music/technology nostalgia trip.


A long, long time ago, I wrote in assembler,
And those op codes used to make me smile,
I wrote my Hello World program, in 16 kilobytes of RAM,
No function calls, no do() or for() or while()

I’d sit all night in rapt frustration,
Trying new optimisations,
Forgot to sleep or eat
I would not admit defeat,
Every change meant more confusion,
Surrounded by my own delusions,
Finally came to a conclusion,
I’d do, a big rewrite


It’s high time, we reviewed our design,
The code behind our system is just too byzantine,
We’ll rewrite all the legacy and take it off line,
And it’s gonna compile first time,
It’s gonna compile first time,

Did you have a BBC,
or a Commodore, or a VIC-20,
Eight bits wide, and slow as hell,
Or did you start out on the Unix scene,
Or a VMS or a PDP,
Your own account, with email and a shell?
It’s not like anyone really cares,
we all got started out somewhere,
A keyboard and a screen,
listing in a magazine,
We typed those games in, key by key,
Convinced our code was typo-free
But we knew that, eventually,
We’d start, the big rewrite


Now for ten years, we’ve been running code,
From PHP to Rust and Node,
But that’s not how it used to be
When I learned to code, it was a different age,
Turbo Pascal was all the rage,
And we couldn’t wait to install Windows 3,
Well 640K of memory,
Should be enough for anybody,
And for multitasking code,
You had to run in protected mode,
You’d work with your bible by your side,
Peter Norton’s MS-DOS guide,
But you’d already worked out, deep inside,
You’d do, a big, rewrite


Dial-up modem, straining to upload ‘em
Spitting out websites fast as we could code ‘em,
Share price high and rising fast,
Waiting for that big-time IPO,
Gonna be millionaires, don’t you know,
I guess it was all just too good to last,
We thought the web was the, promised land,
Coded our HTML by hand,
But when we put it live,
It didn’t work in IE5,
We started to feel like we were cursed,
The dotcom bubble, finally burst,
And then things went from, bad to worse,
So we did, a big, rewrite


Oh, there we were shouting out loud,
Move everything to the cloud,
And host it on virtual machines,
Elastic scale to cope with load,
Infrastructure built on code,
Though no-one’s sure what devops really means,
I sat and I watched the counters climb,
Wishing I got paid overtime,
Then the MongoDB failed,
Guess it wasn’t quite web scale,
We lost the whole availability zone,
I couldn’t get tech support, on the phone,
That’s the point when I wish I’d known,
They’d done, a big rewrite


I did my time, I paid my dues
I did my exit interviews,
Then turned around, and walked away,
I had a dream, I had a plan,
Fed up of working, for the man,
This time I would do everything, my way
I launched the perfect MVP
Online, for all the world to see,
Working in a new style
fast and lean and agile,
I listened to all of their requests,
I added features, with unit tests,
But then one day… you know the rest,
I did, the big rewrite.