the problem of language
I was recently venting my frustration (on tumblr) about the fact that I started learning ruby three or four years ago…. when it turns out that, based on the sort of work I do and the tools I frequently use, learning python would’ve been a much better idea.
(Before anyone decides to start a flame war over ruby vs. python, I’m not making an objective claim about either language. I’m literally talking about myself, the work I do, and the tools I most frequently use. Of which, python tends to show up more than ruby. I’m of the general opinion that the ‘best’ language depends on context. Before I went to school in China, I didn’t learn Spanish. Not because Mandarin is ‘better’ than Spanish but because… well, Spanish would be about as useful as English was in China — not very useful at all.)
Now, the obvious solution to my problem is to switch to python, right? It isn’t known for being a difficult language to learn and I already (sort of) know a programming language already, right?
Sadly, not quite as easy it sounds. At least not for me. I’m not going to describe all of my disabilities and the functional limits they place on my ability to learn (and how quickly), but suffice it to say that, yes, I am disabled and it places real, insurmountable limits on my learning. Enough so that it has taken me about three years of self-study to get what probably amounts to a rudimentary knowledge of ruby. Most of what I do is write one-off scripts to work with the Tumblr API (for fun, mind you). I’m somewhat better with bash scripting because I use it at work.
Again. This is three years of steady self-motivated study on my part. For some people, I imagine they are looking at that and going, “three years and they aren’t even a real coder yet?”. Nope, not a real coder.
It occurred to me as I was talking about trying to switch to python that…A lot of tech rhetoric around coding and how everyone should learn it seems to forget that programming languages are languages. Yes, they are artificial languages but they are languages nonetheless. If one takes a moment to pause and really reflect on some of the implications of this, it suddenly becomes much clearer why not everyone is about to learn how to code.
Why? Because learning languages isn’t easy. Indeed, for some people, people like me, learning new languages is actually quite difficult. It is a time consuming laborious process that can require years of work before you gain a functional knowledge of the language. It might be surprising for some people to learn that, um, people have different aptitudes when it comes to language acquisition.
More importantly, it made me realize that the huge disconnect between how we teach natural languages and artificial ones is likely something that creates its own barrier. I’m suddenly thinking about how learning to code could be transformed if it actually incorporated some of the evidence and know-how of all the hordes of research done on language acquisition. Turns out, that there is already a huge body of research on language acquisition and instruction.
It makes me think of some of the coding workshops I’ve attended. I attended a RailsBridge thing for women. It was an afternoon. And, sure, we did stuff. But… ultimately, it was forgettable. Same with the python workshop I attended. Viewing the situation as language acquisition, rather than learning how to code, I’m not at all surprised that these workshops (at least for me) aren’t very helpful in terms of actually learning something.
I don’t think I’ve seen a single workshop for, say, learning Mandarin. And I’m talking a four hour, one afternoon workshop (like the RailsBridge one). The python on was two days. But even two days… Can you imagine someone attempting to effectively teach a natural language within this time frame? Can you imagine walking into one of these workshops with the expectation that you’d leave with any useful knowledge about the language? That you’d be able to have a conversation, even if it is really basic?
I can’t. For Chinese… this is what my bachelor degree is in. I spent five years or something learning it in university? And then I went to school in China for a year. When I got back from that experience, my Chinese was significantly better than when I arrived, but by no one’s estimation was I ‘fluent’ (in writing, reading, speaking, or listening).
Similarly, someone telling me (who is bad at language learning) to simply switch from ruby to python recalls to me the class I took on ‘learning how to read Japanese for people who know Chinese’. A class like this is only possible because of the shared character set but that’s pretty much where the similarities end. Because each belongs to a different language group, the grammar, syntax, etc are completely different. That class nearly broke my brain.
But this is me. On the other hand, I know several polyglots. In China, I new someone from Kazakhstan who spoke Kazakh, Russian, French, English, and Chinese (perhaps more but these are the ones I know of). For me, what was really impressive isn’t the number of languages he knew but his ability to code-switch. At one point we were walking in a group and he was having like three different conversations at the same time, seamlessly switching between Mandarin, French, and English.
He’d be a great analogue to a 10x engineer. Skilled and able to easily acquire new languages which he then becomes just as skilled in. Sure, while the ‘10x engineer’ is likely to be more of a unicorn than anything else, the point remains that a lot of stuff in tech appears geared towards producing them anyway. Especially in terms of instruction and how I hear people talking about learning programming languages.
All of this, at the end, has me thinking about instruction, leaky pipelines, and diversity in tech. In a lot of ways, I represent a perfect example of the convergence of socio-economic factors that make pipes leaky. Based on my age and interests, I *could’ve* been one of those “I taught myself how to code as a teen and spent two years in college then dropped out to make lots of money” types. But I was poor, trans, gay, not-white-enough, and life got in the way (I was starting to learn how to code when I got kicked out of the house for the first time in Grade 10 and lost access to a computer and the internet).
But… also knowing, many years later and with the benefit of hindsight, my own difficulties with language acquisition, I have a sneaking suspicion that I’d wouldn’t have done very well in a traditional computer science department. Possibly not even at a two-year college for a diploma. The expectations and instructional styles aren’t something, I reckon would have been suited to my (dis)ability.
Imagine the possibilities, though. If tech looked towards the extent body of research about language acquisition and instruction. If we understood that learning a programming language might actually require the same amount of time and attention as learning a natural language. If people stopped expecting fluency from students who, at best, only had a year or so of instruction for a particular language.
Want everyone to learn how to code? Then learn how to teach *everyone*.