Friday, October 25, 2013

Legal system for software developers.

Hello there. You as geeky software developer want to know the philosophy behind legal system? Let me explain it all to you.

To make it easier let's say that menacing Code of Laws is simply "code". Code is logic expressed formally. Suppose certain borrower refuses to return money to the lender. We as society need a set of formal rules that let us resolve the conflict. Just like our software needs code to resolve conflict if certain image is too big for its page. Sure enough there are many variations in each case.

Depending on your location your local laws may represent a codebase with pieces from 500 years ago and layers of patches on top of it. As developer you know how much misery can be brought by 20 years old software that can not be replaced. Here we talk almost 2 orders of magnitude more.

Such code is mission critical contributing to fear of change and especially fear of removal. You'd rather have 30 corner cases than one generalization. You'd rather keep obsolete pieces just in case.
And sure enough there are many cross-references and inter-dependencies all over the code.

The lawmakers are like legacy system developers while practicing lawyers are administrators in the field. The administrators know all the quirks and hacks of the system, are aware of inner workings that could drive simple people mad. Developers hate the current state of the system, have vague memories of the rationale behind part of the system and once hoped to change it for the best. Sure enough some developers are ready to put a backdoor into the system if the pay is right. I believe that while some of the law-makers are lazy or evil most of them are not, at least on the West. They are simply shocked by the pile of legacy rules. Remember the first time you as developer were asked to maintain a module in a 10-million-lines of code project and realized that your module affects 20% of the entire system?

Voters give power to law-makers in hopes for greater human friendliness and greater efficiency of the system. Usually such hopes are not fulfilled. Customers that pay for legacy software upgrades are rarely fully satisfied.

Software administrators are often seen as people who do no real job and get too much easy money, same applies to lawyers. The legal agreements are similar to scripts written by administrators, ugly, seems to work, may have side effects and you can't work and live without them.

Usually no one is guilty. Nor the lawyer, nor your candidate, nor you administrator, nor the programmer. That's how the world works. It's a consequence of incredible complexity of the task system aims to achieve. It takes a genius to improve such a system.

Please leave your thoughts in a comment.

No comments: