For a while now I have been trying to learn a little about functional programming. I was lucky. I went to some free courses run by NICTA and Tony Morris. I was also able to hassle Tony about concepts I didn’t understand. It was one of the most confronting experiences of my professional life. The subject material wasn’t easy.
Then last year, a couple of former colleagues launched a ‘MOOC’, The Science of Everyday Thinking.
It was an excellent course that helped me debug the way I thought about the world. Episode five, ‘Learning to Learn’ stood out the most. Actually it made me stop.
Shit. I am an expert beginner.
During my time at university I managed a bit of a fluke. By accident, I developed effective learning techniques (something not everyone does). I didn’t know it at the time, and I certainly didn’t appreciate it.
I found my internal monologue deriding people ‘That ain’t gonna help you.’ whenever I saw people furiously highlighting textbooks, and transcribing lectures. And, by the end of my university degree I had become so cocksure of myself. I thought I could learn anything. Give me three weeks, the course material, past exams and I could better than pass anything you threw at me.
By the end of my degree, I had refined The Study Ritual. Two or three weeks out from the exam period I would withdraw from the world and begin.
It started with a timetable. Two or three practice exams for each of my courses, interleaved over those weeks. Authentic exam conditions. Usually the kitchen table, timed, with only what I could take into the real exam. I can assure you, I ‘failed’ every first practice exam I did during The Study Ritual.
Each day, I had forty minutes of revision allocated to each subject, with a twenty minute break in-between. At the start of The Study Ritual, I revised by creating course summaries. Towards the end, I did basic retrieval practice. This practice was either working through example problems (like the ones I flunked in practice exams) or that classic ‘cover, write and check’ technique for remembering stuff.
It took a fair amount of discipline and work. But by the time an exam rolled round, I was confident. A few butterflies in the belly, but I didn’t seem stressed compared to some of my peers. It also worked well. My performance at university steadily improved as I refined The Study Ritual.
So what happened? Why was I finding this functional programming stuff so damn hard?
During a professional career, you often optimise on performance, not learning. As a software engineer I am evaluated on how quickly I can build quality systems. Not how well I understand the material I use to build these systems directly.
The problem? I was able to build systems well enough to get a few promotions. But, I wasn’t building underlying knowledge fast enough. How I build knowledge in my professional career is not as effective as The Study Ritual. Functional programming was the first desirable difficulty (the learning equivalent of no pain, no gain) that I had faced in five years.
In many ways, I hope my monastic engineering experience will address this problem. Will I be able to develop better learning techniques that are more compatible with the time pressures of professional work? Will the one month projects I build at the end of my engineering experience be better than those at the start?
Hi! Subconsciously you already know this, but let's make it obvious. Hopefully this article was helpful. You might also find yourself following a link to Amazon, Lego or eBay to learn more about parts or equipment. If you end up placing an order, I make a couple of dollarydoos. We aren't talking a rapper lifestyle of supercars and yachts, but it does help pay for the stuff you see here. So a massive shoutout to everyone that enables this place. Thanks!