Functional Programming Holy Wars

Written on 19 June 2015

These days functional programming seems to be the trend. And with the help of languages like F# , many programmers seem to embrace the functional paradigm. And these folks are very passionate about this, some of them on the verge to look like zealots which go on great length to convert the “unbelievers”.

Personally, I use very little functional programming (FP), only when it appears as a “natural” solution i.e it makes sense for the problem I’m solving to express its solution as a pipeline of functions. I have a predominant object oriented mindset which fits me very well. This means I do prefer languages like C# and I have no interest in languages like F#.

It seems like FP looks like the new golden hammer for some developers, who now hails it as the best way to do everything. I disagree with this. It certainly fits some use cases, but in my case, it’s just a tool I’m using very sparingly. And to be honest, I don’t like the F# syntax so I won’t be using it any time soon.

But not being a ‘believer’ seems to upset some people. They demand you to explain yourself and you better have a very good reason (read: one that they agree with) to reject the new tool. If you say to them that you’ve evaluated the paradigm/tool and it doesn’t add much value for you, it’s a sign you need more convincing. If you resists, you’re just a close minded old dinosaur who doesn’t want to be enlightened.

I think the cult-like mindset of some of the fans is harmful. I’ve noticed that developers are always looking for the next silver bullet, platinum hammer, the ultimate solution, recipe, mindset etc that will solve of our problems. And I know this will never happen. It’s cool there is a new language enabling a non mainstream paradigm of doing things, but not everyone needs it and not everyone will like it. As long as a developer can build mainatainable solution in their language of choice, it’s fine by me. Yes, even if that language is javascript, ruby or php. In the end, they’re all tools and we should be more concerned about the quality of the result and less about using a specific tool.

As a funny note, I am a big fan of DDD. I consider that it should be used for every project, as a strategic tool, of course. Personally, I’m using it this way even if lately I find myself writing a lot of CRUD stuff. But I’ve used the DDD mindset to reach the conclusion that in the end I’m dealing with many CRUD use cases. Some people said DDD is OOP done right and I agree with them. It fits my mindset naturally. But DDD can be implemented in a functional way too and some devs are using it this way.

In conclusion, I and other developers will continue to use our OOP mindset and languages because it makes the most sens to us. Other devs will use functional programming. I don’t think it should be a ‘war’ about which is better and which is the one true way. I agree with FP fans that FP is not very well known and it will benefit programmers (at least some of them) to be aware of it.

If you have an opinion about why FP is great or why it sucks feel free to send me a PR.