Do you all have any experience with the inclination to over-engineer? How do you balance this with writing simple, modular, clean, and effective code? Do you have any other thoughts or suggestions on the topic?
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. :-)