3 ms·
Where is this strong reaction to over-design coming from? Full disclosure: I earned most of my salary in 2012 doing consulting. Fortunately, most of it was from
by tomdale 14y ago
Where is this strong reaction to over-design coming from? Full disclosure: I earned most of my salary in 2012 doing consulting. Fortunately, most of it was from working on open source projects. But a component of it was going in and getting our hands dirty in clients' apps.
Not a single one suffered from over-architecture; indeed, the common thread to all of the problems I saw is that people would intentionally put off the "just in time" architecture improvements that DHH recommends in favor of just one more feature.
By the time we got there, the whole thing was about to collapse under its own weight.
And that's exactly my point: this seems to be a solution in search for a problem. Under-architecture is much, much more widespread of a problem than over-architecture, based on my own anecdotal experience and the horror stories told by my friends over beers.
Software engineering is about striking a balance between choosing an architecture that can grow with your project while being simple enough for you to ship features today. The dogmatic approach from both sides in this ideological war is bizarre. Remember that prescriptivism against prescriptivism is still prescriptivism.
- d4nt 14y agoI've experienced the problem of too much flexibility when working on some enterprise software products at a former employer. We believed we were doing the right thing by keeping the analysis phase short and just building a generic capability for roughly what the customer needed. Boy did it cost us! Testing, support and future rounds of analysis all took much longer because we had to deal with all the flexibility that the system had. And the customers didn't appreciate it much either, they were only concerned with their limited set of use cases.
- KaoruAoiShiho 14y agoMaybe this is survivorship bias. The under designed ones that are ones that make it to become a mission critical piece of software, the over designed ones never seen the light of day.
- ctide 14y agoIf I had to guess, I'd say the people who read 37 signals' blog (and HN) are much more likely to over engineer than under engineer. Most of the client work (and I've done my fair share of consulting) I've seen suffers from exactly what you describe, but those aren't the people who are going to read 37s' blog. However, I've also worked on the opposite end of the spectrum, lots of turbo nerds who were big on planning for every eventuality (and WERE the types to read 37s etc) and that suffered heavily from exactly what he describes here. Know your audience!
- fbr 14y ago> Software engineering is about striking a balance between choosing an architecture that can grow with your project while being simple enough for you to ship features today. The dogmatic approach from both sides in this ideological war is bizarre. Exactly and the balance is not an easy thing to do. YAGNI and KISS principle are often misunderstood and used as a bad excuse to ship crappy code, but used correctly these principles contribute to a good architecture.