Creating a simple solution for a complex problem is not an easy task! If you have the courage, to make your AEM app development simpler and avoid many problems and bugs, go ahead and read this post!
A few weeks ago I was asked by my friend at work, how to make a good abstraction for two classes in Java that looked similar. He was thinking for some time already. I asked him: "Why not simply copy the first one and make a small alteration needed? That will take a few minutes and it will be very readable and easy to change in case there would be a new use case." He said: "I thought about that, but it looked too simple for me".
As Venkat Subramanian said in "The art of simplicity", complexity feels good. When you craft a complex solution you feel like a master in your field. Other people would probably have a hard time understanding it. That feels even nobler!
AEM is a complex platform. There are multiple pieces that need to work together like authoring, publishing, dispatcher. One needs to have multiple skills and a lot of knowledge to make it work properly. If it is already complex in its nature, why add accidental complexity to it?
Have one team
We need System Engineers, Backend Engineers, Frontend Engineers, Quality Assurance Engineers and even more skills to complete an AEM application. Make it simple, let all of those people work in one team and meet daily. Improve the flow of information. Start Dispatcher configuration development on day one. Learn about obstacles at the very beginning of a project. Do not create silos between different skill sets. Allow people to exchange in tasks they do.