Fitness and software development, building habits in the way we build software

Erik Ivan Villa Orozco
5 min readDec 30, 2020

“The greatest gift you can give someone is the power to be successful. Giving people the opportunity to struggle rather than giving them the things they are struggling for will make them stronger.”
- Ray Dalio

The opportunity to struggle is something I’ve learned to appreciate over the years. I’m more aware and grateful for those things I can’t buy or cheat, lifting weights being the most honest of all. I’ve been lifting weights and playing tennis for around 15 years, on which many smart people taught me about technique, nutrition and helped me with my objectives.

I’ve also found many people I admire for their professional skills on the same fitness and nutrition track. Even watching videos of conferences, I see fit people talking and respect them even more, somehow you can cheat the talk but not the body. I see patterns, fitness, and software development are about experimentation, understanding, and learning. That’s why, in my opinion, people in tech are often interested in fields such as fitness, arts, or cooking, for example. These activities offer creative challenges. Thus they attract curious, disciplined minds.

From recognizing those patterns among people I respect and what I do at my work, working with high-performing development teams, I took a step back to understand how I built that knowledge and, more importantly, the behaviors to automate it, so I don’t have to make a conscious effort to train, eat or sleep well.

What you’ll see next is a set of analogies I found in the way we build software these days and how to develop the habits needed for a healthy life in my experience. What’s important here is the behavioral change; never in history, we’ve had as much information as today, and it alone is not helping. Everything we need for a healthy life has been there for a long time, there is material to read for months or years, but we know, information does not change behavior.

What can we learn from the software industry?

Many years ago, we started building software following formal engineering techniques, resembling civil engineering and architecture, which follow a rigorous but somehow reliable process of understanding, designing, planning, executing, and delivering. It was logical for software engineering too, but it has proved wrong every time we execute waterfall projects.

What works great, though, is a change of habits in how we build and ship software. This behavioral change enabled the so-called “digital native” companies to react fast to market needs and deliver value faster than ever before, disrupting several industries. It has also changed how software engineers learn new technologies and solve problems.

Here is a mapping of how some of those practices could help us build better fitness and nutrition habits in the same way they’ve helped the software industry.

About food

CI/CD your food

Continuous integration and continuous delivery refer to the chain of processes (pipeline) in which code is merged, validated, built, packaged, tested, and deployed. The existence of these pipelines allows development teams to deliver value quickly and reliably.

Think of food as in a CI/CD Pipeline with the following considerations:

  • Build: Keep in mind the bundle size

You can review your plate in the same way we review code and get rid of dead code and unnecessary dependencies. Eating stuff you don’t need is as stupid as shipping code with an if(false){} statement just because it was there. It’s even worse because, in this case, the unnecessary stuff will cause long term problems.

  • Test: 80% coverage

We know 100% coverage is sometimes a waste of time, the more, the better, but 80% is good enough to get the value. Focus on getting at least 80% of high-quality food during your day.

  • Deploy: Reject broken builds and fix bugs

Your food may have bugs, not literally, I hope, but unacceptable elements on it that shouldn’t go through. Fix your food before you eat it!

Know your interfaces

Coding to interfaces is a well-known technique to understand the behavior of an object or an API. In terms of food, all you need to know is three interfaces: proteins, fats, and carbohydrates. None of them bad when used wisely. To use them wisely, think of the requirement, in this context, your body needs, then instantiate just enough to satisfy it.

Think of the famous quote from Joe Armstrong, creator of Erlang, on software reusability:

“You wanted a banana but what you got was a gorilla holding the banana and the entire jungle”

Do you really need a bunch of sugar on top of your carbs? or a ton of carbs wrapping your protein?

About training

Build your radar

In the same way, we go through the hello world exercise when learning new programming languages and frameworks, then decide to try, adopt, or hold (as in a thoughtworks radar). You could adopt the same mindset to explore and understand different activities until you find those who better support your long term goals. It is ok to reject sports or fitness activities you don’t like. When you find those that work for you, it will be as comfortable as writing code in your favorite language and tools.

Avoid the latest js framework

The fitness world and the javascript ecosystem share some commonalities, such as the latest trend that won’t be a trend in three months. Some are dangerous and represent a waste of effort in retrospect.

Analytics and monitoring: You are the user

You are the user of the food you deployed, know what’s in your body, and use it to build muscle, speed, agility, or resistance, whatever your goal is. Monitor what you eat and what you do, track yourself, understand how your body feels, and close the loop with feedback on your eating and sleeping habits.

Conclusion

Software and fitness build upon the same structure. Whether it’s a distributed computing system or an optimally balanced physique, small well-structured changes packed together through repetition and time build complex systems.

You are the stakeholder, designer, architect, tech lead, product owner, and user of this platform. Build yourself a high-performing, maintainable system/body that works as good as possible for the years to come.

My question for you is: what analogies you can make to change your behavior about how to eat, sleep, and train? Find those analogies from whatever field you understand and use them to improve your habits.

--

--