We struggle with good functional design for about fifty years meanwhile, and we haven’t solved the problem by far. But while in the past bad design only meant a hard to maintain codebase, the consequences are much more drastic these days. In times of microservices, cloud native, API first and more, bad design also means brittle and poorly scalable systems at runtime, up to a level that can endanger the whole business. So, good functional design is needed more desperately than ever. But, what is good design and how can we create it? In this session, first we will examine how functional design affects the properties of a system. Then, we will revisit some timeless design foundations from fifty years of computer science. After that, we will apply the concepts learned to our challenges today. Finally, we will look at the trade-offs of our approach and some alternative options. After this session, you will have gained a better understanding of how to design modern systems that are successful and sustainable in development and at runtime.