I didn’t go to NDC this year, but I just watched this video by Tore Vestues and Jonas Follesø. They show that in a typical three-layer architecture you duplicate the entity structure about ten times, and that by focusing on the simplest thing that can possibly work, they can pretty much remove all of that duplication.
A fresh and very though-provoking talk, indeed! It is definitely time to question how SOLID code can be DRY when we keep adding all this complexity disguised as flexibility.
Actually, the best take-away from the talk was that you should not implement design patterns if the net result is more complexity rather than less. This reminds me about one of my previous projects, where someone backed each and every class with an interface up front, not knowing if any of them would ever become useful.
I think some questions about Tore’s and Jonas’s agile architecture need to be investigated further:
- How likely is it that you would eventually need to add a relational DB (for easier structure modifications and faster queries) and a domain layer (for more expressive business logic and a faster test suite) anyway?
- How easy is it to refactor in these changes later rather than building them in from the get-go?