Smoke and Mirrors

AntiPattern Problem

Demonstration systems are important sales tools, as they are often interpreted by end users as representional of production-quality capabilities. A management team, eager for new business, sometimes (inadvertently) encourage these misperceptions and makes commitments beyond the capabilities of the organization to deliver operational technology.

This puts developers in a tough situation because they are then pressured to deliver the capabilities promised.

The ultimate loser is the end user, who does not receive the expected capability at the promised cost and time; or when the system is delivered, the end user often receives a hastily crafted Stovepipe System that resembles the demonstration environment, but lacks maintainability.

A principal cause of this AntiPattern, also called Vaporware, concerns the management of expections. The end user is led to believe that capabilities can be delivered when in fact they cannot, at least not within the predetermined functionality, budget, and schedule. When the development project fails to deliver, the project is considered unsuccessful, and the development organization loses credibility.

Refactored Solution

The management of end-user expectations is important both for ethical reasons and for continued credibility. A typical rule of software engineering is that a deliverable system costs three times as much as an engineering prototype. A set of reusable software costs up to three times as much as software for a deliverable system.

Another rule, supported by survey evidence, is that any software development will take about twice as long and cost twice as much as expected.

Managing expectations often means it is better to let people expect less than can be delivered. When the expectations are exceeded, the recipients are pleasantly surprised, and are likely to become repeat customers.


When the Smoke and Mirrors AntiPattern is a demonstration of a commercial product, effective additional precautions can be taken. One strategy is to have competent engineers attend the vendor's training course. Usually, training courses are not part of the marketing communications program, and convey unfiltered information about the products.

But competent engineers can determine the product's true capabilities and report back to the development team. A less costly solution is to request a copy of the product's technical documentation, and conduct a review of these materials by one or more competent engineers. Also, carefully review the installation requirements and software license agreement.

The installation requirements may call for operating system versions and product releases that are incompatible with the target environment. Few software licenses guarantee merchantability.

In other words, there may be no legal assurance that the product will perform a useful function. Such a guarantee can be added to the purchase agreement, along with extended product support. Such guarantees are commonplace in industries such as telecommunications, where product support is provided for up to 80 years (the full system life cycle).