Friday, March 14, 2008

How we learn

We continue learning all the days of our lives. Or so I heard. Now, I want to avoid getting too technical and talking about short term and long term memory and cognition and so on. But in short, short term memory, or task memory, has to do with the current task that we are engaged in. For instance, if you are cooking dinner, then the items in your short term memory has something to do with cooking. Since short term memory is limited, people tend to perform badly when there are more than one tasks occupying their short term memory. Hence, multitasking is hard.

Long term memory contains the things that we actually learn. For example, your address, how to tie your shoes, how to drive and so on. Most of us cannot remember what we ate for breakfast on the third of April 1987. That is because, that fact was not important enough to make it into our long term memory.

The trick is getting the things we need to know into our long term memory. Apparently, our brains are selective about what gets into the long term memory. So I may want to learn how to use the JPA and Hibernate and Spring and Struts 2 and a myriad other frameworks, API's and tools but my brain may decide that its not important enough to remember. Instead, I could quote word for word every line from the Lord of The Rings. Why?

Recently I started attempting to use Appfuse to create a new project that I am about to build. Since I am already experienced with Hibernate, Struts 1.x and some of the other technologies involved I thought that I would breeze through the learning phase. That was not that case. After examining why it was so difficult for me to learn this framework I realized that I never gave myself the chance to learn. I approached the task of learning with arrogance. Believing that I already knew enough.

Arrogance closed the door to learning. So I tried a series of ten minute approaches and none worked and my frustration grew and I blamed Appfuse for being too complex.

Then one day I spent several hours working on Struts 2 alone. I found it quite easy to pick up and learn. I stopped, rested did no more learning that day.

The next day I spent several hours on sitemesh. Again, quite easy to learn and use. I then spent some hours each on Freemarker, Maven and Spring. At the end I tried Appfuse again and found it quite easy to use. In fact I wonder how I ever got anything done before.

The lessons I learned is that first, don't be arrogant about your knowledge. There is always more to learn. And second, give yourself a chance to learn. That is, make time to spend on the topic, make sure you don't crowd too many different new things into the same day. Your brain needs time to convert the things you experience into long term memory.