A poetic journey through the trials and tribulations of software development. Written in solidarity with developers everywhere who endure long builds, broken promises, and the never-ending battle with entropy.
Originally authored in spring 2019.
Author: sinback (they/them/theirs)
A coder fetched a gcc
To build some ancient C, C, C.
But all that gcc could see
Was some broken stuff for cpp.
The coder fixed his #ifdefs and he broke into a smile,
As he leaned back in his chair and wrote his buffer to a file.
He skipped away to waste his day,
As the build'd take a while.
Then unbeknownst to this poor man, his build stalled on a prompt!
If his CPUs were thoroughbreds, their bits would have been chomped.
Unattended, deaf and dumb, his cursor blinked away.
But stdin was mute and mum, throughout the whole damn day.
Coming back to greet his shell,
Our hero swore and sulked.
Then his manager began to yell,
As our hero gagged and gulped.
“This code is not for us, you see, as others need it too,
But all our broken promises show we haven’t got a clue.”
The deadlines crept upon them, like wolves upon a lamb.
But then a realization dawned: he didn't even give a damn.
“When I was but a student, boss, you know I studied well.
I read my texts and passed my tests, and I felt pretty swell.
But now it’s no longer in that iv’ry tower that I dwell,
I’m fed up and it’s clear to me: Others’ code’s a fucking hell.”
“True enough,” his boss replied, “but there’s work yet to be done.”
Our hero shook his head and said, “...Nah, I think it’s time to run.”
He drafted a resignation and he started a new job,
But it wasn’t long into it his old wounds began to throb:
No matter what the language, or the mission of the day,
Someone always broke the build, and his hairs were turning gray.
He struggled and he fought to keep his projects all in line,
But then as time wore on and on, to a fact he grew resigned:
It’s possible for small spans to run code which is correct,
But it always breaks again one day, through bitrot or neglect.
Maintainers get disinterested and wizards get burned out,
And sometimes fighting entropy’s all that your job's about.
Learn these lessons well, young one, and learn them like they’re rote:
You better comment up that code and flesh out those triple-quotes.
Dwell long and hard on your designs, though you may huff and sweat,
The payoff’s clear to all the wise and shrinks technical debt.
Test your code and make good friends with professional QAs,
Who know not of your plans or of your code paths’ funky ways.
Thank them as you would a mistress for their bug reports,
It’s better now than later to know what your shit really supports.
Perhaps inherit not the code of one who leaves the firm,
You may wonder, you may gape, you may wish that it could burn.
And yet, dear lis’ner, you should fear the impulse to rewrite,
It may feel quite nice at first, but you’ll relive many plights.
And mere refact’ring takes time as well, time to write and test,
This time incentivizes us to plan long at first, then rest.
Try not to touch that code which works and fix not what ain't broke,
In improvements, breakage lurks, haunting all us folk.
Read the fucking manual, but know that it may lie,
As enlightening as it may seem, it's just written by some guy.
Short docs don’t help us much at all, but fear too the doc that’s long
The more that manual drags on, the more statements will be wrong.
And last, be kind and gentle to your peers,
Help them with their process, and take them out for beers,
Because if you’re That Guy who’s mean and sucks,
You soon won’t be able to give any fucks.