Endnote Turn Learning Into a Habit

Endnote Turn Learning into a Habit #

Hello, I am Wang Xindong.

As you come to the end of this lesson, I believe you have gained something from studying this course. In this final lesson, I want to talk to you about how to study OAuth 2.0.

When it comes to learning this topic, I am willing to share some of my experiences and insights with you. Personally, I believe that learning is never easy and can be somewhat “counterintuitive”. Think about it, who wouldn’t prefer to spend more time with their family after a busy day at work? And who wouldn’t want to spend weekends playing basketball with friends or watching movies with their girlfriend? However, learning must become a habit. In the book “The Pragmatic Programmer,” I read the following passage that I would like to share with you:

Knowledge investment is no exception. You need to invest a minimum amount of time regularly. Make it a habit if necessary. Hide in your home office or step into a coffee shop with wireless internet. Not every study session is equally productive, but as long as you schedule regular learning, you will succeed in the long run. If you keep waiting for free time or inspiration to strike, it will never happen.

After developing the “mental discipline” mentioned above, I will now talk to you about specific learning methods.

I divide learning into three levels, from low to high: basic learning, analytical learning, and thematic learning:

Basic learning starts with studying the most fundamental theoretical knowledge.

Analytical learning involves organizing the structure and context of knowledge and studying with questions in mind.

Thematic learning involves finding different resources to study the same topic.

From this perspective, basic learning and analytical learning are “point” learning, while thematic learning is “surface” learning. This overall process builds a knowledge network from points to surfaces. Now let’s talk about how learning OAuth 2.0 corresponds to these three levels.

During basic learning, we need to study the four basic roles of OAuth 2.0, including resource owner (user), client (third-party software), authorization server, and protected resource server. We also need to study the four basic authorization grant types of OAuth 2.0, including authorization code grant type, implicit grant type, client credentials grant type, and resource owner credentials grant type.

Once the scope of basic learning is determined, we need to apply these roles to each grant type, making them “form a chain.” At this point, you can use the example of Xiao Ming using Xiao Tu’s food delivery app to illustrate the entire workflow of OAuth 2.0, just like I did.

During analytical learning, we need to organize the knowledge architecture of OAuth 2.0 and list out any questions that arise during the learning process for further analysis. These questions may include: why does the authorization code grant flow require an authorization code? Why does it require two redirects? How do we manage the lifecycle of token in JWT format? Should users be required to reauthorize if the access token becomes invalid? Does the refresh token remain valid indefinitely? Is there any connection between ID token and access token, etc. In the process of thematic learning, we can treat the content we need to understand as a theme and learn it “horizontally”. What does it mean to learn horizontally? For example, if you want to know what problem PKCE solves, you can treat PKCE as a theme and search for any related information, such as the official documentation of OAuth 2.0, our column, other related books, and so on. In short, this is your “research direction”.

After mastering the three levels of learning methods: basic learning, analytical learning, and thematic learning, I have another trick, which is to strengthen the learning effect by combining “output” to drive “input”.

One day, while I was reading a book in the library, I recalled my experience of sharing and writing books both inside and outside the company, and suddenly the phrase “output drives input” popped into my mind, and I immediately understood the importance of output in technical learning. Later, when I was browsing articles shared by others on moments, I also came across this phrase. Moreover, while reading “How to Read a Book”, I came across a sentence that said “the mutual benefit of reading and writing”, which once again confirmed this point.

Let me share my own story. One year, just after the 618 Shopping Festival ended, a colleague from JD University came to me and asked if I would like to do a review and sharing session on the preparation for the next 618 promotion. I only had one week to prepare for the content. Although the time was tight and I had no idea what to share, and even the train of thought was not clear, I still agreed without hesitation. That’s the power of output driving input.

During the preparation time that followed, I sorted out every detail related to the preparation content, identified the systematic process, and conducted training for the team members. Gradually, I developed my own set of methods for the preparation and completed the review and sharing session for the promotion, and received a lot of positive feedback from my colleagues.

You see, if it weren’t for the “pressure” brought by the need for “output”, I might not have done this review, nor would I have developed my own methodology. As the saying goes, “Preparation is done in ordinary times”. Later, my team and I applied this methodology to our daily work, ensuring the stable operation of the system at all times.

This makes me firmly believe that “output drives input” is a great way of learning.

So, how can we apply this method specifically in our course?

The simplest way is to leave comments. Never think that finishing reading an article means you have learned it. You should know that any kind of thinking is inevitably limited. To have a higher-dimensional perspective, you need to have exposure to a sufficient amount of high-quality content.

Therefore, you should output your thoughts more, throw out prompts, such as your in-depth thinking on certain topics, unique experiences accumulated in your work, or even questioning some of my viewpoints, and so on. When I and other classmates see your comments, we will discuss with you, and our thoughts will overlap and collide, which will definitely increase your depth of knowledge.

In addition to scattered comments, you can also organize your thoughts systematically, create mind maps, PPTs, or write articles, and do a sharing session internally in the company. In the end, you will have a knowledge framework, and it will also increase your visibility in the company. Isn’t that killing two birds with one stone?

Of course, this method is not limited to the learning in our course. I hope you can always actively convey your thoughts to the outside world. With the surprise of output, naturally, you will receive unpredictable surprises.

At this point, our time spent together is coming to an end, and now we need to return to our own tracks. Before that, I really want to say “admiration” to you.

What you don’t know is that while you persevered in learning, many people dropped out. When they look back at the finish line, you have unknowingly become one of the very few. If we view our entire life from this perspective, as long as we continue to walk the path that only a few people choose, we can become one of the very few.

“Accumulate every busy and fulfilling day into a rich and exuberant life”. I hope that we can all live an exuberant life. May we inspire each other.