You all know the situation (well I do hope for you you don’t): You need to buy something for X dollars and you need to fill out a few forms have it approved by a few people, then have the purchase department do the purchasing and you get what you ordered at your desk within a few weeks or months. Some times things grow out of proportion and you need a very long time to order something worth $40 and end up having to wait forever and the whole overhead costs you well above $40. If you also count the costs linked to having to wait for the item to be ordered and stalling other activities, it could become much more expensive.
Ordering a $40 license for some library actually was my first contact with the procurement at a big company. For someone just coming from the university it was very difficult to understand ordering such a small software could generate such efforts and costs.
Similarly, some colleague of mine experienced how long it can take to order a plane ticket and how much effort can be spent to get a cheap flight at all costs. The summary is that to book an intercontinental flight which would otherwise require one stop, it took 3 weeks to book the flight, the flight was booked less than 24 hours before departure, the journey involved 3 flights, an airport change and a 2 car drives instead of two flights. This saved about one third of the price on the ticket price but caused the journey to last much longer and involved people working on the ticket for weeks.
Examples in the business world tend to be more extremes that what would happen to a private person. As a private person, the problem is mostly to figure out whether it’s worth driving to a shop miles away to buy vegetables which are 5 cents per kilo cheaper. Or not driving to the closest gas station but checking the price in the whole city and driving over there.
The big question is how much does optimization cost and how much does it save us. It’s actually a pretty simple logic. If optimizing costs more than it saves you, there is no real point. But it’s not always that easy. Consider this:
- You find a point which can be optimized and could save you money. Half way through the optimization, you see that it will not save you as much as expected and you shouldn’t actually not have started the optimization. Now the question is whether you go through with it, rollback, just stop it. It means you need to assess what are the benefits and costs of finishing the optimization in comparison to rolling it back or just stopping where you are.
- If you have a yearly target related to the yearly budget, it is better from a target achievement point of view to have people who are already budgeted for spend days trying to save a few dollars on items which are coming on top of the fix budget. Of course from a global point of view it makes no sense but it does help you achieve this budget goal.
One thing to be kept in mind is that there are basically two ways to improve your financial situation:
- Reduce costs by saving
- Increase income by investing
The first one is limited as soon as you reach a certain level of ROI. The second one has more potential but is more risky as there is no guarantee that the ROI will be there at all.
The same issue occurs when you plan to implement time saving actions. You need to find out whether the initial costs will be recovered in the long term. If you manage to reduce the time needed to perform a recurring activity by 50% and have to spend 300% of that time to optimize it, then it only makes sense if you perform the activity at least 6 times. This is a common question when it comes to writing automated tests. This becomes even more complex when the one time activity requires multiple runs. This happens e.g. when you right automated UI tests and you need to adapt the tests when the UI changes. It all boils down to the savings you achieve by automating, how often the automated tests have to run and how often and at which costs you have to adapt the tests.
Here’s a nice overview from xkcd: