What Bodybuilding Teaches Software Developers About Technical Debt | by David Van Fleet | Apr, 2022

Bodybuilding is intense. So is tech debt! What classes can we be taught from bodybuilding relating to software program improvement?

Photograph by Victor Freitas on Unsplash

Product managers, engineering managers, and particular person contributors can all be taught so much from methods utilized by bodybuilders. Making use of these methods in our groups can result in a lean, imply, software-building machine!

In its easiest type, bodybuilding coaching might be outlined like this:

whereas (physiqueNeedsImprovement) 
bulk()
lower()

Bodybuilders undergo phases of bulking and chopping, repeated till they’re pleased with their physique.

Throughout the bulking part (usually fall and winter time, once we’re bundled up in cumbersome sweatshirts and jackets anyway), a bodybuilder will concentrate on gaining weight.

In the end, the objective is for that new weight to be largely muscle mass, however they are going to all the time additionally placed on some fats on high of that new muscle. That fats is tolerable as a result of the principle focus is including that new, stunning muscle mass and the one approach to do this is to eat so much and prepare exhausting!

Throughout the chopping part (usually main as much as and all through summertime — seashore season), the main focus shifts to eradicating as a lot of the fats as doable. Doing so will expose that onerous, striated muscle {that a} bodybuilder labored so exhausting to achieve through the previous bulk.

This part contains strict weight-reduction plan and a whole lot of cardio. Similar to the bulking part, bodybuilders don’t anticipate this part to be excellent. They know that along with shedding fats, they can even lose some muscle mass. However so long as the result’s a chiseled, lean physique that’s higher than it was on the finish of the final lower, that’s okay.

So what does this educate us about software program improvement and tech debt?

Clear, maintainable code is lean muscle mass. It’s spectacular, stunning, and one thing all of us need. Tech debt is fats. It looks as if regardless of how exhausting we attempt, there’s all the time just a little bit lingering on high of our clear code, hiding the great thing about it.

If we use the rules of bulking and chopping to tell our technical decision-making, we will develop a balanced strategy to dealing with tech debt in our codebases.

We will evaluate the bulking part to main function improvement. The product needs to get the newest function constructed and launched as shortly as doable. They know that doing so means extra income, so that they push for fast improvement and testing. This inevitably results in the creation of some tech debt.

Similar to the bodybuilder is okay with placing on just a few additional kilos of fats throughout an intense bulk, devs ought to be okay with including just a little little bit of tech debt through the improvement of a big function. It could be impractical to delay each function in order that we will ensure each single code change or addition is totally excellent.

If a bodybuilder had the mentality that each bulk wanted to be completely excellent and it was unacceptable so as to add a single ounce of fats, he’d ceaselessly be caught with rooster legs, spaghetti arms, and a toothpick torso.

As a substitute of seeing the chance so as to add muscle mass, he’s so afraid of just a little fats that he by no means makes these positive aspects. Devs who’re adamantly in opposition to a single ounce of tech debt decelerate the progress of their groups, and will forestall positive aspects of their product.

It’s often simple to persuade a product to enter a bulking part because it means extra options and more cash, but it surely’s exhausting to persuade devs because it means including fats to the codebase. Groups ought to compromise on what options ought to be labored on, and the way a lot tech debt we’re snug with taking over to get it executed.

Reducing might be in comparison with efforts to take away tech debt (or put in additional product-friendly phrases — “sustainability initiatives”). This part is simply as essential because the bulking part, but many groups discover it tough to persuade product and administration that it’s wanted. Equally, many beginner bodybuilders are ceaselessly bulking, as a result of they need to simply pound down the energy and clang-n-bang within the health club, however by no means need to weight loss program and trim down.

If a bodybuilder by no means lower, he might get robust and big, however he definitely wouldn’t have a lean, spectacular physique. The identical is true with our software program. We might have a ton of options and accommodate all of our prospects’ wants, however the looming tech debt will ultimately meet up with us.

The event will decelerate as tech debt builds as a result of it’s more durable for devs to work by means of it. Including new options turns into a slog, as a result of untangling the mess of code that’s exhausting to know and disorganized takes up extra time than really constructing the function. True, we added a ton of options by consistently “bulking” however the result’s that we’re a fats, out-of-shape bodybuilder embarrassed to be standing on stage in his speedo.

It’s often simple to persuade devs to enter a chopping part, however exhausting to persuade merchandise. To any person with out a lot technical experience, cleansing tech debt can appear mysterious, and it isn’t actually apparent what the advantages are.

Groups want to obviously clarify the advantages of those sustainability initiatives in sensible phrases (quicker construct instances, extra constant UI, improved accessibility, simpler improvement of future function requests, happier devs, no matter!).

Similar to a bodybuilder might must persuade himself {that a} strict weight loss program and lengthy, boring hours on the treadmill are value it, groups must persuade themselves that these sustainability initiatives will result in a leaner, meaner codebase that advantages everyone long-term.

Nevertheless, we will’t all the time be in a chopping part. If you happen to’re an everyday gym-goer, you might acknowledge those that are caught in a relentless lower — tremendous lean, however hardly any muscle and never very robust.

Devs could also be thrilled that every one the code is clear and completely maintainable, however at what expense? If we’re so afraid of tech debt that we by no means add options (or add options tremendous slowly to stop gaining the slightest quantity of fats), our product won’t ever get to the place we wish it to be.

We’ll be leaving success/income on the desk as a result of we didn’t need to push ourselves to develop with a bulking part that will introduce just a little little bit of tech debt.

A profitable bodybuilder has a balanced view of how he’ll attain his objectives. When he wants so as to add muscle, he’s okay with additionally including a little bit of fats. When he must lean out, he’s happy with shedding just a little little bit of muscle mass. So long as the tip result’s a web constructive, and his physique improves, he’s comfortable. We will have the identical perspective on our groups. It’s okay so as to add a little bit of tech debt once we’re enhancing our product and including options. And it’s okay to have a chopping part the place we eliminate some tech debt, figuring out that we will not be pumping out new options as shortly throughout that point. So long as the online result’s that our codebase is consistently enhancing, the entire group might be comfortable!

More Posts