Tidy First?

Author: Kent Beck Link: https://www.amazon.com.au/Tidy-First-Personal-Exercise-Empirical/dp/1098151240?nodl=1&dplnkId=5361e8a1-102a-4b34-89f3-5f7f22575e29

P66 The nature I learned consisted of two surprising properties:

  • A dollar today is worth more than a dollar tomorrow, so earn sooner and spend later.
  • In a chaotic situation, options are better than things, so create options in the face of uncertainty.

These two strategies conflict at times. Earning money now can reduce future options.

But maybe if you don’t earn money now, you won’t be around to exercise those future options.

Software design has to reconcile the imperatives of “earn sooner/spend later” and “create options, not things.” Well get to how software design interacts with money after we’ve looked at these two effects— the time value of money and optionality-in more detail.


P68 As a purchaser, I want to know how the money is going to flow. “Gazinttas and gaz-outtas,” as my Pappy would have said. To value the software, I can model it as a set of cash flows, some in, some out, but (and this is the key point) each flow connected to a date.

Here’s an exercise to help sharpen your intuition about time/money. Which is more attractive, a software system that over the next 10 years will cost 20 million, or one that will cost 12 million?

It’s a trick question. “Over the next 10 years” is financially equivalent to saying, “Until the heat death of the universe.” The intuition to sharpen is, when you see those numbers, to immediately ask, “Yeah, but when and how sure?”

Feel the difference between “I pay 20 million” and “I get 10 million.” That first deal makes me nervous. Yes, it seems like a good investment, but I’m going to be sweating out those 10 years. The second deal is a no-brainer. I’m guaranteed $2 million profit from day 1, plus whatever I get from investing over the 10 years. I’m excited about the 10 years instead of afraid of it.

In the scope of this book, the time value of money encourages tidy after over tidy first. If we can implement a behavior change that makes us money now and tidy after, we make money sooner and spend money later. (As noted earlier, sometimes tidying first means the total cost of tidying first + behavior change is less than the cost of the behavior change without tidying. Always tidy first in such a case.)

At the scale we are talking about, minutes to hours, discounting cash flows probably doesn’t make a huge economic difference. It does make a difference, though. Practicing with time value will help us in later books as we move to larger scales.

Optionality

Related to options in the stock market. Options at a high-level are the option, but not the obligation, to purchase a share at a particular price. They usually have a cutoff date, after which they cannot be exercised. In software, we can say that we can add value by creating the possibility of new features.