There’s been an utter collapse in the investment banking sector of the US economy over the past few weeks. It’s truly sad that such a thing has happened, but I don’t buy the line that nobody saw this coming. Either way, that subject isn’t really the focus of this post.
According to many, the ill-regulated system of repackaging bad home loans as other instruments allowed banks to leverage themselves too much with bad debt, and when one very large domino falls (and by that, I’d be referring to dominoes named AIG and Merill, amongst others), the whole system destabilizes and risks collapse as well. This sounds an awful lot like other situations I’ve seen in my own line of work. Suppose, instead of financial systems, I replace that with software systems, and instead of banks being dominoes, I say classes or functional systems.
The economy overall is facing a dependency management problem! Sounds funny, right? However, it’s striking the similarity between financial markets and spaghetti code right now. Think of a big, fragile system – if one part collapses or starts behaving in weird ways, the whole system can go down. “Even CEOs don’t understand these investment vehicles” has been a phrase I’ve heard bandied about as of late. That sounds an awful lot like “We have no idea how that COBOL system works, but it’s essential in our business.”
Proper dependency management was and still is a big problem in the practice of programming. In well functioning systems, dependency management is controllable. Good interfaces and proper system design, along with oversight in the form of design and code reviews lead to systems that function well over time. This is why, in theory at least, good system architects could make for good finance regulators.