Hello everyone , I'm an Xiaohui . Today, let's look at the determinants that may be taken into account in choosing a technology , I can sum up the following nine points ：
1． Job opportunities
First of all, we should consider which technology is more employable , This is the need to combine specific areas 、 From a specific industry point of view , Because you're looking for a job that's regional and industry oriented .
Hot and cold are relative , According to how many developers 、 It depends on market demand .
About the choice of regions and industries , The pros and cons of hot technology and cool technology , We will read it in detail in the following article .
2． How easy it is
The difficulty varies from person to person , So the best way , It's the language you're interested in , Learn to try , It could take a week or two for each language , You can make a judgment .
For example, I was in Java and C The choice of language is C Language , because 《The C Programming Language》 Than 《Java 2 The core technology 》 Much thinner , Process oriented languages are also easier to get started with than object-oriented languages （ For me ）.
3． Personal interests
A lot of people do development out of some kind of interest , For example, if you are interested in the game, you can do game development , If you're interested in smartphones, do it APP Development , If you are interested in e-commerce, do front-end development .
When you like a certain kind of product , Such products can often be associated with a certain technology . For example, you like to play mobile games , Then you may choose Unity 3D perhaps Cocos 2d-x; If you like fan Deng's book club APP, May choose Java、Android、Objective-C、Swift etc. .
Most people choose technical jobs based on their jobs and future prospects , And when you choose a job, you must take salary as a reference factor , And it's a very important factor . So when we choose technology , You can also consider the salary level of the corresponding position for a certain skill .
To understand this , You can go to various salary reports , Such as 100 offer There are similar reports coming out every quarter , Lagoux will also release a white paper on Internet workplace ecology , Do you use “ Internet talent flow report ”“ Developer compensation report ” perhaps “ Internet pay survey ” Search for keywords , You can find a lot of these reports .
Through the report , You can see the pay difference between developers using different languages . chart 1-2 It's me. 100 offer 2016 It was intercepted from the report on the flow of high-end talents on the Internet in the spring of 2008 .
From the picture 1-2 You can see the difference in the average annual salary of the positions associated with different programming languages .
5． Prospects for development
You certainly don't want to see this happen ： Chose a technology , It turned out to be useless a year later 、 There's no market . So we have to consider this when we choose , Make some predictions .
There are two considerations when choosing technology ： One is to choose stable 、 Classic technology ; One is the market gap in the future , Choose the technology you may need in the future .
The former considers the Lindy effect , namely ： For things that don't die out naturally , Every day you add life , It could mean longer life expectancy . Look at development technology in terms of Lindy effect , The longer a technology survives , The longer the expected remaining life . such as C Language （1967 The year was born ）, Survived for decades , It could be decades away . So you can choose things like C、C++、Java These classic programming languages , They've been popular for decades , It's going to be popular for decades .
Review of history , Classic technologies are all developed from new technologies , Looking forward to the future , There must be some new technologies that will develop into classic technologies in the future . If you can catch it , You can enjoy the technology dividend it brings .
To capture new technologies that may become classic or hot technologies , We're going to apply the blocking strategy .
The card strategy is to see that a certain technology will be scarce in the future , Very valuable , Choose early intervention , Make yourself competitive in the future . such as 2007 year Google Released Android Beta Operating system SDK, Someone foresaw Android Development requirements will explode , Learn decisively Android Development ; Such as now VR、AR、 machine learning 、 Deep learning , In fact, there is no universal application yet , But there is bound to be , Now learn the relevant technology , The future is bound to take the lead ; Another example 2009 The concept of big data rose in , If you choose Hadoop、Scala Technology , You may be worth a lot now .
When using the card strategy , There are two ways .
One way of getting stuck is based on market demand and future expectations , Like a picture 1-3 Shown , The bottom left is where we see it now , Some demand is in its infancy , But it could explode in the future . This demand corresponds to the product 、 Services may use some technology , Even the requirement itself is driven by technology . Now , You can analyze the technologies that may be needed from now to the future , Prepare ahead of time .
There's also a way to get stuck , According to the development of technology itself . Using the gaudner curve （ Reference resources http://www.gartner.com/technology/research/methodologies/hype-cycle.jsp）, Pictured 1-4 Shown .
chart 1-4（ come from https://stateofdev.com/） Three technologies related to machine learning are shown ：OpenAI、TensorFlow、Watson. As can be seen from the curve ,OpenAI Growing up ,TensorFlow In maturity , and Watson Is being challenged . If you choose a machine learning framework now ,TensorFlow、OpenAI It's a better choice .
6． Others recommend
Whether we choose a technology , It has a lot to do with the possibilities we see . Only to see it , It will come into your choice , If you can't see it , It's a cow , It doesn't make sense to you .
For example, I 2005 Self taught programming , There are two options ：C perhaps Java. That's true. Java Because of the recommendation of graduate students , and C Language , At that time, Datang Telecom did the development of colleagues recommended . I didn't think about other programming languages , Because I don't know what programming languages to choose from .
The possibilities you see , Limit or determine your choice .
7． The principle of proximity
When we've got some technology , When it comes to learning new technology , You can judge whether a new technology is close to what you already have . Similar technology , It's easier to learn .
8． The principle of complementarity
Similar to similarity , Complementarity is also commonly used in the context of expanding our technological capabilities . It refers to , There are technologies that complement what you already have , Put together , Form more complete 、 More systematic technology map , Bring you greater competitiveness . On the principle of proximity and complementarity , We will also interpret it in the following article .
9． Team technology map
These are some of the basic factors we should consider when choosing a technology direction , In the next article, we'll look at the different stages of the workplace , There are also those things that need special attention .
After reading this article , You can think about it when you choose your technology direction , Which factors do you value more ？ Welcome to communicate with me .