In my development work, I strongly prefer to work with Functional Programming techniques and languages.

Though these tools are not yet the industry standard (that would be Object Oriented Programming), I believe that they allow me to deliver more maintainable software quicker.

Here are some reasons why:

  • Functional languages prioritize the use of pure functions and immutable data structures, which are easier to reason about and test.
  • Functional languages encourage the developer to think of their code as a series of transformations of data, which matches how I think about the task of programming. This is in contrast to the Object Oriented paradigm, which encourages the developer to see their program as a set of relations between objects – a view that I believe is often too abstract.
  • The basic unit of functional code – the function – is simpler than the simplest unit of Object Oriented code – the object.
  • Functional languages give the developer the flexibility to colocate data definitions with relevant behaviour or not. In contrast, Object Oriented languages strongly favour always colocating data definitions with behaviour, whether or not it makes sense to do so.
  • Functional languages frequently include richer type systems than object oriented languages, in particular supporting Algebraic Data Types.

Overall, I think there are many reasons to prefer programming with functional languages and techniques, and I’m excited to continue using these tools in my work.