In the first post of this series, The Software Triforce Part 1: Setting a Courageous Goal, I talked about our decision to set a clear, courageous goal for the stability of our platform:
“Not a single donation is lost, and there are no unhandled errors except those caused by bad user input or service outage from one of our integrations.”
Equipped with this courageous goal and new sense of motivation, our team could turn our attention towards the next challenge for achieving stability: avoiding distractions, and taking on the goal one step at a time.
Having a crystal-clear goal should help your team quickly determine which problems are actually blocking you from achieving that goal, and which problems are unncessary distractions.
As you start working on fixing instability, it’s quite likely you’ll be tempted to get carried away and take on several tasks at once. There might be that one function that’s really been bothering you, and now might seem like a great time to slip in a refactor while you’re fixing or documenting a nearby portion of unstable logic. But I’d encourage you to instead:
Have the discipline to focus on small, isolated, and specific stability-related tasks, one at a time.
Returning to the example of my team’s online donation platform, it was clear to us that the most painful source of instability was our logic for processing webhook events received from the payment gateway we were using. As I started addressing the code that was dropping events and erroring unexpectedly, I noticed quite a few other areas of that file that would benefit from a refactor. I could have fixed them. In fact, I really wanted to fix them! But in the long run, it was better that I stayed focused, and exerted some discipline to help keep the team focused on achieving our goal.
It might be hard to do this. All sorts of excuses will float through your mind:
- “What if that thing never gets done?”
- “No one else would do it right…”
- “We’re falling behind schedule, and doing all these tasks at once is more efficient, right?”
But those worries are there to thwart and mislead you; I strongly encourage you not to listen to them!
Take it One Step at a Time
Instead, take one step at a time toward stability. More likely than not, it’ll take a ton of hard work and dedication to make your project stable. But by isolating and dealing with one specific problem at a time, you accomplish several valuable things in the long run:
- You avoid the pitfall of the big cutover rewrite.
- It’s much easier to communicate stability improvements to your stakeholders when you divide it up into smaller, easier-to-explain pieces.
- Although it isn’t ideal to multitask, sometimes the real world demands that we do it anyway. But even if you’re forced to work on both stability and non-stability related tasks simultaneously, taking your stability goal one step at a time is still a great benefit. It means that you don’t have to drop everything and focus 100% of your attention on stability—going one step at a time leaves you the bandwidth for new functionality, client requests, other bug fixes, or whatever else you may be required to do.
- It just plain feels like you’ve accomplished more by doing 4 small, discrete tasks than by doing the same work as one big, abstract task.
- Like any other action in software development, sometimes a change introduces a new problem. Keeping your tasks small and specific makes it a lot easier to track down and address any regressions that might arise.
If you take stability work one step at a time, then:
All of these benefits will empower your work, increasing your effectiveness by removing the distractions that would hold you back from your stability goal.
So, I encourage you to remember these benefits as motivation to not get distracted, but instead to stay focused on achieving your stability goal.
By having the discipline to stay focused and take stability one step at a time, you’ll allow your efforts to have their fullest power.
Have any questions or comments? Have any concerns? Feel free to reach out to us!
Interested in writing secure software? We’re hiring!