I agree so hard with this thread from @quephird, and the @jrose post that inspired it.
Learning diverse and esoteric programming languages has unquestionably made me a better software developer and given me a leg up. And, no less important: it’s been •fun•! My own experience strongly bears out what these two are saying.
@quephird @jrose The Programming Languages course I teach is built around this idea of tinkering with the unfamiliar as a way of learning underlying patterns, and learning how to learn — as opposed to preparing students specifically for graduate research in programming languages (“this semester, we will build a subset of OCaml in OCaml”) or offering a utilitarian pass-the-exam checklist of specific language paradigms and language features. (Both of those can be good courses, but they’re not the one I teach!)
2/
I spend a lot of time giving my students advice that is various forms of “don’t artificially narrow yourself” and “learn to embrace the unfamiliar with curiosity instead of fear.”
And do they get it? From the p-lang course, from the curriculum in general? Based on what I see, I think they actually •do• to a surprising extent. And if they do, I think two big reasons for that are (1) it’s a conscious learning goal across many classes through the curriculum, not just a single unit or an afterthought, and (2) we try to address this as •social-emotional learning•, not just technical knowledge accretion.
3/
By “social-emotional learning,” I mean things like:
- Learning programming is hard, frustrating, daunting, makes you feel stupid; you need psychological tools for dealing with all that
- Programming carries all sorts of social baggage, is absurdly gendered and racially coded in our culture, comes with all sorts of social pressures; you need to be mindful of all that or you’ll fall into the pit of it (whether you’re on the privileged or the marginalized side)
4/
- Learning how to explain and share what you already know is at least as important as what you know
- Learning how to lift up the people around you instead of being an asshole pays •extraordinary• dividends — for your career, for the people around you, and for your own psychological health
…etc etc, I could go on.
We forget so easily that software is made by humans for humans, and thus that humans are the ones learning to make it. Treating people like humans is so powerful, if we can figure out how to do it.
/end
"- Learning programming is hard, frustrating, daunting, makes you feel stupid; you need psychological tools for dealing with all that"
I wrote a web page once about how programming is like Dark Souls: