As programmers, we have to use a lot of technology, which involves different fields, and each field has a lot of room to explore. So how do we make choices in depth and breadth when learning?

My view is to continue to deepen in one field, become an expert in this field, but also to do some understanding of other fields, that is to become a versatile T-type talent. This not only ensures high competitiveness, but also has the possibility of expanding other aspects.

Our promotion route is also the same. P7 is positioned as a field expert, which means to have a relatively systematic knowledge and precipitation in a field. However, P8 and P9 need to have a good knowledge of the technology and development of the whole front-end field, which requires breadth.

However, it is not easy to continue to deepen into a certain field. There are two main problems, and I will take myself as an example.

The further you go in a field, the harder it is to learn

When I first began to learn the Babel plug-in, see the official plugin manual, feel what all is the new knowledge, learn fast, but when I want to find a real scene of application cases, document without, and almost no this information online, I have to go to explore various scenarios with Babel plug-in to do the possibility of automation, In the following part, I will sort out the application of automatic burying point, internationalization, API document generation, as well as the application of Linter, Type Cheker, compression obfuscation, etc. Learning this area is fast at the beginning, but the later part that needs to be explored by myself is slow.

In fact, many fields are like this. Most of the information stays in the shallow water. If you start learning quickly, you feel that you are making rapid progress. But when you gradually thorough, reference information will be less and less, and even into no man’s land, then you will feel much trouble progress is very slow, can feel the pain, but it does become a domain expert must experience stage, need some toughness or clinging to carry in the past, further. After this period, you can establish technical barriers and claim to be an expert in the field.

Do in a certain field for a long time, the content of homogenization is more and more

In my case, I wanted to keep working on front-end compilation until I wrote a book. My plan is that Babel, ESLint, the typescript Compiler API, PostCSS, and even SWC will all have their own small volumes and be organized into books.

When I first started working on the Babel plug-in, I learned a lot because everything was new. But as we looked at other tools, we saw more and more homogeneity and less and less gain.

The Babel plug-in does code conversion, analyzing and adding, deleting and changing based on AST.

The ESLint plugin does static analysis of code and format checking, also based on AST, but because the AST retains token information, it can do format checking, such as column numbers, Spaces, etc. The generated code does not print based on the AST, but does string substitution directly. The Babel plug-in is different only in the way it can check the format and generate the code; the rest is similar and homogeneous.

The typescript Compiler API does TS-to-TS conversions, is AST based, generates TS code in a way Babel can’t, and does type checking. The rest is homogeneous.

The PostCSS plugin is similar to the Babel plugin, but for the CSS domain, many things are also homogeneous.

As you continue to work in a field, you find that many things are similar and homogeneous, and new things become less and less. It’s inevitable, and it’s going to take some toughness or persistence to get through it.

So, if you want to in the field of a sustained and in-depth, spent just started after the rapid growth of would inevitably encounter information less and less, learning more and more demanding problem, and the problem of more and more homogeneity, you need some perseverance to endure the, further, to become experts in this field.

However, although there is a certain degree of dedication to technology, there is also a limit, outside the professional boundaries of technology as an interest in understanding.

For my part, I find that compilation techniques in the front-end domain are just transpilers of source to source, not interpreters or compilers that compile to bytecode or machine code. That’s why I wanted to work in Huawei to do programming language and learn compiler and interpreter compilation technology in depth. However, I failed to work there and ali lost his job.

Later, I came to think of it. As a front-end engineer, mastering transpilers is enough if you want to learn compilation technology. Compilers and interpreters are beyond the scope of the front-end engineer. That’s great for fun, but if you want to go further, it’s not necessary, it’s expensive, and it doesn’t help the front end.

Therefore, we should continue to deepen in a certain field, but we should also pay attention to the boundary. It is ok to deepen into the boundary of the occupation scope. Things outside the boundary can be understood, but there is no need to go too far.

conclusion

As an engineer, the best way to learn is to learn depth and then breadth, which is more conducive to career development.

If you want to continue to deepen your study in a certain field, you will grow up quickly at the beginning, but you will gradually encounter the problem of less and less materials, more and more difficult to learn, and the problem of homogenization of many technologies and fewer and fewer new things. You need some persistence to overcome this period.

However, there should be a limit to the dedication to technology, just to reach the boundary of the occupation scope. Things outside the boundary can be understood as an interest, but there is no need to go too deep.

That is to say, there should be a certain amount of dedication but not too much dedication in learning skills.