@sliminality I always come back to "So You Want to be a Wizard"
@dngrs I usually say something to the effect of "I personally found this very subtle/unintuitive, and had to revisit it from several perspectives to really get it. I'd avoid being too harsh on yourself if you don't internalize it quickly, or if it seems deceptively simple at first"
In general I've had success just labeling things (whether in training materials, or live sessions) with "WARNING: NONTRIVIAL, HANDLE WITH CARE" so people have some sense of relative distribution of cognitive effort
@sliminality The best book I ever read on computer networking was written with a tone of "I don't understand this either, but here we are, so let's work it out"*.
Walter Goralski, "SONET", 1997.
@roboguy no slam-dunk answers but here are things that have helped me:
1) read (or watch lectures given by) other people who teach in this style
2) as you learn, pay close attention to your own misconceptions and evolving understanding. Whenever something finally clicks, think about how you would present the material to the previous version of yourself. Actually writing the notes/tutorial can help a lot (and there are always people who are at your previous level of understanding!) plus it crystallizes your own knowledge and serves as useful reference material later on if you forget. Likewise, address your own misconceptions, pay attention to what feels excessively patronizing when you read other people's materials, etc.
3) take reasonably-clear materials written by folks who make no attempt to sugarcoat things, and figure out how to adapt it to be slightly more explicitly encouraging. This exercise can also yield useful longer-term notes/resources for yourself
@sliminality Thank you! That's good advice.
I've been trying to do 2 lately, but I still need more practice with it. I was working on a (PL-themed) introduction to categorical semantics with that in mind, while it's still relatively fresh for me.
There are a lot of other things I want to work on with that approach too, but that's going to have to wait until I have a little more time for them. But whenever I have some idea for those things, I still at least make a note of it.
@sliminality @roboguy some caution with 2:
It is not always the case that the last thing that made a concept click is necessarily the essential route to it.
Sometimes what's needed is to accumulate enough dexterity with the concepts so that they click together. Then, the only role the last thing that makes the concept click is being the forcing function for you to review all the concepts and see how they hang together and *click*.
A good demonstration for this confusion is the 'a monad is like a burrito' phenomenon.
@ohad @sliminality This is something I was thinking about lately, too.
I had some moments like that somewhat recently.
One moment was learning about syntactic categories and how they relate to type theory. Several things just suddenly made more sense. I even felt a little bit more comfortable with category theory in general after that.
For whatever reason, thinking about morphisms as being like well-typed open terms made things a *lot* more clear to me than trying to think of them as being like functions (in a programming language).
This also made it a little easier for me to think about what presheaf categories are doing. From my current perspective, morphisms of presheaves are sort of like inference rules.
I'm surprised there aren't many introductory resources that describe that, especially with all that's been written on introductions to various category theory concepts!
But I don't know how specific to me it is that I found that so useful. Surely there are other people out there who'd also benefit from learning about it, though. But I also know there are other perspectives, too.
I was trying to "unwind" the other helpful things I looked at before. The generalized element perspective of morphisms is also very helpful for me, for instance.
@ibrahimtencer 1) it's simply a framing, not an ironclad guarantee. "X is actually super simple!" cannot be guaranteed either
2) it's not about controlling your audience, but illuminating possibilities. a combination of encouragement and good didactic presentation can help people accomplish things they previously would not have assumed; this is the premise of instructional design
3) some things are simply hard. compared to "X is easy" framing, this version allows you to present difficult concepts without disingenuous sugarcoating (or worse, presenting a flawed simplification), and is framed towards building the learner's self-efficacy alongside their understanding of the concept per se.
@chrisamaphone @sliminality There's a comedy routine, maybe by George Carlin, about people who give driving directions that include “you can't miss it”.
“Oh, so now I'm lost _and_ stupid.”
@sliminality this would make my life as a programmer and black market educator so much easier if this was the default.
I cringe when people virtue signal their seniority by saying how we, “have to keep things simple.”
Some things are difficult and complex. And people are capable of learning. It’s harmful pretending it’s simple or trying to give code the veneer of appearing simple.
@sliminality I tried really hard for this when I wrote Higher-Order Perl. “This is easy” seems like a funny thing to say about anything? I think “easy” and “difficult” don't work that way, most of the time. What some people find difficult, like calculus or being courteous, can be easy for others.
There are exceptions, of course. I don't object to describing NP-hard problems as hard. Or running a functional democracy.
@sliminality Yes, it's not at all the same thing.
And I think democracy is objectively hard, in the sense that it's been tried many times, problems have kept coming up, and often they haven't been successfully solved.
(Not to say it isn't worth doing. Just that it's hard!)