Functional Design: Principles, Patterns and Practices

Brand new book based on Clojure from Robert C. Martin (Uncle Bob).

Looks like it is not for beginners and will help the transition to Functional Programming for the experienced Object Oriented programmers.


Be aware that Robert Martin is a controversial character. Having the Clojure world be associated with him does not do us any favors.


I’m trying to find a YouTube video where Zach Tellman made a response to one of his Advent of Code challenges. But I can’t seem to find either the original or the response :frowning:

It was when Bob first started learning Clojure so perhaps he’s learned more since then, but his extremely un-Clojure approach is what provoked Zach’s response.

He spent most of the video setting up tests and followed a strict TDD workflow as is common in other languages, but never connected a REPL, and Zach’s version consisted of about 5 minutes of evaluating expressions in the REPL. And he hadn’t even been using Clojure for a significant time so he had gotten rusty :slight_smile:

I wish I could find it because it was both educational and hilarious :grin:


Oh ha, I found it:


I totally agree… I get this snake oil salesman vibe from the guy. Also, I can envision a lot of grifting coming behind him like there is in the Agile (capital A) community.
The code examples I’ve seen from him don’t put him in any better light, either.
Maybe we should get him interested in Haskell, or Scala? :smile:


This is another similar case… The original blog doesn’t seem to be up atm, but this article summarizes it quite ok :slight_smile:

1 Like

Just to bring other point of view.

I think you are being unkind. The article referenced above is unfair in raising his politics (irrelevent) and in describing his comments on freedom of expression as a defence of the egregious idea that prompted them. He clearly states (by analogy) that the idea was “wrong and disagreeable”, and while this massively underplays it, and is beyond mischievous, it certainly does not defend it. Indeed he has made delivery mistakes and where he’s caused offence he’s apologised, but collectively this is not enough by any means to disfavour Clojure by association.

I also think Zach Tellman is right to point out issues with TDD, which Martin can be dogmatic about at times. However, to be honest, I simply couldn’t follow Zach’s approach, and so, much as I agree his solution and the REPL are superior, I learned more about the problem and felt better about myself watching Martin struggle. Unlike many here I think I have mostly written Clojure while pair-programming - latterly as the “expert” with skeptical novices (helping them extend a legacy system for a government agency) - and I appreciate how exposing it is. For me the strength of TDD is rarely the design it “drives” but the communication it forces while pairing which Zach didn’t quite manage. For me there’s no hint of selling cheap wares, and laughing at an enthusiast writing Clojure his way puzzles me.

Anyone who carries himself with confidence or builds a following like Martin does becomes target, and while poking a bit of fun is fine, I think he has earned his influence not only through style but substance. And that influence is huge. Really huge. He may actually the most well known software advocate in the world. So lets not act like a counter culture disdaining celebrity - I want to grow Clojure! For me, his admiration of Clojure - repeated and developed since 2019 at least - means a lot. The effect on Clojure by association hasn’t been very marked in that time, and probably won’t be now, but I’m happy to keep exposing Clojure to a little of that glare.

I look forward to reading the book (see e.g the free 10 day trial version). From what little I’ve read so far it’s typically conversational, which will annoy some and engage others, just like everything else he does!


For someone with as large a following as Martin, you simply cannot say his politics are “irrelevant”. He has repeatedly posted articles that have nothing to do with software but instead are all about his politics: he has repeatedly written and said misogynistic and transphobic things, and even if he apologizes for “offending anyone” when he is called on it, he leaves the writings in place, indicating that is what he believes. He’s even claimed that calling him out as a misogynist and a transphobe is “cancel culture” and has written about how that won’t change him.

As someone who was deeply influenced by some of his early writing, I find his politics repugnant, and I wish he’d keep it out of his writings and talks… but he doesn’t. Which is why many of us would prefer his material was not promoted in the Clojure community, where a big effort has been made to be inclusive.

If you support Martin, you are saying to various minorities that you don’t care if he attacks them and denies their humanity, and by declaring his politics “irrelevant” you are saying that those minorities’ rights are also “irrelevant”.


My take on this, is that he does have the following, and he embraces the authority, but he doesn’t seem to have the chops to actually back that up (I’m not talking about Clojure here, but his OO “example” code, even). So he preaches, very loudly and very dogmatically (and makes a good penny doing so), but I really don’t see him having the “credentials” to do so. He’s famous for his writing, not for having written any meaningful piece of software. The way I see it, it’s as if I were to write a book on running 100m dash… whatever I had to say on that, you should take with a grain of salt.

Precisely his huge following (and in the “Agile” world, that includes a lot of grifters) is what worries me about him being interested in Clojure, I fear it will end up polluting the community.

1 Like

I feel I have to say first that, while I believe freedom of (respectful) expression is important for healthy debate, I will never be an apologist for attacks on minorities of any kind, I understand the need for sensitivity given the immense historic harm, and I am proud to support all efforts towards being inclusive such as those consistently shown here. The article irked me by saying he had upset people by voting for a mainstream party, and much as I detest its views, it’s not an out of the ordinary thing to do. I guess I habitually try to separate political and technical views, that I can learn better from others. I certainly would never dream of checking anyone’s voting habits were compatible with mine before engaging with them here. Perhaps that’s why I used the word irrelevant - but I was wrong to do so - politics are always relevant where lines have been crossed, and I have since learned a few things that are indeed difficult to ignore.


This topic was automatically closed 182 days after the last reply. New replies are no longer allowed.