As the Ruby creator (Matz) said, remember what it felt like to program when you were 14? Are you having as much fun now? Over-design is the mind-killer. This is, to some extent, the pitfall that "Software Engineering" has become. Maintaining code. Coding so that less-skilled developers can work equally well with your code. Dumbing down programming. Nothing is allowed to be shiny, shiny is evil. Nothing is allowed to be complex, complex is evil.
For those who have read the SimCity 2000 strategy guide (ha!), the term is "Nucleated Expansion". It's a horrible way to design cities, but it allows needs to be treated as they arise, rather than pretending to have an omniscient view and building "architecture". Meanwhile, it is ALWAYS important to have modules and modularity, but the general concept is "meta-modularity" -- do not design modularity for specific things into the program -- design modularity for everything, knowing that if you need to change something -- anything -- you can change it, not just certain layers. And don't design modularity that you don't need immediately, just be able to add it later. Code is allowed to change.
Bingo. You hit it right on the head. This is what a true engineer would do. Engineering is a process where you make it best for the situation. When you under engineer, it's just over simplification. When you over, you are just complicating matters. The crux of the situation is there are no drawn lines anywhere to measure against.
I agree and disagree. Making things overly complex is always bad. Using patterns is almost always good. Patterns promote consistency. There are anti patterns or ill placed patterns which prevent growth.
For instance, I had the impression that a system I would design, would use very simple queries to report data with little variance on how the report would look. (missing columns or reordering the columns). low and behold, they do matter and my design goes out the door. next version does they displaying a little more flexible, things are easier to develop for, everyone works a bit better.. a bit faster. This is the engineering that needs to take place. Is a toothpick the answer, or something with a lot of gears?
Then B.I. said, "Hov' remind yourself
nobody built like you, you designed yourself"