One, foreword

A colleague came by the other day and asked me to recommend a book on Linux.

I just asked him two questions:

  1. Which layer of Linux do you want to learn: the kernel layer? Driver layer? The application layer?

  2. What is your goal: to learn the design architecture of Linux systems? Driver development for a module? Or do you just want to systematically learn application programming?

Finally, I recommended the following book to him:

Later, I thought about my own book selection, reading process, simply sum up, for the need of small partners reference. If you have better practice methods, please share more!

Second, choosing books

1. Pay attention to the book selection process

In the current market, no matter which field of technical books, are a lot of grasp, which must have uneven quality, level of explanation.

As learners, we must sharpen our eyes, spend more time to choose books, and pay attention to the process of choosing books.

It is a waste of time and life to choose a book at random only to find that the content is not to your taste when you are halfway through studying it.

If you spend some time and effort at the very beginning, you can enter the state of flow when learning, and you can get twice the result with half the effort when understanding personal knowledge.

In other words, there is no saving time in choosing a book.

2. How to choose a book

I usually choose books in three steps:

Step1: cast a wide net

Search for relevant keywords in the Google search engine based on the technical topic you want to see.

Sometimes I deliberately add keywords such as CSDN and Zhihu. On these two platforms, the recommended technical books are of relatively high quality.

In addition, you need to pay attention to the recommender’s background information, you can browse some of his articles, from the content of the article if you can judge the author’s professional depth and breadth are more powerful, then his recommendation weight is relatively high.

You can sort out the top books on this technical topic by looking at more than a dozen recommended articles.

Step2: Look at the evaluation

For combing out a few books, to Douban, dangdang online to find the evaluation of these books.

As we all know, there are many favorable comments on shopping websites nowadays, but fortunately for books, I feel that there are few favorable comments. That is to say, other people’s comments on a book can basically be considered objective and fact-based.

People generally evaluate a book in terms of its coverage, difficulty, and what they have learned from it.

In this step, we can have a mental ranking of the basic candidate books. Note that this ranking is not based on the absolute depth of the content, but on your professional level, to determine which book is the best match for your current self.

Do not overestimate yourself at this time, choose the most difficult book, if you do so, not only a waste of time, but more importantly, it will lead to a half-understanding, seriously hurt self-confidence.

After this step, you can actually decide which book to buy.

If there is a big difference between the two books ranked no.1 and no.2 in my mind, I will directly choose the first book with the highest rating.

If it feels the same, THEN I move on to the next step and flip through the proofs to see which book is more suited to my taste.

When I was learning C++, the following two books were the last candidates:

Later, when I searched for their comments, I found that the first book was more theoretical. At that time, my main goal was to systematically master the syntax of C++ 11, because the C++ I understood in my head was almost becoming an antique, and many languages in 11 made C++ almost become a new language. The first book suited my purpose better, so I chose this one.

Step3: To appetite

On many websites that sell books, there are catalogues and some proofs; If not, search to see if you can find PDF files to browse.

The main purpose is to see if the writer’s writing style is to his taste. Choose the style you like between two books that are closely matched and it will be more enjoyable to study, because the power of emotion is unpredictable.

Note: Don’t take on too much, just use one of them as a close reading tutorial. If you like both books, buy both and use one as your main study goal and the others as a cross-reference.

In addition, I personally have a good way to choose books, that is the video comment section of B station.

Now B station, is really in its heyday, middle-aged greasy uncle to a variety of quadratic yuan, you can find their interest in the video content here. And B station is also a blessing for our technology developers: more and more high-quality video courses can be found, such as teacher li zhijun’s operating system, teacher hou jie’s C++…

While watching these videos, you might want to take a look at the comments. Other videos, books, blogs, etc. related to this video are likely to be recommended, and the recommended content is usually of high quality.

3. E-books or paper books

Everyone’s reading habits are different. Some prefer video tutorials, some prefer PDFS, and some prefer paper books. Each has its own advantages and disadvantages.

I prefer to take notes when I read. If it’s a PDF, I use mind maps as I study. If it was a paper book, I would write on the tree, draw pictures and record my understanding.

Based on personal experience, if the book is very thick (more than 500 pages), I will try to choose the paper book.

Because in the process of learning, it is hard to avoid going back to refer to the previous content, using paper books is more convenient, as long as you remember the page number, or put some bookmarks, you can find it soon. If it is a PDF, it is very inconvenient to have to drag and scroll the mouse many times to locate the previous content, especially when you need to refer back and forth several times.

If the only option is PDF, use screen capture tools such as Snipast and Quicker. I recommend the first one before. It’s really good, especially when reading articles and writing code.

Third, reading

Don’t be afraid to dirty the books

I like to buy second-hand books. Sometimes when I buy them back, except for the first few pages with a few lines and notes, the rest of them are just like new books. I really spoil a good book.

But in my hands, if it had been for intensive reading, I would have left the book “devastated.” This is not to say that they do not cherish books, only after making a lot of notes, to record their own learning process.

If you think a book is a classic and want to keep it, you can buy two copies, one to study and one to keep.

Here’s a neat doodle from C++ Primer (please ignore the ugly fonts) :

Eliminate ambiguity and uncertainty

In the process of learning, if it is already understood, read quickly past; If it is after their own thinking, only to understand the part, the thinking process of the key node information down; If you still don’t understand after thinking about it, don’t let yourself go. In addition to this book, you can also turn to Google and other related books.

My own experience is that if you don’t have a definite understanding of something, it always feels like a lump in your throat. If I still can’t get a convincing understanding after searching for other information, I will follow the direction with the greatest possibility.

As you learn further, when you find that the understanding imposed on your brain contradicts other knowledge points, you can go back and sort out the possibilities again. Through these comings and goings the ambiguities can be wiped out.

3. Always take notes

I don’t know if you’ve ever read a book and your eyes say to your brain: HMM, I’ve got this. But if you were asked to leave the book immediately, your hand might say to your brain: I can’t write.

Taking notes is a process of strengthening your understanding. Some points may be understood now, but they are likely to be forgotten later on.

Some people say that books should be thinner and thinner, while others say that books should be thicker and thicker. This is actually seen from a different perspective.

For me, taking notes is a process of making the book thinner and thinner.

When reading a book for the first time, you may understand 50% of the content already, and the remaining 40% after thinking about it (the notes are the key part), and the remaining 10% is still not understood.

So in the second time to read, you can focus on their notes, the 40% of the understanding part of the review again, deepen the impression, so that the book is half thin.

If you want to watch it for the third time, it is likely that only 1/3 — 1/4 of the content is needed to see, at this time, you can obviously feel that they are making progress, there is a strong sense of achievement.

Here are some notes I took while studying the Linux kernel, so I can just look at these cards when I want to review them again.

4. How do you know you really understand

First, you can follow the “yellow duck debugging method” when solving bugs, and tell yourself what you read in the book. Note: use your mouth to listen to yourself, not to yourself in your head.

Second, it would be better to summarize the process of understanding into an article. When someone reads your article and goes from never understanding to understanding, it means you really understand.

The above is some of my personal learning experience, I hope to be able to help you.

Finally, there is a word for you: haste makes waste!


Star mark public number, can find me faster!







1. C language pointer – from the underlying principles to fancy skills, with graphics and code to help you explain thoroughly 2. Step by step analysis – how to use C to achieve object-oriented programming 4. 5. It is said that software architecture should be layered and divided into modules, and what should be done specifically (2)