Bar. Hmmmm. Bug?! Chris Oldwood gives software development a seasonal twist.
Quality was dead: to begin with.
Okay, that’s not the real opening to Charles Dickens’s popular yuletide novella A Christmas Carol, set in 19th century England long before the appearance of software development as an industry, but Marley’s warning can easily be seen as an allegory for technical debt. Despite what George Box once said about all metaphors being wrong, but some being useful – see what I did there – I reckon we can look to Marley for inspiration about how we should treat our code, and the ramifications of not giving it enough TLC. Marley confesses that he now wears the chain he forged in life, made link-by-link, and yard-by-yard of his own free will. He could equally be talking about not bothering to refactor, with every link being a missed opportunity to rename a variable or function, extract logic to a separate method, write an automated test, etc.
Back in 2008, Thom Holwerda proposed that the only real measurement of code quality was WTFs per minute. The fallout from Marley’s decision to continually cut corners emerges verbally, later, as his successor tries to make sense of that code. This being a family friendly publication though I can’t spell out WTF in full and propose instead that just for the festive season we switch to the far more old-fashioned form of WTDs (What the Dickens!) per minute.
I should note though that the ‘Dickens’ in that expression of surprise is entirely unrelated to the author in question, having been used by Shakespeare a few hundred years before Charles was even born. The etymology suggests it’s a euphemism for the Devil, also known as Old Nick – not to be confused with the more lovable Saint Nick, who also enters our consciousness this time of year. It’s an easy mistake to make, especially when you consider that Satan and Santa are anagrams of each other. Marley was also trying to tell us that naming is hard, and typos can lead to a lot of confusion if left unchecked. (I once ran across a variable named ‘NoErrors’ where ‘no’ was actually an abbreviation of ‘number’, in a programming language that allowed an implicit conversion from an integer to boolean – convince me that’s not the Devil at work.)
In the Oldwood household, the favoured adaption is A Muppet Christmas Carol, with Albert Finney’s Scrooge coming in a close second, at least for the parents. Jim Henson’s decision to cast both Statler and Waldorf as the Marley brothers was genius. Their modus operandi is to sit on the sidelines and make snarky comments about the various goings-on, but never actually make any sensible suggestions on how to genuinely improve the state of affairs. If you’ve never had to work with a Statler or a Waldorf, then I envy you. Code reviews often feel like an interview with those grumpy old men as I’ve found it quite rare for people to point out the positive aspects of a code change and only focus on the bits we disagree with. We should all strive to ‘be more Kermit’.
Despite being one of the more faithful adaptions, A Muppet Christmas Carol glosses over the same time paradox as many others. In the book, Scrooge is told that he will be visited on three consecutive nights, and yet the tale starts on Christmas Eve but he still wakes up on Christmas Day after the three visits, exclaiming “The Spirits have done it all in one night!” Clearly this is a classic case of management not liking the estimate that Marley proposed. Knowing how poor the codebase had become, Marley estimates three days but somebody upstairs decides Christmas Day is a hard deadline and the ghosts need to work overtime and get redemption delivered in one night. Releasing on Christmas Day is fraught with danger unless you’re part of a well-oiled machine, mostly because pretty much everyone else apart from the skeleton support crew will be on holiday.
What of the three ghosts though? Even though our industry is still in its infancy in comparison to many others, we still have plenty to reflect on. Also, the ghosts are with us permanently now in the guise of blog posts, journals, books, videos, talks, etc. We only have to remember to learn from the past to avoid repeating it. How hard can that be?
As I write, the legendary Fred Brooks passed away exactly two years ago to the day. (This also gives you an insight into my inability to meet publishing deadlines and turns the irony level of writing about learning from the past right up to eleven and beyond.) Of his most famous works the ‘no silver bullet’ statement – about there being no single development in technology or management that can provide even an order of magnitude improvement to productivity within a decade – is probably the one which many would love to prove wrong.
There have definitely been some excellent advances over the years, like the introduction of structured programming and the continued efforts to avoid so many of the traps and pitfalls of our forefathers. Incremental software delivery, the one technique which Brooks conceded in the mid-90s might come close, has also paid dividends and helped us to focus more on the essential complexity. Likewise automated testing and refactoring help us tackle the accidental complexity.
My current fear is the Ghost of Christmas Future showing us a world where we have put all our efforts into AGI in the mistaken belief that writing code is the hard part of software development and we end up repeating the foolish promises of 4GLs and UML. In this picture, Tiny Tim – the sick child of Scrooge’s bookkeeper Bob Cratchit – is not just a single codebase or company but the entire software industry as we fail to comprehend what ‘describing a solution in unambiguous detail’ really means.
Hopefully, this charade will be exposed for the pantomime that it currently is and those working on LLM based tools which provide valuable, direct assistance to Bob Cratchits at every level of their career can get on with improving their tools, undistracted by the Scrooge’s of this world who see many programmers as ‘the surplus population’ that just want to ‘pick their pocket every December 25th day’. Seriously, what the actual Dickens!
Blimey, that took a bleak turn, I reckon my text editor must have enabled dark mode. It’s Christmas, a time for festive cheer, and we should remember that the book ends on a high note with Scrooge achieving redemption and Dickens revealing that “Tiny Tim, who did not die”, providing us with hope for the future. So, in the immortal words of Tiny Tim: “$Deity bless us, every one!”
plush corporate offices the comfort of his breakfast bar. He has resumed commentating on the Godmanchester duck race but continues to be easily distracted by emails and DMs.
is a freelance programmer who started out as a bedroom coder in the 80s writing assembler on 8-bit micros. These days it’s enterprise grade technology from