Things are the way they are because they got that way
– Ken Boulding
This is a quote attributed to Boulding by Jerry Weinberg in his excellent Secrets of Consulting. My students will tell you that I am fond of bringing it into many a class discussion. It’s somehow more useful to me than trotting out Santayana’s observation about learning history.
We’re all hot for the new, new thing and innovation is always better when it’s disruptive. For all that, when thinking about new technology we would do well to spend time and thought understanding how we got to the current situation. Predicaments today grew out of decisions yesterday that made sense when they were made. If we want to leave fewer predicaments for our successors, we need to understand how those earlier logic trains derailed.
For example, consider the Y2K issue of the late 1990s; the transition from 1999 to 2000 raised the threat that computer programs might fail because of the common practice of storing only the last two digits of the year in computer files and databases. That common practice grew out of technology limits with storage and data access. There was also an unexamined assumption about the likely longevity of the systems being built in the 1960s, 70s, and 80s. Why worry about a problem that was decades in the future; surely the programs would be replaced long before then.
There seems to be a deeper issue at work that is troubling me. Design is always driven by constraints and requirements; what limits exist on what you hope to do. We fail to appreciate how technology constraints evolve very differently from other constraints. We treat certain limits on our designs as if they were integral to solving the problem at hand when they are actually temporary speed bumps in the technology. We solve the immediate problem—the dates in our files fit the space available—at the expense of creating a bigger problem later.
We talk of “technical debt” but I don’t think the notion works with less technical decision makers. Debt suggests you trade future interest payments for a solution now. What we do instead is lock the organization’s future within boundaries that disappear and make us look stupid to those who designed smarter.
Organizational decision making is often hampered by shortchanging the future. We don’t seem to have good methods for avoiding these mistakes in technology. Temporary technology limits become design constraints which become design assumptions that get baked into design patterns and then outlive their usefulness.