The Spiral of Learning

Wed, May 30, 2012

An hour ago, I was staring at a problem on the 4clojure website. Last weekend, I found myself wandering through Zed Shaw’s Learn C the Hard Way. Three days before that, I was taking a stab at figuring what kind of visualizations would make sense if you want to come up with the mother of all comparison’s between two of football’s greatest ever players. Four days before that, I was looking at some classifiers. Five weeks ago, I was totally lost in Learn You Some Erlang, and three weeks before that I was trying to make sense of all the hype around Node.js.

This is a pattern that I have experienced throughout the last three years of my life. The technologies and tools might have been different, but the experience and the pain that leaves me in have been consistent and consistently high, respectively. I would pick up something, throw all my energy at it and would learn some stuff. And then, the day when I don’t have the energy or enthusiasm for anything comes up. I would sit there jumping between Wikipedia pages. This loss of interest would be temporary, and the following day I would have all the energy and enthusiasm in the world. And then the bad thing happens - I don’t go and pick up what I left mid-way. I would get fascinated by something totally new or something I had left halfway through two weeks ago.

At the time of writing, I have 32 pet projects in my ~/src/play folder. Only one of them is in a complete state. Those projects totally differ from each other on what they intend to achieve. I have an OCR in there and I have a half-cooked version of what is a web interface for VLC. I have a lot of Shell scripts, Lisp snippets, Haskell, Clojure, Python, Ruby and Java in there. All semi-cooked and to be frank utterly useless. And every time I think about this, I feel bad.

I have been thinking about this a lot lately and increasingly getting concerned. I have slowly realized that there is a lot of stuff that I know bits of, but there is nothing that I have mastered. What I am doing is essentially traveling on a spiral of learning. Despite the fact that I drop and pickup new stuff every other week, I have realized that I do come back to things I abandoned. For example, I have made about 7 stabs at learning Haskell. Each time, either of these things happen - I lose interest because for want of focus or I hit an abrupt spike on the learning curve and fall back hard. But every time I go back, I have observed that I have become a better Haskell programmer. I understand functional programming much better than what I did when I took my first stab at it.

Now that I have sat down and thought about it, this cycle has happened on almost all the stuff that I have picked up to learn. Arabic, Node.js, Rails, Clojure, Erlang, whatever I always come back to these for a short period of time, only to leave it abruptly. But whenever I leave, I leave with a slightly better understanding of it.

This is what I am going through (Apologies for the bad diagram):

Learning Spiral

This diagram was created using Dabbleboard

Ideally, one would want the slope of the climb to be constant and time period spent one thing to be longer. In my case, the slop is erratic and the frequency of switching between stuff is big. Over time, there is an accumulation of knowledge and it has a positive gradient.

I have come to realize that I am not the only one going through this. I have seen a lot of others struggling with the same spiral. From talking to people about this, one possible solution seems to be to put in a strong effort to come back to what you love most.

In my case, I am not even sure what that is. If my life depended on picking something, I would pick football. May be I should try and do football visualizations or start writing about the areas of football that interest me the most - how football acts as a mirror for the society where it gets played. I am going to try this for some time and see how that turns out. As you can see, I just signed up for one more thing.