3 ms·
It's always been a problem. Premature optimization may be the root of all evil, yeah, yeah, but that quote is sort of a waste of breath as premature optimizatio
by api 10y ago
It's always been a problem. Premature optimization may be the root of all evil, yeah, yeah, but that quote is sort of a waste of breath as premature optimization is not that big of a problem. Over engineering is the great disease of the software profession.
I suppose premature optimization is one source for it, but more common is premature generalization and excessive levels of abstraction. Other major sources include backward compatibility needs, the creation of virtual layers to escape calcified bad design, and of course the need to show off and look smart.
- rhizome 10y agoI'd say overengineering and premature optimization are nearly synonyms.
- flukus 10y agoIME over engineering almost always results in far worse performance, like a data stack with 15 layers riddled with n+1 problems instead of some simple sql.
- jjoonathan 10y agoThey're both bad, of course, but beyond that I'd say they're nearly antonyms. Premature optimization trades structure for performance, overengineering trades performance for structure. You could argue for equivalence under a broader definition of optimization and engineering, but in the context of software engineering the more specific definitions used above seem to be fairly well established.
- rhizome 10y agoPremature optimization trades structure for performance, overengineering trades performance for structure. This makes them the converse of each other, but not antonyms. At any rate, I'm not sure I agree those terms are exclusive to this relation. There can be fast overengineering and slow PO.
- api 10y agoI'd say premature optimization is one form of over-engineering, and not the most common form today. It was more common back when computers were a lot slower and people had to think about performance all the time, but now architectural over-engineering in all its forms is much more popular.