CTO Compass

🧹 Messy Code, Messy Kitchen – It’s time to do the washing up

Imagine walking into a messy kitchen with piles of dirty pots, pans, plates, and cutlery strewn across all the available surfaces.

The bin is overflowing, and you’re sure you just saw some creatures scuttle across the floor. If this were the state of a commercial kitchen in a restaurant, the health authorities would have shut them down long ago.

Now imagine you’ve been tasked with cooking a gourmet meal in this kitchen. You’ve got your ingredients in hand, you know what you need to cook, and you informed your guests when to arrive based on how long the meals you’ve chosen will take to cook.

That feeling you’ve got in the pit of your stomach right now? That’s how software developers feel way more often than they’d like when encountering a codebase that hasn’t been well-maintained.

Technical Debt

Technical Debt is a common term software folk use when describing this phenomenon to less technical stakeholders, but it’s often misunderstood. While the debt analogy is good when you’re communicating with people who understand the financial uses of debt, many people see it as some kind of excuse or as an exercise in shaming. The term “debt” has negative connotations and can lead to resistance and a lack of progress. Many business people hear “mistakes”, “delay”, and “no progress” when they hear the term.

At Foxsoft, when auditing a codebase, it’s easy to assume that the previous developers weren’t very good, but we ultimately don’t know the circumstances around the code. They may have brought some of it on themselves through a lack of knowledge, expertise or process, but most often, it was because of external pressures.

“We just need to get these features shipped now; we can come back later and tidy up” “We don’t have the budget for that. Can you do a quick fix?”

Reducing friction

A better term I came across recently, which more accurately conveys the message, is friction. In the same way that a messy kitchen doesn’t stop you from cooking, it adds friction to the process. You can still move forward, but the effort required is more significant.

While this directly relates to running successful software projects, the same idea applies more widely to the rest of our lives.

This great quote from Stuart Wilde in Infinite Self captures it perfectly:

“Messy surroundings and an untidy life reflect a weakened metaphysical and psychological state. If you are powerful, you will dominate your life, you will find time to clean up and order things, and you will want to do that as a part of your personal discipline. Mess is the external manifestation of the ego’s disquiet and laziness.” Stuart Wilde

To show up powerfully in all aspects of our work and our relationships with ourselves and those around us requires us to master the fundamentals through discipline.

Remove friction through discipline. In the case of software development, the solution is simple but challenging: constant refactoring by standing firm in a river of flexibility to keep in balance the desire to deliver value quickly but not allowing the level of quality to drop.

Think about where else you experience friction. Is there a physical mess that grates on your psyche or friction in essential processes that cause your team’s output to be lower than it could be?

This week, consider using your Thinking Time to identify an area of friction in your life and commit to reducing it through daily practice, and through that process, you will become a little more powerful.

⚡️ Thinking Time ⚡️

  • What areas of your life have more friction than you’d like?
  • What’s one area of your life that could use some dominating as a simple, metaphorical representation of you stepping into the next-best version of yourself? Can you make that practice part of your personal discipline?