The idea comes from Scott Young newsletter. As programmers, we often think about how the end result will look and interact before we write code. We build up tests and “stubs” – empty programs that behave just like the final program would. By doing this we break a complex task into many simple tasks. Now we fill-in the stabs with the code and test it with the tests we already wrote.
Now apply the same strategy to learning.
1. We visualize how we will act having the skillset we want to acquire.
2. Find out how can one test that the skillset has indeed been acquired.
3. What skill needs to be acquired prior than the whole skillset is available?
4. Work backwards to the skills we already have, and think how to verify that we pass each milestone.
5. Now create a learning program, following the program the whole skillset should be acquired.
6. Start learning!
This process is important when we do not know what we need to learn to accomplish a task. By understanding which part of prerequisite content will be used for specific tasks in the process, the learning may be further focussed and streamlined.
One word of caution: as we learn new things, we do need to revise our plans. Do not expect that the original plan will work without alterations. Plan sessions for progress visualization and achievements testing the same way you plan Pomodoro rests.
Personally, I work 50% of the time. 25% of the time I spend on Pomodoro rests, and 25% of the time on planning, visualization and assumption testing. This sounds counterproductive, but when I do work, I am super-effecive.