The human side of software development.
Applying development practices against every-day life, and applying life lessons to development
This is developer++
Tonight I spent an hour on a ladder cleaning out all manner of disgusting slop from my eaves troughs.
I had my suspicions over the last few months that I should probably do this, but it never made it high on the priority list.
My wife even reminded me a few times that the gutters needed to be cleaned.
There were a number of very heavy rains where the water was coming over the eaves troughs, but I justified that with the fact that there is a valley in the roof line, and it catches a lot more water than other areas of the house, so it’s understandable.
And there was still water coming out of the downspouts, so what is there to worry about?
I had other things to do tonight, arguably more important than cleaning out the gutters, yet there I was, 10 feet up on a ladder with a bucket full of slop and branches.
Why the sudden need? I knew about it, and it was obviously only going to get worse, yet I still hadn’t acted.
I didn’t take this seriously until other people started noticing and commenting about it. My neighbour mentioned they could see trees growing out of the gutters.
Ooops. That’s just embarrassing.
Time to clean that up and now. This shouldn’t have been a surprise.
Impact on software development
The same situation happens all the time in software development.
They aren’t necessarily logic bugs, it can be running out of disk space, or having poor indexing on a rapidly growing table.
It’s easy to accept the degraded performance because it creeps up on us so slowly.
At the very least, record what happened in as much detail as possible.
Ideally, you are able to address the issue quickly before it starts causing bigger problems. Then it is time to start logging details about the process if you aren’t already, and schedule some time to review those logs to figure out the frequency of the issue.
Now that you’re measuring the affected process or resource, be sure to set alerts when certain thresholds are met. This will ensure you have time to respond before the neighbours start telling you that trees are growing in your gutters.
Having full gutters can lead to perpetual fire fighting of an application just to keep the lights on. This leaves little time for new feature development, reducing the amount of business value you can deliver.
This often leads to rush patch jobs that further reduce code quality, and increases the amount of errors down the road. It’s a vicious cycle.
Don’t wait until the gutters are full and water is pouring over them instead of through the downspouts.
Needless to say, It is much more expensive in time and money to address these issues when they are causing production outages.
Take notice when weird things happen and address them.
Be proactive and monitor your system for potential health warnings.
Listen to your spouse.
Thanks for visiting!
If you enjoyed this article, please subscribe to my newsletter below and I'll make sure you are notified of any future articles
As a thank you for signing up, you will receive my free ebook - Iterative Development for the Human Condition. This book takes a look at how the same principles used in software development can be used to effect positive changes at a personal level.[nm-mc-form fid="1"]