Please read the previous blog post before this one.
I know that most of you are sick about the quality of the computer programs you have to use. They are riddled with bugs and bad behaviors, and sometimes you'd like to kill the programmers who created them. But you're only seeing those programs after they've been debugged. If they hadn't been properly tested, if they hadn't been designed for debugging, they would be a thousand times worse.
Programmers understand debugging. We know that a series of instructions to carry out a process, no matter how clear and obvious it looks, may be riddled with mistakes. We know how to find most of those mistakes. We know how to arrange the instructions to minimize bad mistakes. We know how to feed sets of prepared data into programs to determine whether they produce correct results.
Most of the rest of humanity hasn't a clue about debugging. And to us, that's a great tragedy, a disaster in the making, and there's nothing we can do about it. You can mix with us, but our skill won't rub off on you. Here are two awful examples:
Spreadsheets often rule businesses. Complex spreadsheets shot through with formulas. Executives bow to their spreadsheets and adjust their company priorities as the spreadsheet results demand. But how many of these damn things are debugged? Many of them have been created by businessmen with no software discipline in them. Those spreadsheets are more likely to be full of bugs than the programs you hate to run. But where a software bug may make you restart your computer, a spreadsheet bug may make a Fortune 1000 company restart its destiny.
Laws are largely signed without any debugging. They are usually modified in last minute compromises and then cast in concrete. Often, the bugs in a law cannot be corrected for political reasons, no matter how dumb they are. I'll give you an example in my next post.
I cringe every time I hear that a prosecutor, or a vendor, has found an imaginative, unexpected way to use a law. That generally means they have found a BUG, a mistake in the original intent. No one knows anything about testing laws before they are signed, designing them to minimize bugs, running test cases on them, applying beta tests to see what unexpected problems they can cause. Laws govern our lives even more than computers, and they are riddled with stupid errors. I'll give you a few favorite examples soon. Legislators may read the final draft and say, “Yes, that's what we mean,” but they don't apply real world tests to their laws before they are signed.
There's got to be a better way. And there isn't.