Closing Words the First Time I Looked at Kernel Code I Was Also Very Nervous

Closing Words The First Time I Looked at Kernel Code I Was Also Very Nervous #

Hello, I’m Shaoyafang.

Our column is coming to an end, and I sincerely appreciate your support throughout this journey. I would like to share with you my experience of learning Linux kernel and hope that it can provide you with some inspiration.

Before I started working on Linux kernel development, I had very little exposure to the Linux kernel source code. I only had some basic understanding of the Linux operating system, thanks to the popularity of Ubuntu during my university years. At that time, I was curious about everything, so when I saw Ubuntu becoming popular, I installed both Windows and Ubuntu on my computer and spent my days exploring Linux commands and Ubuntu tips and tricks. After a short while, I thought I was a Linux expert and started giving advice on forums, thinking that I could do anything.

They say that going from 0 to 1 is a process of creating something out of nothing. It is difficult for inventions and creations, but relatively easier for learning new things. However, at that time, I treated “learning” as “inventing and creating”, thinking that once I crossed the 0 to 1 stage, I would have overcome the most challenging part of learning Linux, and the rest would come naturally.

It wasn’t until I started implementing a Linux kernel feature that I realized how superficial my understanding of Linux was. The Linux knowledge I had acquired before only allowed me to take a small step from 0, but there were still 99 steps ahead of me. Fortunately, I realized my arrogance in a timely manner and started studying the Linux kernel source code by following the book “Understanding Linux Kernel” with the guidance of my mentor and the enthusiastic help of my colleagues. Finally, I implemented a Linux kernel feature.

Later, after I was able to independently implement Linux kernel features, I became arrogant again, thinking I was a Linux kernel expert. Yes, I made the same mistake again, thinking that mastering a new skill and going from 0 to 1 meant overcoming the most difficult part, and the rest of the journey would be smooth sailing.

This arrogance remained with me until I started participating in the Linux community. When I discussed issues with developers from all over the world, I once again realized how superficial my understanding of the Linux kernel was. This is not to say that my colleagues are inferior to the developers in the community, but my colleagues would help me find solutions when I encountered difficulties, while dealing with developers in the Linux community was different. I had to solve their doubts on my own.

Of course, the Linux kernel community is very open, and there are many enthusiastic and humble people who can help you. The more you interact with them and have discussions, the more you will realize how superficial your understanding of the Linux kernel is. Sometimes, in order to refute their doubts or simply point out logical flaws in their arguments, I would read a lot of kernel code, write a lot of kernel code, and create numerous test cases… Every time a maintainer of a Linux kernel subsystem admits that their viewpoint is wrong and mine is correct, I feel happy because my efforts have not been in vain.

However, even so, I don’t think I have a deep understanding of the Linux kernel. I know that I am still struggling on the path from 1 to 99, and I don’t know how many steps I have taken. But that’s not important to me anymore. As the saying goes, “Three strikes and you’re out.” You will find that my mentality has changed, and I no longer make the same mistakes.

I just want to tell you that for learners of Linux, going from 0 to 1 is really the easiest step, and every step after that will become increasingly difficult. After completing the 99 steps, you may only begin to face the most challenging step. Perhaps when you officially cross from the 99th step to the 100th step, you will be able to create something new? Just like Linus releasing the first version of the Linux kernel to the community, he created Linux by going from 0 to 1. And as we continue to learn, study, and contribute to the growth of Linux, we are also on our own path from 0 to 99. As for what breakthrough we will achieve when we go from 99 to 100, I am not sure, as I have not reached that level myself. However, future you and I may have the opportunity to validate it.

Finally, once again, thank you for your support and companionship throughout this journey. Until we meet again!

“The Practical Linux Kernel Technology Course” is coming to an end. Here is a graduation questionnaire. It doesn’t have many questions, and I hope you can take two minutes to fill it out. I am really looking forward to hearing your thoughts and suggestions about this course.

Image