I read a piece today entitled Functional Programmers are Better Programmers and it got under my skin. I don’t disagree with the points around the nature of functional programming and those that do it. They were well stated. It’s a rigorous paradigm, requiring smart, intense, mathematically minded folks, and it can produce robust efficient systems.
What bothered me was the assertion that “FP is always a good choice.” That’s overly simplistic. It’s like saying every military task is best staffed by special forces. It’s serious overkill and brings with it a bunch of issues.
I’m a dedicated software engineer and have earned my living doing it, and managing folks doing it for a long time. I always bring energy and intensity to my solutions. But a great many of the projects I’ve earned a living at over the years have been pretty mundane: not too complex problems, with not too demanding requirements. More often than not what was needed most was a good clean solution that could be squared away quickly and maintained for years after, and all of it affordably. Getting average projects done right with basic tools can be very satisfying.
Building and maintaining an elite team is expensive. They’re harder to find, want challenging work and won’t stick around for the long tail of the maintenance phase. Applying that solution to a straightforward problem is going to cause problems. You’ll end up, if you even get a complete initial solution, with something that’s going to require the same quality folks for years, or suffer from insane entropy as people who aren’t up to the task get thrown into the mix more and more.
FP is a great tool, but not every task requires it… sometime the problem is a nail, and a hammer will suffice.