For the past couple of weeks, I’ve been participating in the Futurelearn Learn to Code for Data Analysis online course. Last night I took the, for me, difficult decision to discontinue my involvement. This isn’t at all unusual behaviour for a MOOC, however it is for me; once committed, I usually follow through.
The course is four weeks long and I’ve passed the halfway point, but it’s become clear that I’m going to need to invest far more time than the four or five hours that is the usual expectation. That’s time I can ill afford and time I would rather devote to the other MOOC I’m currently engaged in on Coursera – Qualitative Research Methods. So why the change of heart? The answer I guess begins with my rationale for starting the course. At the moment, the possibility of me needing to extract data, process and analyse it is quite small; I am after all currently taking a (mainly) qualitative approach. However, if an interesting avenue of study arose, I wanted to be in the position where I could follow that. If I undertake a social network analysis of some sort, then there are ready-made tools to help me with that. Developing the skill to customise my approach to better suit my needs is a luxury, and one based merely on a potential, rather than actual, need. But why embark on the course in the first place and what prompted the decision to withdraw?
The course was in Python, a programming language particularly suited to this area apparently. With only the absolute minimum of coding skills and knowledge, I hoped to become at least a little more familiar with one of the common languages and ideally, be able to code independently. The course guided you through activities in a recipe book format – set the context, provide an example or two, then require the participant to follow some instructions. At the end of each week there was a project which built upon the skills and knowledge developed during the week. Although I found them tough, I managed the first two projects, but could got by, by replicating recipes. Crucially however, I didn’t fully understand what I was doing. It was a bit like being able to follow a recipe in a cooking book, then being confronted with slightly different ingredients. Is it OK to substitute one for the other? The recipe I used before involved baking powder, but I only have baking soda so can I use that? Without a deeper understanding you can’t make that kind of decision. I’d reached the point on the course where I was out of my depth and would need to undertake some serious remedial work to become more confident and capable. The tasks were becoming less recipe driven and required the greater level of independence I had yet to develop. I gave it a shot, but retracing your steps is quite difficult because the course, as most online materials of this type, was designed in chunks, each with Previous/Next navigation. Alternately you can return to the course navigation panel and jump to different parts, but what you can’t do is see the detail in the sequence of learning all at once. This is however possible in the Python Notebook – an integrated environment where instructions and text coexist together with code; you can read and write, then create and execute snippets of code all on the same page. The problem was that the Notebooks were so long, they involved the scroll of death and you still couldn’t easily flip back and forth from one section to another. I think I could have got round that by investing the time to make my own notes as I went along, so that I could have them alongside the tasks with which I was engaged. What I couldn’t get round though, and what really hindered my understanding, was the way in which code executed at one point in a Notebook either did or didn’t remain active later on. So you might define a term near the start of a Notebook which you then use much further down the page, a couple of days later. That term might be of great importance, but became invisible because you were forever working from one small, manageable chunk of code to the next , rather than having it all visible at once. This is helpful in one sense, but for me meant I was struggling to hold the full picture.
The intention of the course was clearly to provide exercises and activities grounded in an actual meaningful project. This meant that a bunch of the fundamentals had been missed. In many of the less sophisticated online coding tutorials, you often start with the very, very basics and build up from a blank screen. This can be quite boring and more importantly disconnected from real-world tasks until sufficient skill has been developed, but this can be much further down the line.
Perhaps what I need to do then are some Python basics tutorials to give me the foundational knowledge I need to allow me to walk before I try to run. The I might be able to return to Learn to Code with sufficient underpinning to make a better attempt at the later activities. Now, where can I manufacture the time I need to do that …