front matter
We developers are drowning in complexity. We need to support a rapidly growing number of highly demanding users producing more and more data, with lower latency and higher throughput, taking advantage of multicore processors and distributed infrastructures. And we have to ship in time under tight deadlines for those ever-demanding customers.
Our jobs have never been easy. In order to stay productive and enjoy our work, we need the right set of tools—tools that can manage the growing complexity and requirements with the optimal use of resources. As always, the answer is not as simple as chasing the newest, shiniest things—even though that’s tempting. We must also look back, learn from the hard-won wisdom of the past, and see if there is a way to apply it to the contexts and challenges of today. I consider domain-driven design (DDD), functional programming (FP), and reactive principles among the most useful tools we’ve developed. Each one can help us to manage an axis of complexity: