Tuesday, July 1, 2008

2nd Class Software

The software industry is chaos. It has always been. Years ago, I seemed to fit in quite well. Chaos described my personal habits and living style. I also liked to think I was spontaneous. Do anything I wanted to do. But, i wasn't very organized. I didn't want to be.
Now, my life is different. I still like to be spontaneous, but I want structure, organization, simplicity. Some may say it's a sign of getting older, or more mature. Perhaps boring. But, the software industry does not seem to be striving for the same things as I do.
Software has always been "hacked". Very little insight and planning goes into software projects. Or, if there is significant planning, the requirements can drastically change. So many factors of change put pressure on the software to become mangled. These pressures are external (requirements change) and internal (short comings of the developer).
What I'm asking for is some elegance. Some standards. Some care in creating these masterpieces. Software is usually coded to fail. Why? Human beings are typically lazy by nature. Humans will take shortcuts whenever possible. This leads to future failures. Especially, if no checks and balances exist along the way. I just came from a seminar where the speaker was talking about "Normalization of Defiance". Now, when he was explaining this, bells in my head were going off. He was saying " if a person short cuts a process, and no immediate reprimand or discipline is felt, then the person got away with the short cut. Now, this short cut may not have immediate consequence, but down the road, could possibly kill someone.
Software is the same way. If you keep talking shortcuts, don't cleanup the code, refactor, try to make it simpler for you, for the next person to maintain it, the code will start to die. What I mean, is the code will become more complicated, and eventually be unmaintainable. And eventually, need a rewrite. This presenter also said, "There's never enough money to do things right the first time, but always money to do it again...". How true is this in the software industry? Rewrite after rewrite happens on the same project. Maybe a different technology, maybe with different people. But, it seems that the same mistakes repeat themselves. No wonder people can't see the root problem, or the reason for the failures.