About a month ago I started working on a pet project, a personal money management application. In two weeks I manage to set up a few classes and a rudimentary interface, then I went on holiday for two weeks. I came back and realized that some of the knowledge that I had gained during the project was beginning to slip away. How to format dates, how to use JTables, what were the responsibilities of some of the classes that I created. It shows just how unreliable memory really is.
As the old Chinese proverb goes:
“the faintest ink is more powerful than the strongest memory.”
I have taken to recording everything I learn into a personal wiki. Reformatted with only the most pertinent and pragmatic information. Something that I can spend a few minutes reading and refreshing my memory – but its not quite the same a really knowing something.
Similarly this applies to a great deal many books that I have read. I spent 12 hours yesterday transcribing notes and highlights I had made about the subject of UML. While much of it was familiar, much of it was forgotten. Having now transferred that knowledge into my personal wiki in an easily accessible format, hopefully it’ll be the last time I’ll have to spend so much time on the subject.
If you don’t use it, you lose it.
True for any acquired skilled, the longer you leave the skill or ability to degrade the more difficult it is to perform or even recall later. While some skills take longer to fade than others, some seem to disappear as soon as you stop applying it. Certainly this applies to intellectual skills or knowledge. It begs the question is the rate of degradation related to the extent of which it was used? Or is it more to do with how recently it was applied?
Driving is a difficult skill to forget, after all you apply those skills on a daily basis. But much of the knowledge in programming is really only utilized once a month or even once a year. How can we make those discoveries and insights and knowledge and skill really stick if you’re using it so little?
I suppose exercises would help. Kata’s or daily practices to keep your knowledge and ability levels high. But how can we create these exercises? That not only refresh your memory, but also take up as little time as possible, yet easy to do – otherwise we can become lazy.
It’s not enough to re-read or review old knowledge. When it comes to programming you really have to apply yourself to really understand your own competency in the subject.
I wonder if it’s just me, or if it applies to all programmers at all levels of ability…
I wonder if the constant practice will turn the average or novice programmer into a master programmer?
I believe that I should keep an eye out for potential exercises, and create my own unique set of tests to refresh and sharpen my programming abilities. However, it does seem like it will require a lot of dedication, discipline, and effort…