Writing fault-tolerant software has its challenges.

Despite the buzz about social networking, mashups, collaborative filtering, machine learning, and everything else grouped under the convenient label of Web 2.0, writing business software seems to be business as usual: push messages around, present data entry screens, produce reports, and occasionally make people’s work easier by automating repetitive tasks. I fled corporate IT in 2000, believing that business software—especially “enterprise software”—is bulky, complex, and uninteresting.

It can be. Enterprise-wide software must be reliable and fault-tolerant. That’s not simple or easy or even fun to build. Unless you have the time and resources and talent to write and maintain and deploy your own completely custom software (who does?), you use generalized software packages and adapt them to your business. Only the generality of such a framework offers the potential for customization… at the cost of complexity.