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?