The United States is built on the foundation set by the Constitution and Bill of Rights – a combined fourteen pages of text if put into a modern word document. Now, 225 years later, the Code of Laws of the United States is more than 200,000 printed pages of additions by generations of lawmakers – and that only accounts for federal law, not state and local. Unfortunately, just like with software, if lines of code are added while the architectural organization degrades, an ever-increasing amount of time and resources will be required to make the system function.
Good developers will always look for the most efficient solutions, keeping utilization of system resources as a high priority. Legislators, conversely, tend to be influenced more heavily by external factors than the effect of their work on overall system efficiency. As a result, an increasing web of interconnected laws make updates arduous and resource-heavy. Between 1942 and 2009, the number of bills passed by US Congressional sessions has decreased by roughly 50% while the cumulative length of bills passed has increased by 350%, according to Slate Magazine’s analysis of data from the Senate Library.
Large code bases and data sets are not the problem – the issue is with mismanagement of additions and feature updates. Google, for example, still manages to deliver billions of search results in a fraction of a second, even though there are some 200 times as many websites as there were ten years ago. Users can even do a virtual walkthrough of most of the developed world with negligible load time on a broadband connection.
US legislation tends to be more like iTunes – a patchwork infrastructure that has turned a once-great advancement into a bloated conglomeration of useful features slowed by unnecessary and outdated additions built up over time. Bills 1,000 or more pages in length are not out of the ordinary, requiring vast amounts of processing power in the form of overworked interns and other congressional staff. In fact, lawmakers are often incentivized to make legislation more convoluted to help hide pork barrel spending that favors constituent groups and voting blocs.
Congress could learn from the foresight required to be a good developer. Complex tax laws in the US require citizens to dedicate significant amounts of time to preparations of their tax returns, as well as a level of expertise that is often insurmountable for those unable to afford professional assistance. In effect, these loopholes that reduce government income by $900 billion annually are similar to software failures. Developers have to foresee what could go wrong with software, catching errors and closing security holes to manage user experience and system integrity. Since the government lacks competition, the priority placed on user experience is inherently reduced.
Certainly not to be underestimated is the difficulty and complexity of managing the largest economic and military power in the history of the world. When a government makes laws, they can’t test the updated systems before releasing the new version – the only feedback loop comes from real world interactions, often in the form of critical errors. If legislation was written more like a software system, with higher priority placed on modular design and reduction of inter-dependencies across systems, for example, issues that arise after deployment could be more easily updated.
Good development teams will also place a high priority on commenting code, or leaving short notes in standard human language about what each piece of the code does and/or how it works. This makes onboarding new team members easier, as well as review of the code much faster when updating. A dependable, non-partisan overview of bills could similarly make legislation more digestible for current and incoming lawmakers, as well as the general public.
The disconnect between development best practices and legislative realities may stem from the fact that 45 of 100 US Senate seats are held by lawyers and just one by an engineer – a trend that has persisted throughout Congressional sessions. We may already be far too tangled in the web that’s been created over more than two centuries to ever find our way out, but if we’re going to keep writing new code we might as well try to learn from those who already do it well.