This SkillsCast is currently only available to registered attendees of iSAQB Software Architecture Gathering — Digital 2022
It will be freely available to all Skills Matter members once the iSAQB Software Architecture Gathering — Digital 2022 early-access window expires on November 16, 2023.
Functional-programming acolytes usually advocate an FP-first approach to doing software projects. However, the reality on the ground is often different: Many projects want to benefit from functional programming, but have an existing OO codebase with paradigms and conventions that are at odds with "FP purity". This talk describes an ongoing cooperation between Blume2000 (firmly OO) and Active Group (pure FP) to get the most beneficial bits from functional programming into an existing hexagonal/DDD architecture written in Kotlin with Spring Boot. The project has produced some successes: - applicative-based validation - free monads for better domain/port separation - functional dependency injection, also in conjunction with the free monads The project also has produced some areas of friction - notably the strict domain/technology separation of the hexagonal model helps developers find their way around, vs. the more fine-grained approach to abstraction taken in the functional core/imperative shell architecture preferred by the FP folks. Moreover, the annotation-based approach to system assembly implemented by Spring Boot clashes with the more object-oriented approach favored by functional programmers. We'll dive right in, get our hands dirty, and report on how it's done.
YOU MAY ALSO LIKE:
Getting FP Into DDD - For Real
Mike Sperber
Michael Sperber is CEO of Active Group in Tübingen, Germany. Mike specializes in functional programming, and has been an internationally recognized expert in the field: He has spoken at the top conferences in programming languages, authored many papers on the subject as well as several books. Moreover, he is an expert on teaching programming. He is also a co-organizer of the annual BOB developer conference.