Saturday, February 21, 2009

A Breed Apart (2): Computer Programmers:

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.


Martin Langeland said...

So, are you suggesting that just because a machine can tell the difference between on and off, very fast, I still have to ask the right question before I have a chance of getting a correct answer?
--ml said...

No, that's not what I'm suggesting.
- PB

jgfellow said...

Hey! I resemble that remark! As a long time creator of Financial Spreadsheets, I can tell you that a very important subset of spreadsheets do get debugged. Those that get passed to auditors (of all stripes) undergo a lot of scrutiny on both sides of the hand-off. I've been asked about specific numbers many times, forcing me to go back and debug.

Not all spreadsheet get this level of validation (our moniker for debugging). On the other hand, I will say that there is an intense amount of scrutiny that goes into those spreadsheets that lead to the biggest decisions.

Of course, after Madoff and Stanford, I'm hardly in a position to trumpet our success... said...

jgfellow, you don't count. You've actually worked as a software developer. You know what you're talking about.

There's a shortage of people like you.
- PB