When talking about technical investment, a metaphor I like is that of a restaurant kitchen. You can think about engineering teams as the back of house of a restaurant. They are working behind the seasons to deliver delicious food to their diners. The diners are the end users of a piece of software. They don’t actually care what’s going on in the kitchen as long as they are getting food on time that tastes good. That is the primary success of the restaurant.
But what happens in the kitchen still matters, just indirectly. If we are only optimizing for the short term of producing good food quickly, eventually the dirty dishes will stack up, the floors will get dangerously slippery, and we will run out of ingredients. That will impact the speed and quality of the food the kitchen is delivering but by the time we notice that, there will be a mountain of maintenance debt to work though and our diners won’t be willing to sit around for us to address it all.
1. Good kitchen practices
That’s why it is important to maintain good practices to keep the kitchen clean and running smoothly. We need to make sure there is process in places to clean dishes and mop the floors and order more ingredients. Even though the diners won’t notice at first, they will eventually notice when it is impacting their meals and then it will be too late. Keeping things tidy and orderly as an engineering team develops is an important element of continuing to deliver high quality software on time. Think about the difference between cooking in a dirty kitchen versus a clean one.
2. Should we invest in kitchen appliances?
Okay, our kitchen is clean but we’ve noticed that our diners love to order our biscuits. We are making biscuits constantly and kneading dough takes time. If we could make the biscuit making more efficient, we’d have time to focus on other more elaborate dishes we want to make and experiment with! Should we buy a machine that will knead the dough for us? That will cost a lot of money upfront but over time we would get a return on the investment of the time it frees up for our kitchen staff. Now our diners don’t care if we have a kneading machine or not. If your only metrics you care about are direct impact to the customer, the initial investment won’t be worth it. But we have to appreciate the indirect value for customers. When our kitchen have a kneading machine, they will be able to make quality biscuits more consistently and be able to introduce new more complex and interesting dishes. This seems worth it! We should make this investment.
Now say, our diners only order our biscuits occasionally. We are only making a couple a day. Should we still buy a kneading machine? Probably not, the time we’d be saving by having it would not be as much. It would take longer for that initial cost to be paid off. Could we spend that budget on something that gives us a bigger return? Maybe a larger dishwashing which is something we know we will use all the time and save us time.
These are the calculations and discussions we should be having when talking about expensive technical investments. Technical investments are important and necessary and do impact the end user but they are not all equal.