How do programmers build their own knowledge system?

What is a body of knowledge?

insert image description here
The so-called "knowledge system" refers to the combination of a large number of different scattered knowledge points through internalization, storage, sorting, etc., forming a system, orderly, and clear venation structure.

When we solve problems and process things, we use our body of knowledge to make choices, whether subconscious or explicit. Every decision and behavior will iterate our knowledge system to make it more clear, find out where we are deficient, optimize what can be improved, clarify the next direction, improve our overall overall thinking, and strengthen the current use skills etc.

The knowledge system is not achieved overnight, but is slowly accumulated throughout our life experience and thinking about things. In the middle, we need massive knowledge support, constant change, and constant adaptation.

What is a personal body of knowledge?

insert image description here
Knowledge is endless, there is no need to learn everything, and it is impossible to learn everything.

Everyone has a consistent time attribute, and at the same time, they have different talents and efforts. Life is full of vicissitudes, and different people have different scenes and results.

Therefore, finding the knowledge that suits you and building a system that belongs to you is the best choice in this game. You have no chance to do it all over again. Even if you waste it, you can only keep moving forward.

This is destined to be an irreplaceable process. It is useless for you to take other people's knowledge system, but the harm outweighs the benefits. We can only refer to it, cannot copy it, and others cannot help to build it. Everything depends on your own heart and body.

What is a Programmer's Body of Knowledge?

insert image description here
We have a lifetime to slowly improve our personal knowledge system, which dominates every choice and encounter in life.

But it is still too general and too large, and its main function is more internalized, and what we need is the current extroversion, that is, the current life and work.

If eating and sleeping account for one-third of the human body, then work accounts for the remaining one-third. It is also an important source of income and material basis.

In the development of the Internet, the speed of technological iteration is far beyond people's imagination. Facing the ever-changing technology, in this era of "lifelong learning", programmers need to actively respond.

According to incomplete statistics, most programmer students have their own blogs, write some technical notes or life logs, and more often use github to share their own code.

These are just a small part of the programmer's knowledge system. Only by focusing on the field and a framework with professional attributes can a complete system be built, which will be described one by one below.

How to build a knowledge system?

insert image description here
In general, there are five main steps in the construction of the knowledge system, and each major step contains many small steps.

Life is directional, just like time cannot flow backwards, the construction of the system is also sequential, and the correct step-by-step execution can help us quickly build our own knowledge system.

Whether it is a personal knowledge system or a programmer's knowledge system, the difference is only a matter of different modules and the size of the total amount.

The programmer system is a branch of the personal system, which means that we can reuse the construction method of the personal system, but the focus is on the nodes of the Internet.

massive input

Without input, how can there be a system? Input is the most important way of knowledge accumulation.

The knowledge system is initially composed of many knowledge points, so where do these knowledge points come from?

As a programmer, please think carefully, what channels do your knowledge points mainly come from?

information input

insert image description here
General information comes from online articles, books, video tutorials, offline communication, etc.

For programmers, video tutorials are one of the highly recommended sources of information. It has a complete content system like a book, as well as visual demonstrations of practical operations. Usually, it also comes with the personal experience and excellent habits of the lecturer, so you can keep up with it in time. The pace of technology, real-time communication and adjustment, and books are usually half a year behind, or even a year or two.

However, reading books is still indispensable. If video tutorials are more practical, then books are suitable for deep thinking. The more classic knowledge, the more suitable for carrying and passing on books. Of course, many programmers have experienced <<21 days to learn XXX>> <<XX from entry to proficiency>>, I don’t know if they gave up in the end, so I just laughed and made no comment. How to choose a good book is also a big question.

Programmers are one of the ones that deal with the most with search engines. Some fragmented articles help us solve a specific problem and understand some small knowledge points. Broad, easy to expand the boundaries of thinking, collide with the spark of creativity, just not let us always be confined to a certain place, sometimes we should focus, and sometimes we should spread.

Needless to say, offline communication is everywhere. Communication with colleagues at work, communication with friends in life, whether it is technical details or opinions, is information between people. exchange.

In short, it is to choose good courses on platforms such as MOOC, NetEase Cloud Class, Geek Time, etc., choose good books in bookstores or book websites, read more books, and use information platforms such as Tuiku, Zhihu, Nuggets, etc. Read a lot of news and information, and then participate in activities, speeches, and communicate with people. Create your own information channel, read more, learn more, and communicate more.

practice input

insert image description here
Common practical inputs are coding exercises and project development.

Every great master comes from Xiaobai, Xiaobai's initial posture of learning programming is to type code, once, twice, three times, until he internalizes the knowledge on paper into his own experience.

Everything has a stage of cognition and a stage of practice. To take an ordinary example, if you want to learn to cook a dish, you will not make any progress after reading the recipe a hundred times. There will be no progress after memorizing it. Only by trying again and again can we experience it for ourselves, learn gradually, and achieve success in the end.

The same is true for programming. To learn a knowledge point is to practice repeatedly, use it repeatedly, and understand its meaning from practice.

Repeated practice of code snippets is like preparing vegetables, slicing tomatoes, and mixing eggs. If you repeat the two operations a thousand times, you can’t make a bowl of tomatoes and eggs. Project development is the integration and use of knowledge points.

A complete project helps us build a complete knowledge system from a result-oriented perspective. What is learning for? It is for use, what is the work for, is to complete the project.

Before joining the job, you have to learn everything and know a little bit about everything, because you don’t know what kind of content will hit HR. After joining the job, everything is clear and clear, just focus on the things in front of you.

Sort out the context

insert image description here
Recall the catalog of books you have read. Do you know the general idea by glancing at a page every time you choose a book?

Imagine the texture of the branches and leaves of a big tree, a small spider web, or the vast and infinite starry sky.

These are all manifestations of veins, where points are connected in series, and lines extend in different directions.

Let’s do a small experiment, say a few keywords in any form without thinking, such as books, geography, tigers, kittens, fruits, development, learning, rain...etc.

They come from your knowledge points, some can be classified into the same category, some have no strong connection, and some have a hierarchical relationship.

We need to make them into a net, a tree, a book, and a starry sky through proper combing.

Such as front-end development, the general career plan is to either go deep into the front-end field, be proficient in certain industry technologies, and expand vertically, or learn some back-end content, and develop in the direction of a full-stack engineer, which will help improve the communication efficiency and communication efficiency of the development process from the overall product. Product quality, you can also choose to learn design first, learn products, learn testing, and expand horizontally with the relevance of technology.

But if you insist on studying aircraft carriers, no one will stop you from astronomy and geography. It’s okay to say that out of interest, if you choose the wrong direction, you may be out of touch with the existing knowledge system.

In other words, it is to classify the knowledge points, and at the same time formulate the direction and goals, always keep the knowledge within a certain range, and develop vertically or horizontally according to the actual situation.

It is recommended to use mind mapping tools, such as xMind, MindManager and other software, to learn a little bit about mapping knowledge, use it to sort out the context, and use it a lot, you will naturally understand.

Assign a small task and use a map to list your career development direction such as advanced development, full-stack development, architect, etc. or the fields and specific content you will learn next, such as java, ui design, blockchain, etc.;

note organization

insert image description here
The capacity of the brain is limited, we must use tools to store knowledge, according to the contextual structure organized before.

There are two types of knowledge to be collated, one is public or other people's knowledge, and the other is internalized knowledge.

Common ones such as online experience tutorials, theoretical knowledge, and code snippets can all be copied and pasted into notes.

The practical knowledge and core content in the book can also be selectively extracted, and rich text such as pictures and videos can also be saved one by one.

The reading notes and the operation steps of the development process can be recorded in real time, and your own experience, experience and experience can be recorded.

Note-taking software is mainly recommended, such as Evernote, Weizhi Note, etc. It is best to be able to synchronize multiple terminals, easy to retrieve, and present a structural system.

think about optimization

insert image description here
Everyone understands the literal meaning of the word optimization. It seems very simple, but how to optimize and what to optimize are the key points.

For programmers, the most important thing is the improvement of development efficiency, followed by the improvement of development quality, and finally the improvement of other soft skills.

May wish to ask yourself a few questions:

  • What is wrong in the development process, what are the reasons for the slow speed, and why?
  • What other tips and tools can make the development process faster and better, and how?
  • And so on, constantly analyze things, reflect on yourself, summarize, and then improve.

practice feedback

insert image description here
Not much else to say, the most common practice for programmers is to write blogs, record tutorials, and develop products.

In a large number of inputs, we refer to books, tutorials, and practice codes, which belong to the perspective of absorption.

However, an extremely important part of the knowledge system is output, which is one of the ways to quickly internalize knowledge into your own knowledge system.

One thing I have to mention is that in exam-oriented education, students seldom experience the teacher's perspective, even if only for a few minutes.

They spend their time in classrooms, training classes, and homework, never just listening to lectures instead of giving speeches, and never just writing questions instead of making them.

Lifelong learning means lifelong social university, Internet students, not just input and execution blindly, but output.

Writing a blog is not only for yourself, but also for the audience. How to make them better understand is as important as the content itself. If the content can stand the test of readers, you have to correct your own mistakes to ensure the accuracy and simplicity of the content transmission. Readers will also give suggestions from different angles. One reading or one like is a positive feedback.

Recording tutorials should be more professional. Knowing how to use and how to teach are completely different things. If you want to tell a truth or describe an operation, you usually need to be systematic, quote more arguments, and add more details to fit In order to achieve the desired effect, in the process of teaching, the premise is that you have to be able to speak, and secondly, you have to speak clearly. This is a matter that tests the depth of knowledge, and you will face various problems at any time.

The products we develop in our work are other people's products. At best, we can be regarded as a small screw in it. We don't have the initiative and don't intend to add too many ideas.

But self-owned products are conceived entirely based on your personal subjective wishes and built based on your own technology. A product is a small technical system. In the process of realization, learn what you don’t know, and do it after learning. You will participate in many links that you have never touched. Of course, in some places, you can consider outsourcing or partnership, or other alternatives. Most of the important ones need to understand or participate.

Original link: https://dsx2016.com/?p=619

Guess you like

Origin blog.csdn.net/qq_44182284/article/details/121651858