Functional Architecture: the Pit of Success
Object-oriented architects and developers have, over the years, learned many hard lessons about successfully designing systems with object-oriented programming. This has led to a plethora of ‘best practices’ that are painfully passed on from older to younger generations via books, lectures, consulting, blog posts, etc. Many of these ‘best practices’ must be explicitly taught, because they don’t evolve naturally from object-oriented programming. Surprisingly, many of these hard-won ‘best practices’ fall naturally into place when applying functional programming. Instead of deliberate design, functional programming forms pits of success where you naturally fall into the same ‘best practices’ that you have to deliberately work for in object-oriented programming. In this session, you’ll learn about a handful of such ‘best practices’, and how functional programming automatically lead you there, without your explicit effort.
A Functional architecture with F#
F# is a Functional language in the .NET framework; while most people still regard it as a niche language, it’s a Turing complete, general purpose language, so you can build almost any sort of application with it. However, with its strong focus on immutability, programmers used to Object Orientation struggle with creating a proper architecture for a Functional system.
One way to approach Functional architecture is to separate the system into abstractions for writing data, and abstractions for reading data.
A set of design patterns collectively known as Pipes and Filters provide a model for receiving and persisting data, while a programming model known as Map/Reduce addresses the concerns of reading (persisted) data and transforming it into useful boundary constructs.
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. Apart from writing a book about Dependency Injection he has also created several Pluralsight courses, and written numerous articles and blog posts about programming. Originally poised to become a rock star or (failing that) graphic novelist (in the European tradition) he one day found himself with insufficient talent for either, a master’s degree in Economics, and a desire for working with computers. He has been doing the latter intermittently since 1995. When not working with software or spending time with his family, Mark enjoys reading, listening to and playing music, as well as preparing or consuming gourmet food and wine.
6:30 - 7:00 Pizza/Socializing
7:00 - 8:30 Talk
8:30 - ??? Pub Time