In the last 5-10 years we’ve seen a meteoric rise in very similar libraries across the industry: RxJava, React, Kotlin Flow, Compose, Workflow. As these libraries have sprung up, we’re able to identify some common ideas between them, like uni-directional data flow, but these definitions have been loose and quite unspecific, and it seems few people even today can explain what is reactive programming with much confidence.

In my search to really understand the core principles behind these libraries, I discovered a in-depth trove of programming paradigms and how they applied to our day-to-day work. We’ve all heard about imperative programming, functional programming, and object-oriented programming, but how much do we hear about relational programming (SQL), continuation programming (coroutines), or concurrent logic programming (Excel)? Different programming paradigms are suited for different problems, so having a vocabulary to explain why we probably wouldn’t use MapReduce to write Android UI can be helpful.

This session introduces and then dives into examples of how to use programming paradigms to build stronger abstractions and fundamentally safer code in our day-to-day work. Learning about how the programming model we’re working in will give us a different lens to view the rules of the code we work on.