How to quickly master a new technology/language/framework

Enterprises in the IT industry are characterized by knowledge-intensive enterprises. The core competitiveness of such an enterprise is closely related to the knowledge and skills of its employees. And if you play the role of an engineer in an enterprise, then your core competitiveness is the reserve of IT-related knowledge and skills. As we all know, the IT industry is a place where a lot of new knowledge is generated. Take the front end of the web as an example. In just 5 or 6 years, the front end of the web has undergone several changes, and the changes will continue. From the previous div+css grid layout to the rise of JavaScript, then the contention of various JavaScript frameworks, the landing of HTML5 and CSS3, the responsive design brought by the impact of mobile web, jQuery, AngularJs, ReactJs and other manipulation DOM elements Completely different concepts and methods, the standardization process of web components...why are companies recruiting front-end engineers everywhere now? It seems like all of a sudden, front-end engineers are a scarce resource. One of the reasons here is that many front-end engineers cannot keep up with changes in the industry and cannot meet the capabilities and requirements of front-end engineers in the current market. In this environment, the ability for engineers to learn fast is crucial.

Based on my own personal experience and the observation of my colleagues around me, the author has an opinion on how to quickly master a new technology (the technology here includes a new IT technology, including a new programming language, or a new program framework etc.) have the following guidelines.

To quickly master a new technology, there are two prerequisites first.

1. First of all, you need to take the initiative to change your mind, dare to jump out of your comfort zone, and have an open mind to any technology. It is human nature to desire security. And this nature often hinders your development. How much knowledge a person can understand depends on how big his comfort zone is. Programmers must do at least two things: don't be biased against technologies they don't understand, and don't be afraid of technologies they are not familiar with.

2. To change passive learning into active learning. A large number of programmers in China are passively learning every day. What is passive learning? It is being forced to learn by people and things. I started a new project today. I don’t want to use new technologies for technical research. I only go to check the information when I encounter problems during the development process. I just copy and reuse the code written by others and myself all day long. long-term solution. For example, a programmer who has been using Spring for several years does not know the core concepts of Spring, the framework structure of Spring, the functions of various components of Spring, and the new features of the new version of Spring. This is very scary, because if you don't know these things, you can't adopt Spring's best practices. If you don't know how to quickly locate problems, you can't use Spring's already encapsulated functions for some requirements in the project (because you don't know Spring can also do this). Active learning requires you to plan ahead and not be crammed. Moreover, learning should be regarded as the accumulation and improvement of oneself, as a long-term investment in oneself, and should not be too utilitarian.

Some people say that I just like the comfort zone, but I just don't like active learning. What are some good ways and means to change these two points? To be honest, the help I can give you is limited. Just like a line in "There will be no end to the future", "I have heard a lot of great truths, but I still can't live my life well." These two points are more up to you to achieve. And the next few points, I believe can help you.

1. Before learning a new technology, you must first understand why you want to learn it? How did we work without this technology? How do we work after having it? What changes has it brought about? In fact, the purpose of asking these questions is to understand that the technology solves or simplifies the problem of that problem domain, and what method is used to achieve such an effect. Take AngularJS as an example, AngularJS was originally designed to complement HTML for building applications. In the past, HTML was designed to display multimedia information. Later, although some dynamic functions were expanded, under the trend of web application, the deficiencies in HTML design became more and more prominent. For example, the manipulation of DOM elements is too cumbersome, the business logic is difficult to modularize, the testability is low, and the development efficiency is low. AngularJS adopts a new design to solve this problem. It proposes a series of concepts and introduces features such as data binding, identifiers, routing, and dependency injection, which greatly simplifies the workload of our web development. In this way, we can quickly establish a macro understanding of the technology, understand its potential application scenarios, application methods, and some limitations.

2. Next, we must actually use the core functions of the technology to strengthen our understanding of it. The way is to refer to the Quick Start chapter of the official website of the technology, step by step. Today's programmers cherish time more and more, and the simplicity, completeness and ease of use of documents have become one of the indicators of whether to adopt a certain technology. Especially with the various open source components now, even the documentation is open source. Therefore, many documents are written completely according to the programmer's thinking, which is very refreshing to read. Take Spring as another example. If you want to learn the Spring boot component launched by Spring 4.0, you can visit its official website. The biggest button on the page is Quick Start. Click to learn. The page is a simple example that probably won't take you five minutes. If you haven't enjoyed it yet, there are more listed on the right

Getting Started Guides also teaches you advanced functions step by step. Some people may ask, what should I do if my English is not good? Please learn English. English is an essential skill for a good programmer. Some people may also say, what should I do if there are various noises when reading documents. For example, if you look at the start guide of Spring boot, you need to have a certain understanding of Spring before, you need to know what tomcat and jetty do, and you need to have some experience in using gradle or maven... These knowledge are required when rehearsing the small program of Spring boot, but Due to the interference of these noises, the learning process will be slowed down. The only way to get rid of these noises is to take the time to learn what you don't know. So learning is a virtuous cycle process, the more you learn, the faster you learn.

1. The first two steps can ensure that you are introductory to a technology, so how to advance it? This stage is to read. Pull down the detailed documentation of the technology from the official website and read it hard. Reading through these docs will give you access to its implementation details, various usages and scenarios, and even some best practices. For example, the official documents of Spring boot are detailed to the teeth. Anything that you thought of or didn't think of, the documents are carefully listed. If you want to learn Scala, then please visit http://www.scala-lang.org/documentation/, there are all kinds of documents, and you will be half a Scala expert after reading it. The best documentation for a technology must be its official documentation, if not, then the technology is not popular. Note that in the process of reading through the document, it must be used in the project. If you don't have the opportunity to practice in the project, you can write some small demos to practice. The principle of combining practice and theory when learning knowledge remains unchanged.

2. After the first three steps, your understanding of the technology is stronger than most people. You can count on this technique. So is there an advanced way? Of course there is, that is to say what you have learned and think, write it out, expose it to the public, and accept criticism, so as to discover your own shortcomings and promote your progress. If you have time to give you a few lectures and write a series of articles, then you will become a master of this technology in the eyes of everyone. You have every opportunity to solve all kinds of intractable problems you encounter with the technology, which in turn deepens and revises your understanding. Feel free to go to StackOverFlow, answer a few other people's questions, or subscribe to the tech's question list and check it out often.

3. You can go further. Join the domestic/international technical community (what if there is no such community in China, when the opportunity comes, quickly build one by yourself) and further exert your influence. Translate and write books related to the technology; if the technology is open source, submit revisions when you have time, and become a developer yourself. This is the qualitative leap from using tools to creating tools.

After walking 5 steps, you have not only mastered this technique, you are already superb! Some people may ask again, it will definitely take a long time to reach these five steps, which is not the height that ordinary people can reach. Of course, this process must be difficult, but it is not difficult to reach the sky. At least I have many examples of this around me. In fact, as long as you complete the first three steps, you are better than 50% of the programmers, and after the fourth step, you are already standing in front of 90% of the programmers.

A quick summary at the end. Important things are said three times.

1. Active learning is very important, active learning is very important, active learning is very important.

2. Official documents are very important, official documents are very important, and official documents are very important.

3. Practice is important, practice is important, practice is important.

Author: Huang Bowen@Invincible Beigua
Source : http://www.cnblogs.com/huang0925Huang
Bowen's site

Guess you like

Origin http://43.154.161.224:23101/article/api/json?id=326274359&siteId=291194637