5 ms·
> One of the people I showed this to had an interesting reaction. Their response was something like: “Hey! I like functional programming because I’m lazy and in
by alexmolas 4y ago
> One of the people I showed this to had an interesting reaction. Their response was something like: “Hey! I like functional programming because I’m lazy and incompetent. It’s about all the things I don’t have to think about.”
I can perfectly imagine the most intelligent and smart people I've ever meet saying this same thing.
- googlryas 4y agoMaybe a key part of intelligence is merely knowing your own limitations.
- masklinn 4y agoOr offloading so you have more room for the useful stuff.
- EnKopVand 4y agoThere is a Danish scientist called Morten Münster who's done research on behavioural science. He's written a book for management that's gotten very popular in my country, and this is how I became acquainted with it back when I did a stint in management (which around here includes getting a MBA type education in management). Aaaaaaaanyway, in it he talks about two ways of how we function as human beings, and I'm likely presenting this wrong, but one is basically the best practice theoretical mode of being and the other is how we operate at 17:00 on a Thursday after a week where both our children have been sick, and the overlaying message is that everything that isn't designed for the second mode of being is likely going to fail. Now the way it's presented in the research and the educational material, this has nothing to do with programming. It's more along the lines of companies needing to formulate missions and goals that aren't corporate bullshit, because nobody understands corporate bullshit when they are faced with an angry customer some late Thursday afternoon. After a few decades in SWE, however, I've become sort of a fan of designing software for that 17:00 Thursday EnKopVand mindset, and functional programming helps a lot in that regard because it kills soooo many of the complexity pitfalls that you really don't want to deal with when you're tired, lazy and incompetent. Of course the other side of this is that I'm not religious about functional programming either, I rarely write classes these days, but if there is a good reason to write one, I will.
- jiggawatts 4y agoSome systems require eternal vigilance to not blow up in your face, others shepherd people towards the pit of success.
- jsrcout 4y agoSo true. Same with languages IMO. Not naming any names :-)
- gehen88 4y agoWow, I was really expecting this to be an argument against FP, until it wasn't. I love the concept of designing for Thursday 5pm though. My approach to achieve that is simply different (it doesn't include FP).
- microtonal 4y agoAfter a few decades in SWE, however, I've become sort of a fan of designing software for that 17:00 Thursday EnKopVand mindset, and functional programming helps a lot in that regard because it kills soooo many of the complexity pitfalls that you really don't want to deal with when you're tired, lazy and incompetent. It's so funny, because I thought your comment would lead to: when it's 17:00 on a bad day, I'd rather debug some Go code that is perhaps mundane but easy to follow than a chunk of Haskell code of a colleague that drank too much category theory kool-aid. Which goes to show that what one wants to debug at 17:00 on a bad day is very personal?
- jolux 4y ago> Which goes to show that what one wants to debug at 17:00 on a bad day is very personal? It really depends, it's possible to write mundane, simple functional code (though I think more common in OCaml and Erlang than Haskell) but much of the community is sort of very excited about all this higher-order stuff that might be great but is not quite as useful and obvious as the core primitives of algebraic data types and pattern matching. I imagine a lot of people probably felt similarly about the Design Patterns craze with OOP: it's not that OOP isn't useful, just that inheritance is maybe not what you want most of the time and not everything needs to involve design patterns. I'd rather be debugging an OCaml program than a Go program for sure.
- float4 4y agoCan confirm. I took Advanced Functional Programming for my master's. Of the ~15 people who took the class, the majority scored <=65% or gave up, a few people got pretty good grades because they were reasonably intelligent and willing to put in the work (me), and then there were a few people who scored >=95% because the high levels of abstraction genuinely made things easier for them. That was when I learned that for some people, a monad really just is a monoid in the category of endofunctors.
- gizmo 4y agoWhen people call themselves "lazy and incompetent" they're not sincere. It's the equivalent of an obviously fit person saying "oh I'm so fat". It's just fake humility. The same people would get offended if you actually suggested they were lazy and incompetent.
- mejutoco 4y agoIn a programming context lazy does not need to be a bad thing. https://thethreevirtues.com/ https://thethreevirtues.com/ Incompetence, I agree, sounds either self-deprecating or fake.
- mfru 4y agoincompetence is most likely just the impostor syndrome speaking
- rowanG077 4y agoI don't think this is true. How fat you are can be pretty objectively measured and it won't change in the short term. Being lazy and incompetent however is always fluctuating. There are days I'm lazy, there are days when I can work 12 hours and feel energized. There is also days where everything in my mind aligns and all the problems melt away. There is also days where I ram my head into the wall on some relatively simple problem. The point being is that programming is something that no human can do without errors. So you want a language that provides as much low overhead guard rails as possible to stop yourself from shooting yourself in the foot. Even on the days you're lazy and incompetent. That's how I see the statement they make.
- deleted 4y ago[deleted]
- deleted 4y ago[deleted]
- taneq 4y agoI think it’s often Socratic laziness. Not fake, but “humans are dumb and weak, let’s make this easy for ourselves.” For most of my coding work I take it a step further than this with the simple premise that the code you wrote professionally is not for you. It’s for whoever next has to work on it, no matter their level of expertise. Sure, maybe you ‘just know’ that the equality operator comes between bitwise-OR and logical-OR in precedence, but the code isn’t for you so maybe just use the brackets anyway.
- deleted 4y ago[deleted]