‘All Hallows’,’ Eve’, ‘Samhain’, ‘Halloween’. These are three different names ChatGPT will tell you that people call the 31st of October. Whatever you call it, it’ll often involve a game of Trick or Treat. In this particular instance, it means that someone got ‘tricked’ into writing a seasonal blog.
But do not fear – you’re in for a ‘treat’ as today, we’ll be looking at some common monsters in the software world, and what we can do to tame them.
Michael Myers: Avoiding Seasonal Scares
Michael Myers is a terrifying, yet predictably punctual villain. Months go by without a single mention of him, then one night – pow! He’s right there, causing all sorts of problems. Inevitably, the townsfolk never thought to use the intervening months to prepare for his return, so the annual stressful tussle with this particular monster ensues yet again.
In software, we have our own versions of these annually-occurring monsters – like Black Friday, or the end of a tax year. These events can have huge impacts on system load and functionality, and if not tackled efficiently, can horrify even the most hardy of professionals.
Here at Equal Experts, we have some handy hints and tips to help avoid seasonal threats like Mike. First, get used to changing and updating your systems regularly. According to the book Accelerate by Gene Kim, Jez Humble, and Nicole Forsgren – and backed up by our own experiences – the more frequently a system is maintained, the more reliable it becomes. Don’t fall into the trap of introducing long change-freezes in preparation, they can create a backlog of risks and cause more problems than they fix.
Secondly, design your systems so they can be scaled horizontally. Modern cloud platforms and container-based systems make this really easy, but we’ve also helped do this with heritage systems too.
Finally, use your downtime wisely. If you strive to improve quality and scalability regularly, you’ll be much better equipped to deal with “Mike” the next time you meet him.
Frankenstein’s Monster: Losing Control of Your (Complex) Creation
In Mary Shelley’s novel Frankenstein, a smart and ambitious Swiss doctor sets out to flex his intellectual muscles: he wants to create a modern marvel that will impress his peers and change the world. Ultimately, however, the doctor loses control of the monster, which seems to be actively taking revenge on its creator and, indeed, the world in general. Eventually, the doctor, full of regret, dies of exhaustion in the arctic wilderness. A story sure to resonate with software developers and architects the world over.
At Equal Experts, we’ve seen a few Frankenstein-like systems. Usually, they’re trying to do too many things, they contain a lot of different technologies, and are generally complex and cumbersome.
In software systems, the way to defeat these potential monsters is to keep it simple, engineer your system for today’s customer needs and keep your technology choices focused on the task at hand. Ultimately, remember to keep those egos in check – it was, after all, Dr Frankenstein who was the real monster!
The Invisible Man: Hey, Where’d He Come From?!
While some may consider Footloose to be Kevin Bacon’s scariest movie, his portrayal of the Invisible Man in the movie Hollow Man was also pretty terrifying. The character’s unpredictable behaviour made him a particularly ghoulish villain that many didn’t see coming.
We’ve all seen alarming examples of systems displaying some of the surprising and unpredictable behaviours of the Invisible Man. They don’t have any tests, alerts or dashboards – no visibility at all. Often, the first time we know of any issues is when we’ve been alerted by a disgruntled customer. Anyone responsible for building or running these systems will be frightened to make changes, or confronted by unhappy stakeholders when an invisible outage goes unnoticed.
The trick with the Invisible Man is to realise he’s easy to defeat if you make him visible! Chuck some paint over him, or cover him in a blanket, and suddenly you’ve removed his power. We can do the same in software; the more visible a system is, the easier it will be to maintain. Writing some high-level alerts will help enormously, as at least you’ll know whether your system is up and running properly. This is the software equivalent of putting sunglasses on the Invisible Man though; it doesn’t completely solve the problem, but you might be able to see it coming. Adding some good unit tests and improving your general operability will ensure your foe can be well and truly defeated.