Mark Seemann helps programmers make code easier to maintain. His professional interests include functional programming, object–oriented development, software architecture, as well as software development in general.

Mark has given numerous well-received talks in conferences, such as NDC Conferences. Apart from writing a book about Dependency Injection he has also created several Pluralsight courses, and written numerous articles and blog posts about programming. Mark created popular AutoFixture library that has been downloaded over 1.7 million times from the NuGet.

Topic

Would you like to write readable code? Code that you can understand a year later? Code that your co-workers can understand?

If so, you need to use good abstractions in your source code. What makes an abstraction good? How do you arrive at good abstractions?

Most programmers try to ‘invent’ abstractions from scratch. This is an elusive goal. It requires a level of foresight rarely available. What if, instead, you could use existing, universal abstractions?

For decades, programmers have dreamt of being able to assemble software from building blocks, like Lego bricks. In order to do this, such building blocks must be composable, like Lego bricks. What makes an abstraction composable? It turns out that category theory can teach us about composability. Furthermore, it turns out that some of the most important structural design patterns in the Gang of Four book are special cases of categories.

Category theory is a branch of mathematics, and so includes objective laws. You can use those laws to determine whether an abstraction is composable – even in object-oriented programming!

Target audience and goal of the workshop

In this workshop, you’ll learn some objective criteria to determine whether a design is composable. No special background in mathematics is required.

The workshop will include a combination of lecture and exercises, including hands-on programming exercises. You’ll need to bring your own programming environment capable of compiling and running C# code. The fanciest C# features you’ll use is generics, so programmers with only passing familiarity with C# may be able to participate as well.

This workshop is for object-oriented programmers curious about category theory and functional programming. You’ll see F# and Haskell code examples during the workshop, but you don’t have to know these language; you’ll learn what you need along the way.

Successful participation in the workshop should enable you to use universal abstractions in your source code. As always, no silver bullet is implied. You will learn about universal abstractions, but it will not magically make all your code instantly perfect.

The workshop would not exist without these forward-thinking companies: