I’ve always been interested in health and fitness because I want to live a long, healthy life. But as I progressed farther into “middle age”, I discovered that the methods I used to stay healthy were not working for me any more. I gradually gained 30 pounds, and I realized I needed to make some changes. I made those changes and am now back to my original weight (for the curious, this is the program I used).
I’ve been involved in many conversations lately about software quality and the reasons why it’s difficult for teams to adopt good quality practices, and this morning it dawned on me that there are many similarities between staying healthy when one matures and keeping software healthy when a company grows. Let’s take a look at some common excuses that keep teams from getting or staying healthy.

“Updating our tests takes too much time”:
Application software is always changing and improving, which means that testing methods used five or ten years ago might not be as effective as they once were. But to completely rewrite a suite of automated tests takes a significant amount of time; time which teams often don’t feel they have. However, NOT updating the tests will result in even more time spent releasing software: the test automation will have many false failures, which will take a lot of time to investigate. This will mean that the team can’t trust the tests, which will result in the need for more manual regression testing. Spending more time on manual regression testing means that the team has even less time available to update the automated tests, and the cycle continues downward.
This is very similar to the excuses given by many people that they don’t have time to exercise. Eventually that lack of exercise will result in being achy and unfit, which means taking extra minutes to climb a flight of stairs or spending a month recovering after a surgery that could have been prevented through fitness.
Make the time to get your tests “fit” now! The investment that you make will compound as your updated tests save you time; time which you can then use to update more tests.
“It’s too hard to learn a new system”:
When you are working for a small company, it’s relatively easy to keep track of all the tests you need to run. But as a company grows, the complexity of the software grows. Where there were once 1000 tests to run, 100,000 tests may now be needed. This is more than one or two people can store in their heads or on spreadsheets. But learning new systems to keep your tests organized will take time and patience. Yes, it would be easier to continue to manage your tests as you always have, but as time goes on it will become more likely that you will miss something and release buggy software.
This is similar to the excuse that it’s too difficult to learn how to prepare healthy food. People become accustomed to getting takeout several nights a week or buying frozen meals at the supermarket. To eat more healthfully, it becomes necessary to learn new skills, like how to grill chicken or toss a salad. It is certainly easier to rely on restaurant food for your meals, but this also means that you have very little control over the quality of food you are consuming.
Learning new systems will enable you to test more accurately and efficiently. It also keeps your mind sharp and uncluttered, which you can put to use in more creative exploratory testing!
“It’s more important to release this feature”:
Software companies need to stay competitive by releasing features that customers want, but that can’t come at the expense of quality. Growing tech debt will eventually result in catastrophic failures, and what customers want even more than new features is software that works. But it can be difficult for teams to say no to aggressive timetables pushed by product owners and management.
This is similar to the pressure that dieters feel when people around them are encouraging them to have a beer or eat a slice of birthday cake. There’s nothing wrong with these things- they taste good and are fun- but over time, that consumption adds up in the form of extra pounds or declining health. Dieters need to remember their “why” and be able to articulate it to others. For example, “I’m working on losing weight, so I’m not drinking alcohol at the moment”.
Similarly, teams need to be able to clearly articulate why a shiny new feature needs to wait an extra month or two before release. Tech debt needs to be catalogued and its impact needs to be quantified so that everyone is clear that addressing the debt will be better for the company in the long run.
This month, talk with your team about things you can do for the health of your software. Do you need a “diet” of delaying a feature release? Or do you need to “exercise” your code by shaping up your test automation? The efforts that you make will help improve your product and ultimately your end user’s experience.