My high-level learning plan is already done. This is the time to create a detailed learning plan for the first step.
Overview of the high plan
As I wrote in my previous blog post about my high-level learning plan, I have a lot of stuff to learn during the next year. To learn all of these programming tools and technologies, I going to copy the Microsoft To-Do site. In that way, I do not have to figure out what kind of software I want to build, I just simply copy the functionality of an existing one.
The first step: Test-driven development
Test-driven development is a great topic to start, there were several reasons why I have been ranked that for the first place.
Actually, I do not have to learn new technology, I can use my existing knowledge to do the coding.
It forces me to think about the behavior of my project, ignoring some implementation details, like data storage, GUI or user management. Just back to the plain old basics: play around with some objects.
Set the goal
My goal is to implement the basic objects. As I have checked the Microsoft To-Do website, there are only a few of them: It works with lists and to-do items. That’s all.
At the end of that step, I will have these objects, a service class for each of them that manages CRUD methods, some listing and sorting methods and a mocked list that helps unit testing and all of them will be created using test-driven development principles.
Collect learning materials
To complete the detailed plan, there is not enough just set the goal and start coding. When I going to implement the first step, I do not want to spend hours by looking after information on the internet, so I have collected the necessary learning materials.
To learn new things, I prefer to use Pluralsight and complement it with written books. And also, I have to watch out also the quantity and the quality of the materials. To check that, I have talked with experienced friends and checked the recommendations of the materials.
My learning materials
PluralSight: Test-driven Development: The Big Picture
That is a high-level overview of Test-driven development.
As you can see, I prefer to use PluralSight. There is a great video from John Sonmez about the benefits of that tool: I do not have to buy tons of books this is searchable and available almost everywhere.
As I have mentioned before, I prefer learning by doing. But there are a lot of learning materials. Is there any paradox between saying learn by doing and choosing 3 learning materials for the same topic? The answer is no.
My plan is just going through the introduction video. After that, immediately I start to code.
Coding: yes, there is the time to get my hands dirty.
Create a question list: If I have a question that needs to be answered as soon as possible, I will know exactly where I have to go to find an answer. When I have a question or just something additional that I am interested in, I just write down to a list.
When I have ended the coding part, I check the question list. I try to find the answers in the detailed learning materials.
After that, I check again the table of contents of the learning materials and learn additional stuff that I interested it.
Refactoring: You should think now I am done and can go to the next step. Actually, that is the time when I think through on everything that I have learned and refactor my existing code. Remember, every time the last step is just to go back and refactor.
I think I can walk through that list in a week. But I actually, I have a wife and two kids and I cannot imagine anything that can kill your time than a family, so I give 2 weeks for myself.
There is my way to create a detailed learning plan. I have grabbed one item from my one-year learning plan and created a detailed plan about that. There are the learning materials and an action plan. Also, I have defined a deadline and committed to doing my job for the given deadline.
Now, I have everything in my hand that I need. That is the time when I can start my one-year learning journey.