Sunday, August 12, 2007

AntiPatterns: AntiHype

Software was supposed to make digital hardware much more flexible. Instead, software technology has promulgated a series of failed promises. The promise that software would make hardware flexible was only the first. What went wrong? Within our careers, we have seen any number of software fads come and go that were successful in a limited way for specific aspects of software development, but did not deliver the promised “silver bullet”

Remember some of these major trends?


Structured programming was supposed to improve software productivity and remove most software defects.



Artificial intelligence was supposed to make computers much more capable.



Networking technologies were supposed to make all systems and software interoperable.



Open systems and standards were supposed to make application software portable and interoperable.



Parallel processing was supposed to make computers much more powerful and scaleable.



Object orientation was supposed to solve the problems of software productivity and adaptability, and make software highly reusable.



Frameworks were supposed to make software highly reusable and software development much more productive.

These claims sound like a broken record; every new software fad makes similar promises. History has not been written on many of today’s software buzzwords, but their claims sound very similar to what we have heard before. Current examples include:

The Internet

Component software

Distributed objects

Business objects

Software reuse

Scripting languages

Software agents

let us quickly point out, it’s not just the vendors who are at fault. There are several things that we (application developers and managers) can do to mitigate software problems. Regardless of the vendor hype, it’s really how you use the technology that determines your success.


The Truth about Software Technology

Eighty-four percent of software projects are unsuccessful, and virtually all deliver stovepipe systems. Why?

Vendors will tell you:



Our new technology changes the whole paradigm.



Business objects will make your ordinary developers productive (substitute any buzzword for “business objects”).



We’ll have all the features you need in six months.



We make no warranty express or implied regarding our software, its merchantability, or its fitness for any particular purpose. Vendors rarely guarantee that their software does anything useful at all. And if it does something bad; it’s not their fault. Proprietary technologies change every 4 to 18 months. Rapid technology changes can dominate software maintenance costs and impact software development. After purchasing a software license, vendors expect to make four times as much money from the same customer for training, consulting, support, and maintenance. Is it possible that the more difficulties application developers have, the more money vendors make?

Software gurus will tell you:



Their new method improves upon anything they said in the past.



Their tools fully support software development, including code generation.



You need more tools!



You need more training!



You need more consultancy!

We gurus disagree with each other, and we change our minds—frequently. Gurus also sell new ideas that contradict those they sold people in the past. Gurus’ methodologies are too generic for any real project. The important details of their methods are hidden in their expensive products; for example, production-quality code generation from modeling tools is still years away. More often, they never state the important details at all.

The bottom line is, regardless of the excitement and hype, software technology is in the Stone Age

No comments: