A falling knife has no handle – the chef’s guide to software development
16th October 2024
There are times when I’ve caught myself working on a problem only to find that I’m repeating myself, circling back round and attempting things I’ve already tried. Without taking a methodical approach to my work, my focus can become blinkered. To avoid this, I use a combo attack:
- Source control – to track what I’ve changed
- Automated testing – to track what works and what breaks
- Pomodoro–style techniques – to break out of the loop and take a breath
To put it another way, I try to take a more mindful approach to development.
The phrase “a falling knife has no handle” is appropriate in situations where you are not mindful and instinct takes over. In the case of a falling knife, trying to grab the handle is just as likely to result in you grabbing the blade, with painful results.
The only way to have a good outcome after dropping a knife is to step back, get your limbs well out of the way, and let the knife hit the floor. It’s more robust than you are.
Let’s apply the spirit of this saying to software development: a bug has entered production and is causing a critical issue with customers. Both data and money could be lost. What do you do?
In these situations, it can be tempting to go old school: connect to the server and hack around until everything starts working.
A good devops setup shouldn’t even allow this. But that’s a tale for another time.
Or, you might put together a pull request and push it directly to production, bypassing your automated test suite. People are emailing and calling, piling on the pressure for a fix.
While understandable, the hacky fix is rarely the right thing to do, primarily because it might have side effects that aren’t apparent in the rush for a resolution. You run the risk of catching the blade, making the original problem worse.
Again, the correct approach is to be mindful of both the urgency and the ramifications of your actions.
At Go Tripod, we provide managed hosting which uses industry-standard tooling, including CI/CD to catch errors before they affect your customers, and to enforce quality checks on any production code. Get in touch if you’d like to know more!
Got an idea for a project?
Need a website? Web-enabled software to streamline your business? Just some advice? A hug?