There are some examples of cases where "overengineering" actually ended up being the reason for success: Indian Motorcycles vs. Harley Davidson in a bid for the WWII US army motorcycle. Harley Davidson won when they delivered a motorcycle that exceeded all of the require parameters.
Similarly, people might say the MacBook Pro is overengineered with the aluminum case, but it is a ridiculously solid laptop that I'm not afraid of my kids touching.
The point, sometimes overengineering is meerly making something substantially better in some particular way that it becomes more useful.
Overengineering is a label we apply retrospectively.
As a pro-agile bigot, I prefer to avoid it by keeping the work units small. It greatly reduces the temptation to build a 16 stage rocket when all the users need me to throw a baseball.
I see very little of this in tech and remain pissed at my peers over storage, printers, cpu mmus, mobile phone upgrades, software with no model to reason/guess about how it will implement an unfamiliar feature... I am often happier with a 5 year old hardware product or a 15 year old software one since its not as well tuned for obsolescence as a current one.
For example, 5 year old celerons support 16Gb of ram which makes them useful for another five years, modern celerons support 8Gb making them perfectly engineered for 5 years ago.
[Edit - 5 years ago was 16Gb, 2013 was 32Gb, today's celeron is 8Gb.. progress.]
"Poorly engineered" and "over engineered" are different.
If the solution is running slow for no good reason it's poorly engineered. If it's unnecessarily difficult to implement it's poorly engineered. If it eats up too much memory because it does more than you need it for it's poorly engineered. If it's taking too long to create, it's poorly engineered.
In my experience I hear the term "over engineered" used by bitchy architects to describe components that have none of these problems, but are built, under the covers, using features of the underlying system or techniques that are unfamiliar to that architect. I hear it used to cover insecurity on teams containing members of very different skill levels.
If it's a problem, call it poorly engineered and get it fixed; if it's not a problem and you just can't read it, hit the books or get out of the way. The term "over engineered" just worries the suits, and does no good.
5 comments
[ 2.8 ms ] story [ 26.1 ms ] threadWhat kind of overengineering do you see in your environment?
Similarly, people might say the MacBook Pro is overengineered with the aluminum case, but it is a ridiculously solid laptop that I'm not afraid of my kids touching.
The point, sometimes overengineering is meerly making something substantially better in some particular way that it becomes more useful.
As a pro-agile bigot, I prefer to avoid it by keeping the work units small. It greatly reduces the temptation to build a 16 stage rocket when all the users need me to throw a baseball.
For example, 5 year old celerons support 16Gb of ram which makes them useful for another five years, modern celerons support 8Gb making them perfectly engineered for 5 years ago.
[Edit - 5 years ago was 16Gb, 2013 was 32Gb, today's celeron is 8Gb.. progress.]
If the solution is running slow for no good reason it's poorly engineered. If it's unnecessarily difficult to implement it's poorly engineered. If it eats up too much memory because it does more than you need it for it's poorly engineered. If it's taking too long to create, it's poorly engineered.
In my experience I hear the term "over engineered" used by bitchy architects to describe components that have none of these problems, but are built, under the covers, using features of the underlying system or techniques that are unfamiliar to that architect. I hear it used to cover insecurity on teams containing members of very different skill levels.
If it's a problem, call it poorly engineered and get it fixed; if it's not a problem and you just can't read it, hit the books or get out of the way. The term "over engineered" just worries the suits, and does no good.