FP kingdom praises monoids while scorning OOP builders in castle standoff meme
Description
Cartoon split into two castle-lined hills facing each other across a river. Left heading: "OUR BLESSED FP"; right heading: "THEIR BARBAROUS OOP". On the functional-programming hill, banners point to stone towers labeled "OUR GLORIOUS SEMIGROUP", "OUR GREAT MONOID", "OUR NOBLE MONAD", and "OUR HEROIC FUNCTOR". On the object-oriented side, mirrored banners point to towers labeled "THEIR PRIMITIVE FACTORY", "THEIR BACKWARD BUILDER", "THEIR BRUTISH ADAPTER", and "THEIR WICKED STRATEGY". Two small boats with purple and orange sails sit between the shores. The humor contrasts algebraic FP abstractions with classic OOP design patterns, parodying paradigm tribalism familiar to veteran developers
Comments
51Comment deleted
After two decades of paradigm crusades, it turns out the moat between the FP and OOP castles is just a shared mutable Map - everyone’s been ferrying side effects across it in little boats named “abstraction.”
After 20 years in the industry, you realize both camps are just trying to manage state and side effects while pretending their abstraction layer doesn't leak - the only difference is whether you call it a 'monad transformer stack' or a 'dependency injection container'
This perfectly captures the irony of FP evangelists who've spent years wrapping their heads around monads and functors, only to realize they've essentially reinvented the same design patterns OOP developers have been using all along - just with more intimidating mathematical names and a superiority complex. Both sides are building castles on the same conceptual foundation, but one insists on calling their bricks 'algebraic data structures' while mocking the other's 'primitive factories.' The real joke? Most production codebases are pragmatic hybrids that would make both camps equally uncomfortable
Most GoF patterns vanish once you have higher-order functions; what remains is a monoid, renamed 'builder' to pass enterprise architecture review
After 20 years, the FP - OOP border is mostly naming: their Builder smells like a Monoid, their Adapter like a Functor, their Strategy like a Monad - the ferry between castles is just called compose
FP functors fmap to victory; OOP builders construct yesterday's architecture one primitive at a time
I miss the times, when programming was fun (it never was) Comment deleted
talk for yourself, I'm having fun Comment deleted
define fun Comment deleted
No Comment deleted
exactly Comment deleted
No Comment deleted
ok, now that I can actually reply instead of just pressing "reply no" on my watch, here's my actual point: no Comment deleted
jokes aside, I just like programming. there's nothing more to it Comment deleted
like just coding and seeing it works or all that fuckshit with optimization, debugging and SDLC? Comment deleted
depends on mood Comment deleted
sometimes I really want to optimize a small piece of code into oblivion, sometimes I want to make a script that automates some work for me, sometimes I want to fix a bug in someone else's software … Comment deleted
it's cool to just make stuff. Jobs suck because you dont care about what you're making often Comment deleted
Did you try the MesageEase keyboard to write messages from your watch ? Comment deleted
idk what that is, and I don't have one of those crappy apple watches or wearOS watches Comment deleted
I have a pebble. no touchscreen. just four buttons. and I'd never change it for anything with a touchscreen Comment deleted
#define fun Comment deleted
fun meme(dev: Int = 0): Int = dev / 0 Comment deleted
it was fun until it turned into a job Comment deleted
Remember when we had opinions about languages? Comment deleted
yeah I think austro-bavarian is just better than standard german … wdym … wdym that's not what you meant? Comment deleted
So true Comment deleted
A colleague once said, "I hate working as a concept". Principal eng, likes solving problems and stuff, but hates the whole risk management aspect of it, liaising with teams, bringing up legacy stuff, etc And, like, yeah, agree. I miss coding for fun. My work coding leaves no time for my fun coding. Comment deleted
Y'all are writing code? I'm just describing what changes I want to an AI and verifying it did what I said Comment deleted
bad dev :bonk: Comment deleted
Mmm, I agree, but it's what makes sense for the business Comment deleted
technical debt disagrees Comment deleted
Code doesn't need to be readable by humans if the AI can understand it /s Comment deleted
not that, I meant accumulating legacy cruft and bugs Comment deleted
That's where the code review is key Comment deleted
you mean the code review that people like doing with chatGPT? or the one where they just gloss over it quickly without really giving it much thought? Comment deleted
Copy, Paste, 1597668 rows affected, Move into a different country Comment deleted
tbh code review is the one thing where AI can actually help. asking it "are there bugs or performance concerns in this code" could 100% be helpful Comment deleted
No, I mean manually reviewing the code and deciding if it's human readable (eg, not a ton of logic stuffed in one line) Comment deleted
The state of code writing AI (Cursor) at the moment, seems to be basically a very fast junior dev. You tell it what it needs to do and it will do that, but sometimes makes wrong assumptions about how to structure the code or function definitions or whatever Comment deleted
It barely can help in non general questions Comment deleted
I'm using Cursor and it's frighteningly good at reading and understanding existing code Comment deleted
Last week I needed to add a column of data to a reporting tool in The Legacy Code, and it was able to understand that spaghetti and make the changes after one prompt Comment deleted
Ask it to make use of the codeGeneration capability in UWP. It will use wrong function signatures Comment deleted
Microsoft doesn’t have samples of that (yet? ever?) and it cant come up with anything thinkable of its own. And it 1:1 copies sample code from a whole other SDK which have mismatching signatures Comment deleted
It even inferred that it needed to update the SQL query to get the data Comment deleted
shitty future fr Comment deleted
My boss was playing with some system that has different AI models working together to translate, write, and test code like a virtualized team, but I'm not a fan Comment deleted
My use case is not having to spend an hour+ reading the spaghetti code other people wrote 7 years ago just to make a simple change Comment deleted
Which FP language Is good to learn? Comment deleted
farming /j Comment deleted