This weekend I received notice that a certain nameless interviewee has filed a Defamation of Character lawsuit for a recent blog post. Frustration aside, this legal circumstance got me thinking; I am technically bound by all the rules of law—federal, state, and local. Yet there is no conceivable way I could know all these laws. I am fundamentally bound by more law than I could know in a lifetime. Even if I limited myself to a particular sub-field of law, and even if I limited myself to recent law, there is more tax law produced annually than I could conceivably read in a year.
The legal framework of the United States begun simply. The constitution provided general guiding principles, but most particulars had not been fleshed out. Verdicts were at the discretion of the moral compass of juries, who often deferred to English Common Law until America’s legal framework became comprehensiveness enough to stand on its own. Over the years, decades, new laws continually got built upon old laws. Extensive [over]reactionary laws (fixes) altered the system in response to questionable verdicts in trials (bugs). Entirely new fields of law emerge (features) as the culture and economy of the country grew. The system becomes progressively more complicated, with no conceivable force to simplify it. An obtuse, interwoven set of legislation and judicial precedent define the behavior of the system, often failing to maintain an intelligible high-level structure.
In the world of software, we call this situation a Big Ball of Mud. When a lawyer can spend days attempting to find a law or judicial ruling pertinent to his case, then you have a system too complicated for its own good. It may be fully featured, but it is difficult to maintain, and expensive to understand.
So how does one address a system of exponentially increasing chaos? While meeting with my lawyer, Terry Goldberg, this weekend, I took a minute to interview him on his opinions of the process:
Kurt: In the world of software, a product that is grown ad-hoc over many years can often become unnecessarily expensive to maintain. Do you see analogous behavior in law?
Goldberg: Without question. There are more lawyers now than at any point in our nation’s history. We constitute a larger percentage of the working force, yet can charge more than at any point in the past. And I think a lot of this has to do with the fact that there is more law now than there was at any point in the past: congress has passed more bills since 1976 than were passed in the preceding 200 years.
Kurt: Do you believe this is how the system should operate?
Goldberg: It depends on what you seek from it, but as a system of regulation and common utility, I think it has become too obtuse, and continually worsens. I got into law because of a belief in justice. But indecipherable law colludes a sense of what is just. I would love to defend my clients based upon the ethics of their actions, but that is simply not how cases are decided. In many cases, there is an obvious right or wrong party, but it is endlessly difficult to find the text that proves their legality.
Kurt: In essence, you don’t know where the relevant code is.
Goldberg: It depends on how specialized you are and on the nature of the case, but quite a lot of my job entails searching for precedent.
Kurt: Is there any way to change this? To simplify the beast?
Goldberg: Many countries go through legal resets. Switzerland re-wrote its constitution as recently as 1999 to prevent the need for an endless series of legal patches. But once a system has grown beyond a certain size, these kinds of reboots are impossible. Too much of the country becomes shaped around the law. If you reset the law, you reset these institutions, which can be dangerous and incredibly expensive.
Kurt: So what happens then?
Goldberg: It will grow more and more complex until it reaches a breaking point. When the demand for lawyers is so high such that the effective productivity of the institutions they guide is hindered, then there might be a demand for a simplification. Until such time, it will only get worse.
As my readers know, I’m fond of overstretching metaphor, but I see many similarities in programming and law. Each theoretically produces a codified framework whereby inputs (events in law) produce predictable outputs (rulings). Much like law, early maintenance is critical to keeping projects sensible. Once they grow past a certain size, it becomes impossible to simplify them down—there is simply too much dependency. Many businesses will simply keep patching a system until it collapses beneath its own weight—until fixes and improvements are so convoluted and time-consuming that there is no conceivable way to match the pace of market demands.
At that point, they will scrap the software and start over. They will write a new constitution.
Once a Big Ball of Mud is created, there is rarely hope to recover it. One can attempt to isolate parts of it, but if the system were easily made modular, it wouldn’t be a Big Ball of Mud. Early and frequent refactoring is essential if a system’s goal is longevity. But as much as programmers may wish for that goal, it very rarely is a business priority in an industry that redefines itself every few years.
As long as hardware is improving at a rapid pace, software will be rapidly evolving, and thus taking the time to refactor to ease long-term maintenance is not always worth it. Any project should attempt realistic expectations for their timeline, and effort should always be made to grow them in a sustainable way. But each business has a different set of priorities, and it is often more financially beneficial to release now.
But the advantage of software is competition: if your product lags because of its design, someone else will eventually replace you. One has incentive to code quality, or market share will decline. That is a flexibility law does not offer.
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment