#45 Simplifying Our Code with Vertical Slice Architecture
For quite awhile now, the conventional wisdom for creating maintainable enterprise software systems has been to adopt some kind of prescriptive architectural approaches that predominantly focus on horizontal layering as the primary organizing principle within the system code. Cruelly and ironically, that prescriptive advice has led a lot of shops to poor results through unnecessarily complicated code structures that are hard to change and harder yet to reason about -- defeating the very purpose of those prescriptive architectures in the first place.
As a reaction, our industry pendulum has swung a little bit back the the idea of a "Vertical Slice Architecture" where code is organized around features or use cases first, while still doing some kind of logical layering within the slices.
Great, but we can do better than just create the same old approach but this time with a different folder structure! In this talk, let's go a lot farther and see how we can code differently to maximize the effectiveness of this "Vertical Slice Architecture."
We're absolutely still going to maximize the testability of our code and separate concerns in the code, but we're going to do it with much more functional programming style decomposition and a lot less focus on "ports and adapter" style abstractions. On top of that, let's see how we can simplify our code internals by purposely choosing technologies that play well within "sociable" integration testing.
The end goal of this talk is to make you want to cry when you consider how much simpler code can be than the average "Clean Architecture" codebase.