The fast way of learning a new programming language - Part II
Collect the learning materials and narrow them down to the minimum necessary amount. And 10x your learning speed.
In the first part, we have covered the basics of learning a new language - focusing on the concept of learning a new language means we already have some programming experience.
Reflection
The concept was simple: learn by having a vision. A goal that we want to reach out to. As we have discussed, our current goal is to create a simple web API with Spring boot. Now, we going to collect the proper learning materials, throw away everything that we don't need, and focus only on our goal
Learning materials
As we have discussed, we want to create a web API with spring boot. From that sentence, it is obvious that we want to learn topics we need to do
- language basics
- web development
- spring-boot.
Collecting learning materials
Now we have the most important topics, time to google, visit forums and ask our friends. That step can take from one hour to one year - depending on how much we like to procrastinate things and do binge research. To avoid those traps, I would suggest the following:
- Don't spend more than 2 or 3 hours on our search. Having not the 100% optimal materials is way better than having nothing and just jumping around.
- If we know somebody who already works in the targeted area, just simply ask them
Assuming we did our research, let see an example of the collected materials:
Language basics:
- Java: The Complete Reference (Book): Huge book, we will tear it apart soon and narrow the chapters only to the must-have ones.
- Google Java Style Guide (GitHub): We don't want to reinvent the wheel. And Google guys documented a style guide for us.
Web and Spring Boot:
- Spring & Hibernate for Beginners (includes Spring Boot) (Udemy): a full course, I would do it from cover to cover but maybe not in 1x speed.
Very-long book: tear it apart
It is long and I bet it is full of topics that we don't need: those language basics books are usually full with things like XML processing, working with disk IO, multi-threading (that we usually don't need if we write APIs as frameworks can handle them). On the other part, when we create an API, we use the OO basics, we need collections and generics. In modern languages, we also have lambdas and high-order functions. We will focus on them. So now, we take the table of contents and separate the chapters into three main categories:
- skim it through the very basics. Don't get into the details, just do a quick check about creating a variable, having a loop, or an if statement. I'll color them yellow.
- read carefully, take attention to the details: I would say, the important part: how we do OO basics like inheritance, how to do generics, how exception handling working. Color: blue.
- completely ignore. Stuff we usually don't need to write an API. Like writing XML files onto the disk. So important, I don't even color them.
Now let's take a look at the table of contents and color code the chapters:
I hope now it is obvious: our goal is not to read the whole book but limit the reading process to one or two days. And also, we can keep the book in case we need some additional details later or want to re-visit some topics.
Learn by doing
We have a clear vision and the proper training materials. The first logical approach would be consuming the learning materials and after that doing the learning project. I don't know how other people's mind work but my brain get bored really fast. So instead of the waterfall approach of learning all things and after that doing the coding work, I would split my time: usually, I learn an hour after lunch. And in the other time do my projects. So that the learning takes more time but we already produce tons of code. And the materials can put the existing pieces together. They fill the gaps and draw our attention to our mistakes.
Extra: 10x the learning speed
The very last step if we want to learn in a light-speed piece is simple: get a mentor. Find somebody who is willing to teach. A great candidate can be a senior who wants to gain teaching experience to reach senior+ levels in their career. Schedule a regular time with your mentor. Prepare with questions. And avoid pitfalls that they already fell into.