8 ms·
I've referred to this blog post at least twice a year since I read it 6 or 7 years ago. Not because I need to explain monads, but because the "monad tutorial fa
by gabesullice 2y ago
I've referred to this blog post at least twice a year since I read it 6 or 7 years ago. Not because I need to explain monads, but because the "monad tutorial fallacy" [1] is an incredibly useful concept to be aware of when trying to convey knowledge. I encourage you to read about it :)
[1] https://byorgey.wordpress.com/2009/01/12/abstraction-intuition-and-the-monad-tutorial-fallacy/ https://byorgey.wordpress.com/2009/01/12/abstraction-intuiti...
- Symmetry 2y agoThat reminds me of giving the advice, "Just do what comes naturally," to beginners. That's the last advice someone who has spent years building up an intuitive model needs, but it's terrible for beginners. https://putanumonit.com/2021/09/10/rules-for-noobs/ https://putanumonit.com/2021/09/10/rules-for-noobs/
- Swizec 2y agoJust do what comes naturally is great advice for beginners. See the pottery class parable: https://www.industryweek.com/leadership/companies-executives/article/21961057/pottery-class-a-parable-for-idea-generation https://www.industryweek.com/leadership/companies-executives... tldr: Pottery class, 2 groups. 1 group instructed to make the perfect pot (graded by quality of 1 best pot). 1 group instructed to make a bunch of pots (graded by pounds of clay used). At the end of semester, the group who was trying to make as many pots as possible also produced the single best pot of the class. Lesson: You need reps. Lots of reps. You really do just gotta do what comes naturally, get feedback, then do more. Doing is the only way to learn tacit skills. You can read about the best way to ride a bike for 10 years and achieve nothing. Or you can spend an afternoon failing a lot until you can ride a bike. Software architecture and code structure are similar. You just gotta produce piles upon piles of code and see what works.
- deleted 2y ago[deleted]
- int_19h 2y ago"Get feedback" is the key part here. When feedback is "just do what comes naturally", you will not get better.
- skylanh 2y agoI heard this presented as a photography class. Doing a quick search shows that it's from a memory plot in "Atomic Habits" by James Clear. The story features Jerry Uelsmann and having his class of photographers either work by quantity or quality of shots. The specific example I remember was "you can only take 1 shot" vs "take as many as you can"; and the lesson being /the group that did many reps had ultimately better photos/.
- Swizec 2y ago> Doing a quick search shows that it's from a memory plot in "Atomic Habits" by James Clear. The post I linked predates Atomic Habits by 10 years :)
- hoseja 2y agoThat is "do what comes naturally for a long time". Is education about efficiently and effectively transferring thousands of years of invention and practice insights or about letting everyone build civilization from first principles?
- Affric 2y agoHoly moly, I am so triggered. I have never seen so many kids harmed by bad pedagogy as “just do what comes naturally”. My daughter’s PE teacher gaslit her into thinking she was left handed with this advice and just created the belief that she was inept. 99% of what we do doesn’t come naturally, that’s why we are the most adaptable and successful megafauna in the history of the planet. Learning is the essence of humanity. Edit: you will be happy to know I fixed my daughters throwing technique with evidence based double blind tests to show her I knew what I was talking about and then taught her how to throw.
- pavel_lishin 2y agoThis is advice often given to me to try to entice me to dance, which I hate doing, and nobody believes me that "what comes naturally" is getting off the dance floor and not dancing!
- Affric 2y agoHaha, yes. My confidence dancing was terrible for years because of similar advice. Turns out all the girls and boys who were good had been practicing! Who would have thought.
- rendaw 2y agoRecently I've been thinking the important thing is that advice is always highly context sensitive, so throwing out "good advice" without qualification or discernment leads to a lot of harm. Take (again) dating advice: Saying something like "you shouldn't put so much emphasis on someone's looks" may help someone who is unsuccessful at dating and puts an inordinate emphasis on looks in their selection process. But if someone who already had a balanced view on looks that hears the advice, they may take it to heart and try dating people they have no physical attraction to and find less success.
- dayjaby 2y ago> Advice is a dangerous gift, even from the wise to the wise, and all courses may run ill. Quote from a famous wizard.
- mightybyte 2y agoYes, this post is classic. My answer to Brent's "monad tutorial fallacy" is https://mightybyte.github.io/monad-challenges/ https://mightybyte.github.io/monad-challenges/. It was inspired by The Matasano Crypto Challenges that Thomas Ptacek & others created awhile back which, instead of trying to teach you cryptanalysis, guides you down the path of actually doing realistic cryptanalysis with a series of challenges.
- pdpi 2y agoFor a long while now, I've been trying to write a monad tutorial I'm actually happy to give people as an entry point, and that point is precisely why I haven't put anything out there yet. It's also the reason I keep trying: there's something important to be learnt there in terms of communicating tricky concepts.
- kqr 2y agoI think the lesson is that tricky concepts have to be taught by example. Some theoretically-bent people can read a definition and generate their own examples, but most people I've met need to be presented with and taught one example at a time. After a while, they just get it and the abstraction falls into place. https://two-wrongs.com/the-what-are-monads-fallacy.html https://two-wrongs.com/the-what-are-monads-fallacy.html
- pdpi 2y ago> I think the lesson is that tricky concepts have to be taught by example. The bigger insight, for me, is that they also have to be taught by counter-example. E.g. it's easy to find Functors that are neither Applicatives nor Monads (usually, because you can't produce a reasonable definition for `return`). It's surprisingly hard to find a non-contrived example of a Functor that is also an Applicative, but *is not* a Monad. Without that counter-example, it's very tricky to build the intuition for where the boundary lies.
- andrepd 2y agoNow I'm curious: what's this non-contrived example?
- pdpi 2y agoValidation. You can think of it as shaped like Either [Error] Value, but the implementation is different. Consider this example: pure . Config <$> validate option1 <*> validate option2 <*> validate option3 Either would short circuit on the first validation error. There’s two interesting things here though: there are no data dependencies between different validations (so we don’t _need_ a monad), and it’s useful to accumulate errors to know if both option1 and option3 failed to validate (so we don’t _want_ the Either monad’s short circuiting behaviour). The implementation is pretty straightforward, too!