First Indicators of an Over-Engineered Project
The problem with patterns, best practices, and idioms is the overuse of a single principle. Regardless of what you are considering, overuse of DRY can lead to "fat" layers and classes, overuse of Separation Of Concerns to many fine grained units, overuse of modularization to JAR, plugin, or just governance hell.
- You start to use terms like "potentially", "in future", or "scalable".
- You spend more time thinking of "encapsulation", "abstraction", and "decoupling", than the actual problem.
- You believe that with the amount of frameworks, libraries, and languages (better polyglot projects), the quality of the software will improve.
- You are able to replace every single concept, class and layer—but this feature actually cannot be derived from the client's requirements.
- Just looking at the code—you do not understand what happens—you need additional tools, products, and consultants :-) to understand it.
- You hate monolithic structures—so everything is configurable, replacable—of course, at runtime. If it becomes too complex, go to point 5.
- You start to implement a generator to tackle the complexity.
- Your configuration file is getting slightly bigger than your code.
- Your interface is so fluent that only domain experts understand the code. :-)
Common sense and the balance between concepts and idioms are the solution—but it's hard to find in real world. :-).
From http://blog.adam-bien.com/
(3 votes)
- Login or register to post comments
- 8521 reads
- Printer-friendly version
(Note: Opinions expressed in this article and its replies are the opinions of their respective authors and not those of DZone, Inc.)




Comments
Harald Krake replied on Fri, 2008/06/27 - 4:39am
GeekyCoder coder replied on Fri, 2008/06/27 - 7:36am
11. Design pattern becomes a must rather than a need
What can be done with button using ActionListener endup using a command strategy which create more unnecessary object and bloat as well.
Christoph Beck replied on Fri, 2008/06/27 - 9:33am
In a recent post you were talking about test coverage and metrics, closing with "instead of believing in numbers, sometimes a portion of common sense could really streamline your development". Now you're saying "Common sense and the balance between concepts and idioms are the solution..."
Well, "common sense" always sounds good because everyone claims to have it. However, when people talk about "common sense" they usually mean "my sense". I think that the wider interest in patterns and idioms just shows that people understand the importance of quality and design and have learned that "common sense" is sometimes not enough.
Alex(JAlexoid) ... replied on Fri, 2008/06/27 - 12:57pm
Here's one indicator that can replace all...
0) If your project was in design ,before entring development stage, for 2 years - it's overengineered.
Ritesh Chitlangi replied on Mon, 2008/06/30 - 8:01am
Slava Imeshev replied on Tue, 2008/07/01 - 3:23am
Great post! Here is my addition to the collection of bad signs:
12. Word "genereric" appearing anywhere in the code, project documentation or in verbal communications.
Regards,
Slava Imeshev
Cacheonix - Common Sense Data Grid for Java
Jeroen Wenting replied on Tue, 2008/07/01 - 12:39am
Maxim Zakharenkov replied on Fri, 2008/07/18 - 7:27am
Cool post!
In my practice I've encountered the following requirement from a PM (Not from customer) - "Your project should be 100% configurable"
Alastair Rodgers replied on Tue, 2008/07/22 - 7:53am