||This article includes a list of references, related reading or external links, but its sources remain unclear because it lacks inline citations. (April 2011)|
Overengineering (or over-engineering) is the designing of a product to be more robust or complicated than is necessary for its application, either (charitably) to ensure sufficient factor of safety, sufficient functionality, or because of design errors. Overengineering can be desirable when safety or performance on a particular criterion is critical, or when extremely broad functionality is required, but it is generally criticized from the point of view of value engineering as wasteful. As a design philosophy, such overcomplexity is the opposite of the less is more school of thought (and hence a violation of the KISS principle and parsimony).
Overengineering generally occurs in high-end products or specialized market criteria, and takes various forms. In one form, products are overbuilt, and have performance far in excess of needs (a family sedan that can drive at 300 km/h, or a home video cassette recorder with a projected lifespan of 100 years), and hence are more expensive, bulkier, and heavier than necessary. Alternatively, they may be overcomplicated – the design may be far more complicated than is necessary for its use, such as a modern text editor asking whether files should be saved in ASCII, EBCDIC or various multi-byte formats. Overcomplexity reduces usability of the product by the end user, and can decrease productivity of the design team due to the need to build and maintain all the features.
A related issue is market segmentation – making different products for different market segments. In this context, a particular product may be more or less suited for a particular market segment, and may be over- or under- engineered relative to an application.
Second World War German tanks are typical examples of overengineered vehicles, which made them more expensive, fewer in number, more difficult to produce and heavier than their Soviet and Allied counterparts, while F-22 and F-35 fighters may be considered as examples of modern-day overengineering.
A story about very precise engineering is given in the 1858 story The Deacon's Masterpiece or, the Wonderful "One-hoss Shay": A Logical Story by Oliver Wendell Holmes, Sr., which tells of a carriage (one-horse shay)
That was built in such a logical way
It ran a hundred years to a day,
went to pieces all at once, --
All at once, and nothing first, --
Just as bubbles do when they burst.
Because it had been engineered so that no single piece failed first – no piece was over-engineered relative to the others, and they thus all collapsed at the same time.
- You aren't gonna need it (YAGNI)
- "Stop Over-Engineering!", Software Development magazine, Joshua Kerievsky, April 2002
- "Overengineering: How much is too much?", EDN magazine, Paul Rako, January 2008