It has been five years since the 13 mobile client fire began. Now the mobile side of the situation does not need too much nonsense to describe, a sentence summed up is: "Tide receded, who in the naked swimming a look on the clear." "I want to use this article to talk about the trends and opportunities in my mind about the next five years of mobile internet, and what our IOS engineers can do to prepare for self-improvement," he wrote. The subjective view of this article is more, writing is more radical, for reference only.
We all know that prices will be affected by supply and demand, if a skill is scarce in the market, then the worker who has mastered this skill will pay a relatively high salary, for example, before and after 14 can write good UITableView can find a relatively good job. In my opinion, the next few years of mobile internet, will appear "an excess, two deficiencies", I will analyze and try to give some advice.
Excess UI Engineer
This is my cliché, the first thing to note is to avoid becoming an API call engineer, because these UI knowledge of personal value growth is not linear, if you remember high school math, please recall the y = ln (x) this function curve. From zero to write good UITableView to an engineer to bring the benefits, far from writing good uitableview to write good uistackview can compare.
Take Uistackview as an example, not to mention that it began to support iOS 9, and if the app does not support iOS 9, I'm afraid to wait until se years. Say that it provides the functionality, although simplifying the existing scene, but this function can be achieved by encapsulating the existing components, I believe many large projects have, why do you have to take the effort to compatible version, and then learn a new API? People's energy is limited, if you always chase the footsteps of Apple, every year to fill the WWDC of those new pits and old debt, then the vision will always be stuck in IOS.
Another reason why I refuse to follow WWDC is that it is extremely unwise and extremely dangerous to bet my career on a platform or a company, even if it is Apple. In the first half of our group recruitment, I was responsible for screening a number of resumes, including a more than 30-year-old, ten-year experience of the programmer, his resume let me feel a lot. After graduating from college, he was responsible for the development of the Symbian system in Nokia, probably equivalent to today's Apple's responsibility to write iOS systems, it looks like the halo is very obvious, and then went to two production of Android phone manufacturers, and now apply for IOS programmer positions. In his resume, I do not see a ten-year programmer should have the technical and thinking depth, only one after another of the old noun piling up. Therefore, I sincerely suggest that you, before you learn a new technology, you may want to spend 10 seconds to guess, this technology three years later, five years later, what will be ten years later? Guess no problem, if there is a clear answer, but also to trample on the pit, you can only blame themselves.
Of course, I do not negate the UI technology, after all, the programmer pay is because you can create benefits for the company, so the need to do is to 100% high-quality completion, that is, the study is still to learn. But if it is the self-improvement of the spare time to say otherwise, my suggestion is to find a UI component seriously, read the official documents, write a Demo to clarify the context of knowledge. I don't expect this component to really help, but a qualified programmer never should have done what he did. Qualified programmers should have the ability to extrapolate and learn quickly, so just find a component to familiarize yourself with the entire learning process. Understanding the cause and the consequences of a uistackview and how to be compatible with the lower version is a programmer's studious embodiment, but if a programmer only learns new controls every year, and does not gain much in the project, it is only a matter of learning methods.
From a technical point of view, Apple's UI layout is the most backward way I've ever seen, whether it's front-end HTML or Android's XML is more advanced than IOS. This is mainly because the layout information is coupled into the binary code is very unreasonable, and to a certain extent, the loss of dynamic decoupling ability. If the layout scheme of IOS is to be greatly optimized in the future, I can assert that it is definitely not a chicken tool like AutoLayout, or Storyboard such a fool tool. In contrast, I prefer a unified, cross-end layout technique, such as the Flexbox specification.
In fact, as a developer, there is a learning atmosphere with a communication circle is particularly important this is a My iOS communication group: 681503716 (Verification Code: Silence), whether you are small white or Daniel Welcome to settle in, we exchange learning
Lack of professional skills and talents
Here the expertise refers to the mobile side of this big topic in the more vertical areas of knowledge, probably contains the following aspects:
Image/Video Processing
With the popularity of network infrastructure, as well as the significant reduction in the cost of traffic, 4G is basically fully commercial, if the mobile end of the first five years is text-based, image video supplemented, in the next few years, users of high-quality images and video requirements will be growing.
Since I do not know about this area, so I can not recommend much, in my impression, OpenGL this cross-platform engine, computer graphics knowledge, Video coding and protocol can take time to study, there are many excellent start-up companies are also in urgent need of this kind of talent. Strictly speaking, these knowledge is not the knowledge of mobile Internet, so the threshold is higher, but the threshold of this thing is a double-edged sword. It will increase your learning difficulty, but once you have mastered this knowledge, the threshold will become your personal value of the moat.
I particularly want to declare that coreanimation this kind of things if not the work of mandatory use, generally do not touch, like no one will be silly to write games with Spritekit/scenekit, this API-intensive, and can not cross-end of the library is no future, The real value of the animation must be a unified DSL (domain-specific language) to implement, and then exported to each platform, so developers must be more in the principle of animation, such as Understanding matrix transformation, linear algebra these, rather than wasting time reading official documents.
Get things done.
At any time, a reliable engineer who can get things done must be welcome. The idea is a very virtual concept, I have a recent observation of the simple two examples.
When the project is larger, as the number of people involved in the development of more and more, and technology-independent things will also occupy an increasing proportion. such as coordination and communication, testing, when the back-end of the human resources in place, a Bug how to trace the recurrence and positioning, the new version of the needs of what can be done, which slow a slow, can do the demand when the measurement, when Gray, when the official version? These things are trivial, need a strong sense of responsibility, and in the job when it is more difficult to reflect (unless there is a well-known app endorsement), but the corresponding benefits are generally better performance, and in the leader's mind the impression will be better. Students who are not technically sensitive can also consider this route.
Although I have always been very dismissive of UI development, the fact is that if an iOS engineer can play the various system controls very easily, and have their own accumulation and encapsulation of the control, and then learn some of the performance optimization knowledge, it is not too difficult to find a fairly satisfactory iOS position. If you're walking on this traditional IOS development route, ask yourself if the WWDC is finished every year, whether the various tools of mobile development can be used skillfully (such as reveal,charles, etc.), can be proficient in any complex page, can be achieved through the accumulation of components in a short period of time? However, according to my observations, most of the candidates ' resumes have very few blogs, not to mention the continuous iteration code on Github. The downside of this route is that career ceilings are relatively low, basically up to advanced IOS engineers.
Reverse engineering
The role of reverse engineering is more than just cracking apps, which in my opinion is more about learning the underlying operating system. In the process of developing the app, we use the system-provided library to invoke the API to implement the requirements, and the process is completely black-box. The goal of reverse engineering is to open the box and use some tools to start with a binary level, which in turn guesses the application developer's code and logic. This will involve a lot of C language, operating system, compiling the principle of things, relatively high threshold. Reverse engineering is also a big value for businesses because they don't want to be seen by rivals and interested in the secrets of their competitors.
Summary
These are a few of the expertise that I can now think of that can take time to study. Most of this knowledge is self-made system, there is no longer accumulation of time, it is difficult to get started. This is very important, because a lot of knowledge looks very professional, the threshold is very high, such as I will mention in the next section of this example, but this knowledge I do not encourage learning. The standard of distinction is that you learn knowledge is a knowledge point or a system, if you learn only the knowledge point, then it can only be the entire knowledge tree branches branches ya, Edge corner angle; If you are learning the knowledge system, you have the ability to derive knowledge points, which is the ability of the extrapolate that I have repeatedly emphasized.
The above three examples are I think not easy to be eliminated by time, more worthy of research topics. Input in these areas can be understood as linear, that is, a point of cultivation, a harvest.
2018 years on and half, IOS engineers how to improve themselves. Previous article