The words written in the front

Have you ever noticed that time seems to go faster and faster as you reach middle age?

I still remember that when we graduated, we entered the workplace with fresh and curiosity. At that time, every day was full of challenges and things to learn, and it felt like time passed so slowly.

Somewhere along the way, work gets boring, days go by faster and faster, and before you know it, hours are slipping away right under your nose.

Time is like a fast spinning wheel, with each of us.

For some Android developers over the age of 35, there is, or will be, an awkward situation

When the industry no longer has the past glory, their years of honed technology is also facing a bleak prospect, gradually, once proud of the workplace experience, is virtually accelerating the devaluation.

Perhaps it was the adage of years ago that “learn a trade, the older you get, the better it will be” that pushed middle-aged people to the precipice of a bitterly cold career.

First, what is the experience of middle age?

In two words, lonely.

There’s a passage that goes like this:

“Middle age is when you often feel lonely, because when you open your eyes, you’re surrounded by people who depend on you, but you don’t have anyone to rely on.”

A friend of mine heaved a long sigh as we talked about today’s professional dilemma.

“I have worked since I graduated from college and never thought that I would take this step……” He said with emotion: “But not without foreboding, the beginning is to cut year-end bonus, to later is the salary shrink, those years are also panic, some people choose to leave, go to…….”

“Some people have tried to persuade me to leave, but I’m getting on in years. Second, I learned this technology, now the entire industry has been very saturated, out of the job is also difficult to find a job; Third, I still have some affection for this company. I have worked with Lao Zhang and Lao Li for four or five years. We all get along like a family. How can you give up so easily?”

His eyes welled up as he spoke.

Two, the pain of the cliff

Android, as a technology category that has been marketed for more than ten years, is bound to be mature and normal. Such technology industries will no longer have explosive growth. Together with Android hardware, mobile phones, tablets and so on will tend to be stable, and then there is a steady trend of gradual decline. In this regard, the supply and demand of talents will also tend to stabilize, and the market will gradually increase the requirements for developers’ working experience and project background.

I was well aware that my friend’s career dilemma could not be overstated.

On the one hand, because he has lived a stable life in the company these years, and there is no project to sell, it means that it is almost impossible to keep the current income and move to another company. On the other hand, the emergence of new technologies and the rise of a large number of post-90s and post-00s make him face extremely severe re-employment pressure.

Over the years, the saying that “lack of professional skills is the biggest tragedy of middle-aged people” seems to be gradually inapplicable in the context of today’s times.

The rapidly changing technology circle has put forward higher requirements for those of us who are engaged in technical work. If we can add some new skills on the basis of original skills as soon as possible, forming a “skill mix”, the future workplace competitiveness will be stronger.

What skills should Android developers have?

Here’s a job description for advanced Android developers:

This is xiaomi’s recruitment requirements on the check box, which is equivalent to p5 to P6 levels. In addition to the requirement of academic degree, we can see that in addition to the basic requirements of Android, it also takes JNI/NDK/Framework, even JS and Server development as the improvement point, which is the prototype of the full stack direction. I think you can always check the job boards to see what skills the company is looking for, but of course you can’t learn everything the company is looking for. Here’s a quick summary of where Android developers are headed:

First, horizontal promotion.

Based on the development trend of the full stack, while in-depth research in their own areas of expertise, horizontal expansion, do not close the door. The horizontal improvement mentioned here is the transformation to the full front-end. In addition to the hybrid development (Web, native, front-end interaction and hardware interaction) of APP, I also need to be able to do Web development, wechat small program and H5.

For example, server-side development, we do Android development a lot of time, to rely on the server-side interface to return data, you can try to build, at least to the server-side structure theory, communication between services, aggregation is what kind of process is also need to hear.

Second, longitudinal remodeling.

For a long time, Android development has so two statements, if it is to do application development, to the direction of application architecture is more appropriate, if it is to do system layer development, often the bottom driver is more appropriate. Here I am quite agree, that should learn specifically what?

1. Mobile Architecture: Architecture presentation layer: MVC, MVP, MVVM, Clean, Flux, Android Architecture Components; Architecture layer: modular -> componentalization -> plug-in -> sandbox/double open technology, such as wechat can be double open, similar to Docker, each page is a plug-in, similar to vue.js each page is a component.

2. Basic progress: This direction may be more, such as VIEW, Android animation mechanism, four components working principle, multimedia technology and so on. We usually encounter in the work of View sliding conflict problem, in fact, by mastering the View working mechanism and Android touch event system can be easily solved. There is also the need to develop gorgeous animation effects, so some of the properties of view animation and property animation must have a certain understanding. Binder is the underlying mechanism behind the four components of Android. Binder is an interface that you can learn from AIDL.

JNI and NDK development is also more common, especially for some SDK projects, this piece of development process is also need to master, NDK development (including JNI) is also one of the means for employers to distinguish candidates, enterprises do not need to use, but can be through the grasp of NDK to screen talent.

3. Language learning development Languages: I’d like to make a correction here that language learning is not cross-industry, as Kotlin is a first-class citizen of the Android world. There are more popular Python and GO, in addition to do the bottom C/C++ is essential.

4. Source code: requirements to understand and familiar with the source code (choose a few third-party libraries can also be), to be familiar with the source code and its implementation principle. And to achieve their own secondary encapsulation (or their own contribution to the tripartite library) tripartite library. In this way, you will become an expert on this piece of technology during maintenance. I think output forcing input is a good way to learn.

.

The following points to do a specific comb:

  • Basic skills for architect: Deep Java generics + annotations + simple + concurrent programming + data transfer and serialization +Java Virtual Machine principles + reflection and class loading + dynamic proxy + efficient IO

  • Android advanced UI and FrameWork source code: advanced UI promotion + FrameWork kernel parsing +Android component kernel data persistence

  • 360° all-round performance tuning: design philosophy and code quality optimization + program performance optimization + development efficiency optimization

  • Interpretation of open source framework design ideas: hot repair design + plug-in framework interpretation + component framework design + picture loading framework + network access framework design +RXJava responsive programming framework design +IOC architecture design +Android architecture component Jetpack

  • NDK module development: NDK basic knowledge system + bottom image processing + audio and video development

  • Wechat small program: small program introduction +UI development +API operation + wechat docking

  • Hybrid Development and Flutter: Html5 project Combat +Flutter advanced

After the knowledge is sorted out, it is necessary to check and fill in the gaps. Therefore, I have prepared many e-books and notes for these knowledge points, which make a perfect summary of each knowledge point.

The above content is included in the open source project: [Github]. You can get it by yourself and share it with us for free.