Writing software is hard, and it gets harder the larger systems we build. The ability to reason about, and make changes to our software is absolutely crucial.
What we need is a new way of working with software that focuses on simplicity and productivity.
We need an architecture that gives our codebase an understandable, maintainable, reusable, and testable structure. We need a first-class development experience for navigating and refactoring of all our code, and fast feedback when we make changes. We want to build scalable systems, but avoid unnecessary complexity from "premature distribution".
We want to build systems of any size in a way that is both simple, fast and fun.
In short, we are looking for development nirvana.
Before we continue, let's have a look at current architectures.