I recently had the opportunity to observe how a total newcomer to coding / computer programming starts their learning journey. She was embarking on this journey in Kabul, which brings some special considerations that I thought I’d outline here.
First off, coding in Afghanistan? I actually happen to think it’s not the worst thing someone could do with their time. Power outages and internet costs, while better than they were in previous years, still make the prospect of spending hundreds of hours learning skills a precarious proposition. (Outside Kabul, just to give some context, even big cities like Kandahar are starved of electricity. When I was down there recently we had a couple of hours per day at best.) But all that to one side, there’s a need for skilled professionals in the computer science / engineering world and there seems to be a decent amount of room for remote work. (Note that there’s some debate about the extent of the shortage but I don’t think it’s getting ahead of myself to suggest that proficiency in computer science will be a valuable skill in the years to come.)
If you are going through university in Afghanistan you’re teaching yourself anyway, to some extent. The quality of the tuition — even in some of the private universities — isn’t great and the job market doesn’t reward degree certificates; it rewards competency, something which you aren’t necessarily going to get from a degree / certificate. To use some of the free resources available online would seem like a smart option. Worst case, you make yourself a little more employable because you took some initiative and have skills to contribute to a new employer. Another scenario is that you have some skills you can market around the world, all from the convenience of your home.
All of this requires English. It’s an unfortunate fact that there really is no way round learning English if you want to teach yourself computer science skills. There are ways round it, especially at the beginning, but if you’re going to progress you’ll really have to have a decent level of competency at understanding technical documents / tutorials and the like. I wish it was otherwise, but that isn’t changing any time soon.
I wanted to recommend my friend learn via some resource that was at least partly in her native language, Dari / Persian. After all the fanfare of recent years about how young people are learning how to code around the world in a variety of languages, I was a bit disappointed at the options available. For Dari, there were basically no options. One site, code.org, had some initial courses that had been translated into Persian, but it was the Iranian version / dialect and this caused some problems in comprehending the instructions later on. Worse still, the courses were only half-translated. Videos in between units were in fast idiomatic English, with scenes and situations that seemed representative of some alien universe. Yes, it’s nice that Bill Gates was there to explain how variables work, but first let’s slow down and explain what a variable is, preferably without flashy graphics that don’t actually explain the topic.
There were various assumptions made about students’ experience and skills in mathematics. Early units in the code.org syllabus expect you to understand basic geometry and some algebra. I guess you have to start somewhere, but I wish there were ways of teaching this starting from an earlier baseline of understanding.
I had initially thought that a good way to get my friend thinking about some of the bigger issues would be to have her use a Raspberry Pi and handle some basic Linux administration but that ended up being too many new things at one time. Some of the much-vaunted tropes about learning to code really don’t make much sense.
I feel like better skills to teach at this level are more fundamental: how do you figure out the answer to a problem? how do you solve problems in general? This is actually the real skill that you want someone to master, not whether they can get a turtle to draw a circle in 4 colours, and this skill is not taught at all in these courses. (A corollary: how do you find good / worthwhile problems? or how do you figure out what things are worth working on? None of this is taught at all).
The kind of education provided by sites like code.org gets it backward. In this way of seeing the world, you can get busy ‘learning to code’ but it won’t necessarily fit into your life and you can’t really make real progress without other external guidance and support. The dream of universal education for a young person in somewhere like Afghanistan, delivered by these kinds of programmes, seems more smoke and mirrors than a real ladder towards education and real skills.