Insert scream here - finding the time and inclination to fix flaws in the system
28 May 2024
Ever joined a new project and wondered why things are done the way they are? After asking, you may get the response, “We know the problems are there, but it was someone else that made them.” Insert scream here. Don't accept it - let’s help each other be better and change for the good.
The flaw in the system
We’re often tempted to ignore test failures, especially Heisenbugs. That’s usually a mistake, and Antithesis have a great summary of how they approached it, with this winning mindset:
Even if this specific bug didn’t matter, having it out there would impose an invisible tax on everything we ever did in the future.
We need to get our (code) houses in order. Kevlin Henney presented at NewCrafts Paris this month (video). In it, he quoted Yvonne Lam:
My theory of tech debt is that housework is the correct metaphor for the thing we call tech debt, but we can't use it because tech has been made up of people who don't do housework, or manage housework being done.
Leaving aside for now the diversity issue Yvonne is actually referencing, the housework metaphor is worth thinking about. You can’t cook dinner if the pots and pans are lying dirty in the sink.
If we just pile on and on and ignore refactoring what happened before, at some stage it will all come crashing down!
Finding the time
Often, the underlying problem is the pressure of time. So how can we make our processes more efficient to make time for improvement? Abi Noda evaluates some of Google’s recent findings in using Machine Learning to reduce time spent in code review by making actionable suggestions easier.
Deep knowledge of our tools and systems can help. Conor makes a joke about the (mostly) loved VIM, and is surprised by the response. But should we be surprised if we really know our tools and have tested their abilities and limitations? And does AI co-piloting (rather than autopiloting) make this a bigger or smaller issue?
Problem solving is more important than ever, but will the change of focus deprive future engineers of the understanding needed to fix the underlying problems (generated by AI that has learned from us)?
The flaw in soft skills
Google’s code review also highlighted the need for reviewers to make the point better. But what other skills should we be aiming to improve?
In a thought-provoking graphic, Forrest highlights the Vulnerability-Industrial Complex. Beyond the obvious security questions, there is no harm in questioning why we follow the processes we do. Who is really benefitting from them? Can we change them to benefit everyone rather than an obscure few?
Learn from the past, but don’t forget it. Forecasting is hard, and every piece of data we can use to make our forecasts more accurate should be used. But using the right data the right way is even harder, and Mike and Kartik encourage us to look beyond our own project when forecasting projects.
All of which feels like we need more meetings and communication to share these things. Well, use tools to help. Something like AWS’s Distill could speed up your process, summarising meetings and conversations in a few clicks, and whilst not perfect, can really give teams a quicker starting point in sharing and enhancing the information available to them.
Out with the old…
Nostalgia is making a comeback and we love it, like when Radio Student in Solvenia broadcasts ZX Spectrum games over 89.3FM or when local techie @nivrig in Belfast shares classic learnings with a new community. But we don’t want our applications getting left behind. So we get ready to keep up to date and embrace change where we can.
Whether it’s knowing the new and breaking features of React 19, finding the benefits and best practices of Angular 18, discovering more of the power of your IDE (like Intellij IDEA comparing files), experimenting with Partial Prerendering in Next.js or anticipating readiness for Java 25 next year… we would encourage you to embrace change and to enjoy it. But give us a shout if you’re not sure and we will do our best to help and guide, because to round off with a quote from Antithesis again:
It’s easier when you have a little help from your friends.
Quick links:
Analyse your Docker images quickly with a quick Dive
Analyse your data against security threats and expertise with Dracoeye
Make a (not) new Promise with Promise.withResolvers()
See you later?
Maybe we’ll come to see you! Call for Speakers at Bsides Belfast.
Coming to a School near you? Check out the Software NI Tech Teach sessions.
A bit further ahead - AWS Community Day BelfAWST in September, also calling for speakers.
Until next time,
Article By
Andrew Paul
Software Engineering Trainer