I have been thinking about a similar idea for a while now. Would love to get some feedback. Basically, one can view the government (as a concept, not the specific people) and the set of laws, from the Constitution down, as a complex software system. To justify this analogy, I think of the fact that the laws define the behavior of the society (the system), and interact with each other in ways both expected and unexpected. There are scalability issues, e.g.: laws that were meant to be applied to only certain circumstances bleed over to others impeding progress (software patents), and the people of the government are supposed to act as a sort of CPU that both executes the laws/code and enforces integrity constraints when a fault happens (typically done by the judicial branch in the US).
Now that we've established that... what a poor way to write software. First of all, making laws in the US is an additive process. As a developer, you approach a system that is large, intertwined and sometimes contains large streaks of spaghetti and you are asked to make a small tweak. You can refactor the system to accommodate the new paradigm, or you can simply hack on the feature on the peripheral. On top of that, you are not the permanent maintainer of the system; you are a contractor how is only working on it temporarily. Lastly, you won't be the one using the feature (maintaining the law or affected by the law).
Next, everything is a law in the US. I will use a made-up example here to not stir up controversy with actual examples: the legislative branch may pass a law that says "the Federal Highway Administration" shall oversee the construction of I-999, a new highway through states XX and YY". That's not a law, that's the FHA's job. The law should delegate, and not worry about what the FHA is doing. It should of course include the integrity checks: if the FHA does a poor job, the people responsible will be held accountable. Less laws leads to less complex system and less unintended consequences.
There is also lots of legacy code, that nobody seems to want to clean up. First, there are the ridiculous laws like "In Missouri, It is Illegal To Drive With An Uncaged Bear (Caged Bears Are OK)". Legacy code weighs you down and makes things more complex. There are also laws such as the "stand your ground" law in Florida where you can get more of a sentence for discharging a firearm into the air (warning shot) than shooting someone dead.
The solution seems to me to be in getting some system architects into the White House, Congress and Senate. The system architects, developers and ops people in charge should think long-term. Yes, we are in a recession now, and yes, a large number of these individuals have to start worrying about campaigning in less than two years, but while they may be in and out, we are stuck with the laws they pass and enforce for pretty much an indefinite amount of time. In fact, encouraging reduction of the lawbase should be a part of the system. Refactoring should be encouraged, so long as it is done properly; I know that's a vague term, but currently, so much of the system is off-limits/a third rail, that nothing seems to get done about major issues.
Another solution would be to add expiration dates to laws, and the more specific the law, the sooner it expires. That way, pain in the ass laws that keep coming up should be done away with.
Comments
I have been thinking about a similar idea for a while now. Would love to get some feedback. Basically, one can view the government (as a concept, not the specific people) and the set of laws, from the Constitution down, as a complex software system. To justify this analogy, I think of the fact that the laws define the behavior of the society (the system), and interact with each other in ways both expected and unexpected. There are scalability issues, e.g.: laws that were meant to be applied to only certain circumstances bleed over to others impeding progress (software patents), and the people of the government are supposed to act as a sort of CPU that both executes the laws/code and enforces integrity constraints when a fault happens (typically done by the judicial branch in the US).
Now that we've established that... what a poor way to write software. First of all, making laws in the US is an additive process. As a developer, you approach a system that is large, intertwined and sometimes contains large streaks of spaghetti and you are asked to make a small tweak. You can refactor the system to accommodate the new paradigm, or you can simply hack on the feature on the peripheral. On top of that, you are not the permanent maintainer of the system; you are a contractor how is only working on it temporarily. Lastly, you won't be the one using the feature (maintaining the law or affected by the law).
Next, everything is a law in the US. I will use a made-up example here to not stir up controversy with actual examples: the legislative branch may pass a law that says "the Federal Highway Administration" shall oversee the construction of I-999, a new highway through states XX and YY". That's not a law, that's the FHA's job. The law should delegate, and not worry about what the FHA is doing. It should of course include the integrity checks: if the FHA does a poor job, the people responsible will be held accountable. Less laws leads to less complex system and less unintended consequences.
There is also lots of legacy code, that nobody seems to want to clean up. First, there are the ridiculous laws like "In Missouri, It is Illegal To Drive With An Uncaged Bear (Caged Bears Are OK)". Legacy code weighs you down and makes things more complex. There are also laws such as the "stand your ground" law in Florida where you can get more of a sentence for discharging a firearm into the air (warning shot) than shooting someone dead.
The solution seems to me to be in getting some system architects into the White House, Congress and Senate. The system architects, developers and ops people in charge should think long-term. Yes, we are in a recession now, and yes, a large number of these individuals have to start worrying about campaigning in less than two years, but while they may be in and out, we are stuck with the laws they pass and enforce for pretty much an indefinite amount of time. In fact, encouraging reduction of the lawbase should be a part of the system. Refactoring should be encouraged, so long as it is done properly; I know that's a vague term, but currently, so much of the system is off-limits/a third rail, that nothing seems to get done about major issues.
Another solution would be to add expiration dates to laws, and the more specific the law, the sooner it expires. That way, pain in the ass laws that keep coming up should be done away with.
What does everyone think of this analogy?
What's with the downvotes? I don't think this os off topic and I don't see how this wpuld offend anyone.