About Syllabus About the Instructor Inquiries Return To Top

The Functional Edge for Modern Software Engineers

As software engineers, one of our primary concerns is the maintainability of our code. We all want fewer bugs, better tests, and altogether more comprehensible and predictable software. In other words, we want to hold code complexity at bay. In this workshop, we will explore and apply one of the more powerful tools to achieve these goals: Functional Programming.

We will see how the fundamentals of Functional Programming, the focus on pure functions and the minimization of side-effects, lead to higher quality code that is safer, easier to read, write, test, and refactor. Instead of hiding complexity away behind leaky abstractions, we will remove complexity as we embrace immutability and statelessness. By systematically reducing the amount of “spooky action at a distance” that wreaks havoc in our code, we will end up with software that is more maintainable and fun to work with.

As more and more high-level, modern languages embrace functional features like lambdas and immutable data structures, it has never been easier to apply functional techniques to almost any codebase. Let us kick-start your journey into the adventure that is Functional Programming!

Syllabus

The workshop is available in a variety of high-level programming languages like Java, Python, TypeScript, C#, and more. Where possible, the material of the workshop will be adapted according to the language used and the background of the attendees.

We will cover the following topics:

  1. Functional Programming fundamentals
    • Pure functions
    • Functions as values
    • Functional data structures
    • Controlling mutation and side effects
    • The functional subset of our programming language
  2. Practical applications
    • DRY code with higher-order functions
    • Testing pure functions
    • Fearless refactoring with side-effect-free code
    • Hiding side-effects behind a pure interface
    • Composing functions into functional pipelines
    • Concurrency in an immutable world
    • Refactoring legacy code to be more functional
  3. Design and architecture
    • Functional domain modeling
    • Making illegal states unrepresentable
    • Imperative shell, functional core

By the end of the workshop, you will have a firm grasp on how to apply a “lightly functional” programming style to any codebase, which in turn will help you write safer and more maintainable code.

About the Instructor

Daniel Beskin is an avid functional programmer, with over a decade of experience in applying Functional Programming in practice. As much as he enjoys using Functional Programming, he loves sharing it with the world even more; be that at international conferences, blogs, or at the workplace. He never misses an opportunity to share the magic of Functional Programming with anyone who is willing to listen.