Mark Galli describes himself as an evangelical Catholic

Evangelicalism in America is nearing extinction due to the movement’s devotion to politics at the expense of its original calling to share the gospel, according to Mark Galli, former editor-in-chief…

Smartphone

独家优惠奖金 100% 高达 1 BTC + 180 免费旋转




Technical Debt is like a messy kitchen

I saw a great metaphor for technical debt the other day in a presentation on agile architecture. The speaker likened technical debt to a messy kitchen and I wanted to explore the idea further here.

In the messy kitchen metaphor, the mess of the kitchen represents the debt. When you start a project (think greenfield), your kitchen is clean and orderly. Pots, pans, and utensils are put away where you would expect to find them. Working surfaces are free of clutter. Then when you start cooking (or coding) you start to make a mess. A small project probably makes a small mess. Like cooking an egg. You might need one pan, a spatula, maybe a bowl into which to crack the egg. Maybe when you crack the egg it spills a little. You end up with a few dirty utensils and a small mess.

At this point it wouldn’t take much to clean up this debt. Wash a few dishes and wipe the counter. You could even move on without cleaning up the debt. As long as you don’t need that pan or spatula and you had a large enough working space to avoid the mess you could complete future projects. Now we could move on to a larger project like baking cupcakes. Now you pull out more bowls, more utensils and appliances, more ingredients, and if you are like me, the whole process is a lot messier. Flour tends to get everywhere and I will undoubtedly spill some sticky liquid substance. We can get the job done, and probably get it done in a reasonable time. But now we have a messy kitchen (more debt).

There are a couple of ways to deal with this debt. First, we could just ignore the debt. Be happy that we finished the job and enjoy our cupcakes. We could leave the mess for the next person to use the kitchen which would obviously impact them and their ability to cook anything else.

Another option would be to clean up and put away all utensils right after we use them. Wipe up small messes immediately after they are made. Then we are only dealing with a little bit of debt at a time and it doesn’t take much to clean it up. Plus with this approach you are almost guaranteed that if you need a utensil that you already used, it will be clean, easy to find, and ready to go. This approach takes a little bit of focused effort and adds a little bit of time to the overall process of baking the cupcakes. But on the flip side it allows us to be continually baking at a consistent pace. Once we make it part of our normal process it almost becomes unnoticeable.

A third approach would be to just ignore the debt until the end of the project. Then spend more dedicated effort to clean the kitchen, before doing any more cooking. We would have to hold off any further baking until the kitchen has been cleaned and ready to use again. Depending on the number of cupcakes we had to bake, the cleanup might be a daunting task and we might be tempted to only clean some of the kitchen before taking a rest or starting in our next baking project. Thus leaving some mess. As you might imagine, if you continued this trend the mess would grow after every project. Eventually everything and every spot in the kitchen would be dirty and we wouldn’t be able to cook anymore.

Now my question is, assume the kitchen was left a mess, like in the first approach. Or the kitchen was left with half a mess like in option three because we decided to only tackle half the problem. How easy would it be to start a new project like cooking dinner for the family? It might take extra time to find the utensils you need since they weren’t properly stored. We might find that ingredients were completely used and not replaced. Or that needed utensils are dirty and need to be washed before we can continue. All of these issues limit your ability to efficiently cook and might result in a significant delay in dinner. That’s a recipe for disaster in my household (pun indented).

Also keep in mind that if the mess in the kitchen continues to grow, at some point you will have no option but to stop any cooking and clean the kitchen. At the very least you’ll have the clean the parts you need for your next project.

I’ll leave you with these thoughts. How do you keep your kitchen? How would you want the kitchen to look when you are starting a new project? Like this?

Or like this?

Add a comment

Related posts:

Finding comfort where we overlap

During last some weeks I have been in discussions with various partners and customers in Europe, Asia and USA region about APIs and trying to understand their challenges and problems. I started to…

Comfortability

Over the past two and a half months I’ve moved halfway across the country, started my first full time job, and learned so much about myself along the way. One of the things I’ve been learning is that…

The Answers Are in Front of You

Decide to buy a black BMW and it suddenly appears left and right. It’s driving down the freeway. It’s parked at the grocery store. It’s idling at the stoplight. The same applies to your profession…