< session />

Effect-Oriented Programming

Fri, 25 April

A new paradigm called Effect-Oriented Programming (EOP) has emerged as a powerful approach for building reliable, composable, and maintainable software. By explicitly separating side effects from the pure, functional parts of your code, EOP provides superpowers for handling errors, applying timeouts and retries, and testing unreliable components in isolation.

In this session, we will introduce the core concepts of Effect-Oriented Programming, demonstrating how it can simplify error handling and make code more predictable and testable. We’ll dive into Scala and ZIO examples to illustrate how EOP frameworks can be used effectively. Additionally, we’ll explore related concepts from Algebraic Effects, showcasing alternative approaches to managing side effects while preserving composability.

Key topics include:

  • Understanding effects and their role in separating pure logic from side effects.
  • Handling errors gracefully using effect systems.
  • Simplifying testing by isolating side effects.
  • Composing complex behaviors with ease using EOP principles.

By the end of the talk, you’ll gain a clear understanding of Effect-Oriented Programming and how to apply it to your projects, resulting in code that is easier to reason about, maintain, and scale.

Target Audience: This session is designed for Functional Programmers, Scala Developers, and Backend Engineers interested in adopting modern approaches to managing side effects in their code. Software Architects who are exploring scalable and maintainable design patterns will also benefit from learning how Effect-Oriented Programming can simplify error handling and improve code quality.

< speaker_info />

About the speaker

James Ward

Principal Developer Advocate, AWS

James Ward is a professional software developer since 1997, with much of that time spent helping developers build software that doesn't suck. A Typed Pure Functional Programming zealot who often compromises on his ideals to just get stuff done. Currently a Developer Advocate for AWS.nerd / software developer who shares what he learns with others though presentations, blogs, demos, and code. After over two decades of professional programming, he is now a self-proclaimed Typed Pure Functional Programming zealot but often compromises on his ideals to just get stuff done. After spending too many sleepless nights in data centers repairing RAID arrays, he now prefers higher-level cloud abstractions with appropriate escape hatches. James is a huge Open Source proponent, hoping to never get burned by lock-in again.