Bringing OOP Best Practices to the World of Functional Programming

Accepted Session
Short Form
Scheduled: Tuesday, June 21, 2016 from 3:45 – 4:30pm in B201


I transitioned from writing software in imperative, object-oriented (OO) programming languages to doing functional programming (FP) full-time, and you can do it, too! In this talk, I'll make a case for FP in the corporate development environment, cover some cases where common FP language features substitute for design patterns and OOP structure, and provide some examples of translating traditional OO design patterns into functional code.


Traditional object-oriented programming is full of design patterns and best practices for how to tend your objects, enabling the software developer to produce abstract, reusable, and legible code. I don’t know about you, but I definitely slept through that course. I used to think the world of abstract factories and UML diagrams was irrelevant to my career as a software developer, until one day a coworker pointed out to me that I was telling an intern to use the template pattern. What had I become?!

Thinking more about it, I realized my day-to-day work in a functional language featured various other “programming tropes” from my days writing OOP code in C++ or C#. I’m really excited about getting to write Clojure every day where I might have been writing Java or Python instead, so if you’re looking to pick up functional programming for work, I can help save you some time mapping best practices from the land of OOP to the world of FP.

In this talk, I will

  • make a case for functional programming in the corporate development environment
  • cover some cases where common FP language features and best practices sub in for design patterns and OOP structure (destructuring, pattern matching, immutability)
  • provide a few specific examples of translating design patterns into functional programming techniques (template pattern, etc.)


functional programming, software engineering, oop, clojure, design patterns, Best Practices

Speaking experience

I've spoken on a number of panels for the Women in Computer Science Undergraduate Committee at the University of Waterloo (here's one that's up online: I prepared and presented Python lectures for a series of workshops for beginners I organized through WiCS and the PSF ( I also spoke at PyCon 2016 this year! (

This will be my first time presenting this talk.


Leave a private comment to organizers about this proposal