Software Development as a Series of Debits and Credits

In his chapter in Beautiful Architecture, Pete Goodliffe talks about "managing technical debt" as a goal of the software development process. What he's referring to are the "loans" you take from your system when you make last-minute, quick-and-dirty fixes in order to reduce risk or deliver on time. Often, "last-minute" and "quick-and-dirty" are bad words in the development process, but in many cases it's the only choice you have--as long as you recognize that every time you cut a corner you are creating a debt for yourself in the form of future architectural revisions. This is a very cool way of looking at these kinds of "bad decisions." It empowers you to make such decisions under the right circumstances. It gives you a framework to understand how those decisions can work to leverage your scarcities in the present (time, money) by amortizing those costs over time. It also made me think of the flip-side of this metaphor: that carefully-planned software architecture is actually a credit on your account. Every time you take the time (and money) to build something the right way, it's as if you made a deposit that you can draw on later. It's also an investment, as time spent building things the right way now will pay dividends down the road that far surpass the initial effort.