Companies in the IT industry are characterized as knowledge-intensive enterprises. The core competitiveness of such enterprises is closely related to the knowledge and skills of their employees. And if you play the role of an engineer in a company, then your core competitiveness is your reserve of IT-related knowledge and skills. As everyone knows, the IT industry is a place that generates a large amount of new knowledge. Take the Web front end as an example: in just five or six years, the Web front end has undergone several transformations, and as it looks now, the transformation will continue. From the earlier div+css grid layout to the rise of JavaScript, then the contention of various JavaScript frameworks, the implementation of HTML5 and CSS3, responsive design brought about by the impact of mobile web, the completely different concepts and ways of operating DOM elements in jQuery, AngularJs, ReactJs, and the standardization process of web components... Why are companies everywhere now hiring front-end engineers? It seems that all of a sudden, front-end engineers have become a scarce resource. One of the reasons is that many front-end engineers cannot keep up with industry changes and cannot meet the current market's capability and requirements for front-end engineers. In this environment, it becomes crucial for engineers to master the ability to learn quickly.

191403074249ProgrammingLanguages

Based on my own personal experience and observations of colleagues around me, I have the following guidance on how to quickly master a new technology (here technology includes a new IT technology, a new programming language, or a new software framework, etc.).

To quickly master a new technology, there are two prerequisites first.
  1. First, your mindset must actively seek change, dare to step out of your comfort zone, and maintain an open attitude toward any technology.Seeking comfort is human nature. And this nature often hinders your development. How much knowledge a person can acquire depends on how big your comfort zone is. The bigger the comfort zone, the larger the boundary with the outside world, and the more you feel your own ignorance. Programmers should at least do two things:Don't hold prejudice against technologies you don't understand, and don't fear technologies you are not familiar with.。
  2. Turn passive learning into active learning.A large number of programmers in China are learning passively every day. What is passive learning? It is learning forced by people or events. A new project is started today, and during technical research you don't want to adopt new technologies; you only look up materials when you encounter difficulties during development. All day long you copy and reuse code written by others or by yourself in the past, and when problems occur after copying, it takes a long time to solve them. For example, a programmer who has used Spring for several years may not know Spring's core concepts, may not know Spring's framework structure, may not know the functions of Spring's components, and may not know the new features of new Spring versions. This is very horrible, because if you don't know these things, you cannot adopt Spring's best practices; when problems occur, you don't know how to quickly locate them; and certain requirements in your projects cannot use the functions already encapsulated by Spring (because you don't know Spring can do that). Active learning requires you to prepare for the future and not leave things to the last minute. Moreover, you should regard learning as accumulation and improvement for yourself, as a long-term investment in yourself, and you should not be overly utilitarian.

Some people say, I just like the comfort zone, I just don't like active learning. Are there any good ways or methods to change these two points? To be honest, the help I can provide you is very limited. As a line from "The Continent" goes, "I have heard many great truths, but still cannot live this life well." These two points still rely more on you personally. And I believe the following points can help you.

  1. Before learning a new technology, first figure out why you want to learn it. How did we work before this technology existed? How do we work after having it? What changes does it bring? Asking these questions is actually to understand what problems in the problem domain the technology solves or simplifies, and in what way it achieves such effects. Take AngularJS as an example. AngularJS was initially designed to make up for the deficiencies of HTML in building applications. In the past, HTML was designed to display multimedia information. Although some dynamic functions were later added, under the trend of application webification, the deficiencies in HTML design became increasingly prominent. For example, DOM element manipulation is too cumbersome, business logic is difficult to modularize, testability is low, development efficiency is low, etc. AngularJS adopted a brand-new design to solve this problem. It proposed a series of concepts and introduced features such as data binding, directives, routing, and dependency injection, greatly simplifying our workload in web development. In this way, you can quickly establish a macro-level understanding of the technology, and learn about its potential application scenarios, application methods, and some limitations.
  2. Next, you should actually use the core functionality of the technology to reinforce your understanding. The way is to refer to the Quick Start section on the technology's official website and go through it step by step.Programmers nowadays increasingly cherish time. The conciseness, completeness, and ease of getting started of documentation have become one of the indicators of whether to adopt a technology. Especially for various open-source components now, even the documentation is open source.So many documents are written entirely according to programmers' thinking, and they read very cleanly. Take Spring again: if you want to learn the Spring Boot component launched with Spring 4.0, you can visit itsofficial websiteThe largest button on the page is Quick Start. Click and learn. The page is a simple example; it probably won't take you more than five minutes. If you still haven't had enough, on the right it lists more

Getting Started Guides, which also teach you advanced features step by step. Some people may ask: what if my English is poor? Please learn English.English is an essential skill for an excellent programmer.Some people may also say: what if there is all kinds of noise when reading the documentation? For example, to read Spring Boot's start guide, you need to have some prior understanding of Spring, need to know what Tomcat and Jetty are for, need to have some experience with Gradle or Maven... These knowledge points are all needed when practicing that small Spring Boot program, but because of the interference of this noise, the learning process will be slowed down. The only way to get rid of this noise is to also spend time learning those knowledge points you don't understand.So learning is a virtuous cycle: the more you learn, the faster you learn.

  1. The first two steps can guarantee you get started with a technology. Then how to advance? This stage is reading. Pull down the detailed documentation from the official website and read it hard. Reading through these documents lets you enter its implementation details, as well as various usage methods and scenarios, and even some best practices. For example, Spring Bootofficial documentationDetailed to the teeth. Everything you thought of and didn't think of is thoughtfully listed in the documentation. If you want to learn Scala, please visithttp://www.scala-lang.org/documentation/There all kinds of documentation are available. After reading it, you will be more than half a Scala expert.The best documentation for a technology must be its official documentation.If not, then this technology cannot become popular. Note that during the process of reading through the documentation, you must apply it in projects. If you don't have practice opportunities in projects, you can write some small demos to practice. The principle of combining practice with theory when learning knowledge is timeless and universal.
  2. After completing the first three steps, your understanding of the technology is already stronger than most people's. You can be considered to have mastered it. So is there still a way to advance? Of course there is: that is to speak and write out what you have learned and thought, expose it to the public, accept criticism, and thereby discover your shortcomings and improve. When you have time, give a few lectures and write a few series of articles; then in everyone's eyes you will become a master of this technology. You will then have all kinds of opportunities to solve various difficult problems encountered when using the technology, which in turn deepens and corrects your understanding. When free, go to StackOverFlow, answer a few questions, or subscribe to the technology's question list and check it often.
  3. You can also go even deeper. Join domestic/international technical communities (what if there is no such community domestically? This is an opportunity—quickly build one yourself) to further exert your influence. Translate and write books related to the technology; if the technology is open source, then when you have time, submit changes, and you will become one of its developers. This is a qualitative leap: advancing from using tools to creating tools.

After going through the 5 steps, you have not only mastered the technology—you have become godlike, okay! Some may ask again: reaching these five steps must take a long time, and it's not a height ordinary people can reach. Of course, the process is certainly difficult, but not as hard as reaching the sky. At least there are many such examples around me. Actually, as long as you complete the first three steps, you are better than 50% of programmers; after completing the fourth step, you stand ahead of 90% of programmers.

Finally, a quick summary. Important things are said three times.

  1. Active learning is very important, active learning is very important, active learning is very important.
  2. Official documentation is very important, official documentation is very important, official documentation is very important.
  3. Practice is very important, practice is very important, practice is very important.

Author:Huang Bowen@Wudi Beigua

Source:http://www.cnblogs.com/huang0925