Maybe a lot of people think , Worked in a company for a long time , Doing similar work every day , Focus on your business , No improvement in ability . This is a very common phenomenon , The bigger the enterprise , More detailed division of labor , And many programmers do business-related work , Business logic is implemented every day , There are also many projects , Ability will be improved with time , But this kind of promotion is limited , In the first two years of working, I think the progress is obvious , Slowly, I will feel that no matter how hard I work , There is no obvious improvement in ability , This is the bottleneck period , It needs systematic learning . You can prompt your abilities in the following ways :


●  Ability to solve problems


Ability to solve problems , It can be said that the ability to eat in the enterprise , It's also the most important ability , Because even if you have a lot of skills , But it doesn't solve the problem , Can't bring value to the enterprise , What's the use ? At work , Whether it's through consultation , Or the answer on the Internet , Or think about it , in short , As long as the problem can be solved .“ Whether black or white , As long as we can catch mice, we are good cats ”, Fast problem solving , To stand out in the enterprise , Others can solve it in a day 10 individual BUG, You can solve it in a day 20 individual BUG, That's your advantage .


●  Study its principle


Now with more and more open source projects , A large number of programmers rely heavily on open source code in their daily work ,Spring Wait for the framework to complete the work . Although these frameworks can improve productivity , But I just use them , Instead of exploring its principles , It's just practice makes perfect . So we shouldn't be satisfied with just using , But we need to explore its principles , Not that all open source projects draw time to read the source code , Select several open source projects to read . May feel confused at first , I don't know how to start , Can't understand , No problem , You can find information online , See how the gods learn , With the help of the great God , Then divide the source code into modules , Every module is full , work through e, Just look twice , See more , see light suddenly . I really can't understand , You can also try to modify the source code , Debug it , See how it works , This is more intuitive . Research source , Persistence is the key , Because it's a boring process , It's hard , But over time , Browse large projects , It's easier to identify design patterns and quickly understand code , It's also easier to understand the essence of open source projects .


●  Systematic learning


I believe that many people have entered the software development industry in the first place , Universities may study unrelated Majors , Like myself , When I was in college, I majored in electronics , Most of the subjects are hardware related , Just learning C language , I wanted to be an embedded hardware engineer , But it was assigned to the middleware department , I don 't know much , At first, you can use Baidu or google, Help yourself solve problems , Not really , You can also consult your colleagues , Or at Stack
Overflow Describe the problem in detail on , Some problems can't be solved by oneself , It's because of my limited knowledge , So when it's necessary , Be sure to consult others .


But after working for a while , I found that my basic knowledge was insufficient , Because before entering the industry , No systematic learning of basic knowledge related to software , Some people studied in College , But it's not enough , At that time, I just knew , But I don't know how to use it , All this time , We need to make up for our basic knowledge , See what you lack , And then learn something , And can be used in time . For example, I studied C++, After a period of work , Find yourself in polymorphism , Inheritance and overloading are a bit confusing , And then I went back to reading related books , And then compare it with the code , A lot of questions came out of the blue .


●  Share and summarize


it is said that , The best way to learn is teaching . After learning new knowledge , It's not just about understanding it , We need to make a summary in time , Of course, it's better to optimize and improve what you have learned . Summary can not only review the knowledge learned , It's also impressive . After summary , And share , Sharing can deepen our understanding of knowledge points , Many people think they understand , But it's not good to have him do a technology sharing meeting in the company , That's because we haven't really understood it , So sharing is a way to test whether we really learn the knowledge thoroughly . And when we keep blogging ,github, Sharing technical articles on zhihudeng platform , Slowly you'll find that you've become a technical bull , More and more influence , May receive from many enterprises offer, It also brings in extra income , Even become a second career . A lot of technical bulls grow up by sharing their knowledge step by step .


●  Learn more about other industries


Technology , Most afraid to build a car behind closed doors , So take the time to learn about the new languages in the world , New technology or new developments in other industries , Get inspiration from it , Even opportunities . Although the Internet facilitates the dissemination of information , But the information gap still exists , Use of information gaps , There are many benefits , Can also improve their cognitive ability .


These are my opinions on how to improve the ability of programmers , Hope to help some people .


©2019-2020 Toolsou All rights reserved,
latex Custom commands in ———\newcommand( Essence )2020 year 7 month 15 day Wechat applet assembly Component Use of inherit jpa Repository Write custom method query fio Use details Vue + Element-ui Drop down box for el-select Get extra parameters ToastUtils Use of Keras Summary of training data loading ( Essence )2020 year 7 month 13 day Wechat applet Inter communication page Unity3D Input Key system use PyMC3 Bayesian statistical analysis was performed ( code + example )