You don't know that you don't knowHere is an example. I knew that I did not know Box Model. I did not know that I don't know CSS animations. During the step 1, get the big picture stage you will find out there are things that you did not know you don't know. Is CSS animations relevant to my learning project? You don't need to spend time learning that topic to decide whether you want to learn it.
Broad TopicsTopics that are too broad are not feasible to learn within a few weeks. Example: Ruby Meta-programming. Break it down. I will have learned the basics of Ruby meta-programming when I can develop a Sinatra clone. This learning project can fit into a 4-6 weeks time frame.
Sequence of the 10 StepsYou cannot change the sequence of some of the steps. For instance, play around step must come before 'Learn enough to do something useful' step. Play around step primes the pump. It prepares your brain to become receptive to the new knowledge you will gain in the step 9 (Learn enough to do something useful).
What if step 3, define success is step 1? If the step 3 is the first step, you may end up with a success criteria that is too big due to lack of proper scope.
What if the activity for play around step, if it's not a GUI tool?For instance, learning CSS does not have any complicated GUI tool that you can play around. The objective of play around step is to come up with focus questions. For learning CSS, take the one page hand drawn paper prototype and come up with as many focus questions as you can. You can get help from someone who knows CSS.
- How do I center the main content?
- How do I create the navigation bar?
- How do I display the image to the left?
I find my topic difficult to learn.Learning a new topic is like lifting weights. You are not going to become a Olympic champion in a few weeks. You can raise the level of difficulty of your learning projects over time. Build on top of successes. You will find the material difficult to learn if you don't have the pre-requisite knowledge. If you break down the topic into smaller chunks that takes 5 to 10 mins, you can probably finish it between other tasks during the day.
What if I am learning to keep up with new tech?Learn the new tech using the 10 step process to build a reference project. Why? Because you can use another technology to build the same reference project. This will allow you to compare different technology to weigh it's advantages and disadvantages. Think Java Pet Store sample app for J2EE platform. You can answer questions like:
- What is the learning curve like?
- How easy is it to setup?
- How well is it documented?
- How is the support from the developer community?
What if all the different fields are equally important?Pick one. If you have difficulty in choosing the first one to focus on, use pair ranking to decide. I developed a pair ranking gem.
Beginner's MindYou can draw anything in a blank canvas. Be open to new ideas. Don't have preconceived notion or bias. Avoid things like, you can do it in a better way using [insert your favorite language / framework here]. You need to have a beginner's state of mind.
Progression of TopicsAs an example, here is the progression for a new Rails developer learning Ruby :
1. How to install Ruby and Ruby version manager.
2. How to play with IRB?
3. Basic data structures such as Hash, Array
4. Control Flow