In any system of significant size, the same problem occurs again and again: What starts out as a light-weight, modern, efficient development effort using the technology of the day – be it Java and Java EE or Spring, Microsoft .NET, Ruby on Rails or any other of the well-known development stacks – ends up as a hard to change, monolithic, maintenance-intensive behemoth that everybody wants to get away from. But what are the core reason for this recurring pattern? In this session, we will discuss how and why things always seem to end up this way, and what strategies we can use to avoid this from the start.