Early in my career, I believed that if I need to learn any technology, I should buy best books and read them end to end. After reading all chapters, I will implement my knowledge and will become expert in that technology. I learnt by that way but with very slow pace and even then I had gaps in my knowledge because by the time I started implementation, I forgot theory.
In today’s world where new technologies and frameworks are introducing frequently and existing technologies and frameworks are updating rapidly, Most of time, I do not have enough time to learn by this approach. So it was high time to adopt new approach to learn faster.
Step 1 : Identify the Scope
Every technology is very vast and contains various features. We do not need to learn everything and should learn only basics and selective features which are required for our daily work. Rest can be learnt as and when required.
As a first step to learn any new technology, I do some research on internet about that technology and its features. Now I know what exact topics are in given technology, I move further to identify most important topics which I must learn to get command for my daily work.
Now I have a list of topics which I need to learn. I estimate those at high level. My learning sprint duration is 2 weeks with 20 hours per week. So If my estimation is more that 40 hours, I cut down list further to choose most important topics which I must learn first to fit in 40 hours.
At this time, I have a definite list of topics to learn about a technology in 2 weeks. Now I set sprint exit criteria. I will set some criteria objectively that what will I achieve after learning these topics in 2 weeks like after learning C# basics in 2 weeks, I will be capable to write basic programming applications in C#. It will help me to confirm that I have hit the target or not. if in case I have not, I can go back to learn again to fill my knowledge gaps.
Step 2. Create Learning Plan
In this step, I find resources to learn chosen topics. it can be blogs, online tutorials, books and sample project. I try to close that what topic I will read from where. It is not necessary that I will have to learn everything from 1 book only.
Now I have a list of topics with information that what topic I will read from where, I organize these topics in order. It helps me to know that what topic I will read first and what after next to reach to my target. I take help from books to close order because chapters in Book are always organized to learn from basics then advance.
Step 3. Make Hands Dirty
This is repetitive step for each topic I closed above for my sprint. I pick first topic and skim through that topic quickly. Once I get some sense about topic, I jump on computer and start applying my understanding.
This is time where I do not limit myself and play around that topic. it helps me to form questions like how this is working, what will happen if I do this. More I play to answer my questions, more I become clear with my fundamentals. If I am stuck somewhere, I note down that problem and move ahead.
Once I am comfortable that with my limited knowledge, I am clear with fundamentals, I go back to my resource to read that topic completely and discover my answers. During reading, if required, I go back to computer and make my hands dirty again.
I repeat this step for each topic I closed in step 1 and 2. Once I finish all topics, I check my exit criteria and if in case any gap, I plan those to fill in next sprint.
These 3 steps are nothing new and have been repeated so many times. These steps help you to develop a system that you can use to teach yourself to get consistent result.