preface

An Android technology communication group I formed with my friends has been very busy recently. Every time I read a message, it was 99+.

The head of penguin kept flashing and had no time. When I clicked in, I found that they were all talking about job hunting and interviews.

siege

The cause of the incident was that a new girl came to the group. At first, she asked some technical questions in a sweet voice. The group members were suddenly very active.

(Don’t ask, I’ve never met a woman. 90% of the group members are men, and maybe 10% of them are women.)

At the beginning of the serious answer to the question, the results to the back of the topic of everyone more and more skewed: advice to change careers; Wish you an early departure; Quit now…

I, who wanted to join in the topic originally, began to sink into meditation when I saw this. Leaning back in my chair, I could not help but light a cigarette. I remembered a sentence qian Zhongshu wrote in his works: Marriage is a besieged city, people outside the city want to get in, and people in the city want to get out.

That’s also true for our job: programmer work is a siege, with people outside trying to get in and people in the city trying to get out.

People from outside the city want to go in

Enter “programmer” in any browser, take 360 and Baidu for example, in the recommended 20 searches, five are about “programmer entry”, “programmer self-study” and other related, and the ranking is very high.

The message is straightforward: many people want to learn programming and become programmers.

Besides “study”, another popular search is “salary”. The average salary for a job as a programmer has repeatedly topped the list, which is one of the reasons people are so enthusiastic about the industry.

In 2019, the IT industry ranked first, with an average annual salary of 161,352 yuan. Science and technology ranked second with 133,459 yuan; Finance ranked third with 131,405 yuan.

If you look at the graph below, it’s more intuitive. 70% of programmers earn more than 100,000 yuan.

These reasons have led to the emergence of three hundred and sixty lines, line to IT pomp.

The people of the city wanted to come out

I remember when I was shopping around, there were a few questions that always topped the list:

“Is Android development cool?”

“Where is the path for programmers?” “It feels like the future for Chinese programmers is bleak, doesn’t it?”

There are many programmers making fun of themselves and the programmer industry below these topics

What is the truth?

In fact, most of the people who feel gloomy about the world are those who want to get a high salary after learning technology for a month or two and never doing a project.

But it didn’t work out as they expected. They just typed old code every day, used the Internet to move wheels, and sat around waiting for a raise, a promotion, a car or a house. So on some joke.

The other people who really learn the technology and hone it for four or five years they call it engineers, technologists, technologists, technical managers. Their prospects are so bright that even if they do a part-time job for a month, their income is higher than that of second-rate programmers who complain about their life and work but don’t work hard or change.

How to be a promising programmer?

I’m not sure if the programmer industry depends on youth, but it certainly depends on technology.

A lot of people do technology-intensive things with a labor-intensive mindset.

How high can the added value of manual labor be?

Moreover, the emergence of the programmer industry really saved a lot of people who are not good at mixing workplace and do not want to deal with others. As long as you can solve the problem, even if you do not speak, your boss will still give you a raise.

But it’s all based on your irreplaceability, and if you can just tap the basic code, flip the wheel, and do a search, you’re easily replaceable. Such you also have no power to talk about salary, because these jobs are physical work rather than mental work, and programmers should be architects rather than porters.

## How to improve yourself?

Here we can work in depth and breadth.

  1. Ascending breadth

If you choose this direction, you can try to become a full stack engineer, and the so-called full stack engineer is a person who has a variety of skills, is competent in front end and back end, can use a variety of skills to complete products independently.

To move in this direction, you don’t need to have a deep technical knowledge in each direction, just about 80% of each language. You may not be able to solve many of the most sophisticated technical problems, but you can solve most of the front and back end problems by yourself. And because they are familiar with the big picture of development, they are the closest developer to the project manager.

  1. Delve into the depth

If you choose the second direction, you will need to learn a language or two in a particular technical area so that all the problems in that technical area can be solved by you. The common technology fields include front-end, back-end, mobile, iOS development and other traditional fields, as well as artificial intelligence, big data analysis and Internet of Things, which have emerged in recent years.

What are the specific methods? (Android programmers only)

(1) What to learn?

In the current era, WHEN 5G is rapidly rolling out, NDK technology is essential in the context of the popularity of smartphones and the price reduction of data.

In addition, there are many other technologies that are valued by dACHang, and the general technical requirements are as follows:

  1. Deep understanding of Android platform architecture, main components and working mode;
  2. Experience in Linux kernel, Framework, JNI, VIRTUAL machine, security reverse and other underlying technologies;
  3. In-depth understanding of design patterns, able to design high cohesion, low coupling system framework, improve development efficiency;
  4. Strong ability of client system architecture design, with a deep understanding of versatility, cross-platform and reuse;
  5. Experience in large software architecture design and refactoring.

(2) How to learn?

Here I would like to share with you my own learning ideas:

  1. Learn the basics

Activity related entity knowledge system

• Task startup principle and call stack kernel

• Lifecycle and kernel management principles

• ViewGroup source code parsing

• View source code analysis and advanced custom View project combat

• Core mechanism for event distribution

• Handler communication principle with framework handwriting

• Intent data transfer principle and kernel

Hook Resource source code implementation

Fragments of kernel

• Fragment transaction management mechanism and control mixed application principle

• Principles of Fragment transaction management

Service kernel Principles

• Life cycle and AMS relationships

• Two startup modes

• Kernel-based application combat

• Service process priority tuning and deployment

• Service responsibility principle

Communication schemes between entities

Data storage in entities topic

  1. Read the source code + actual use

On the source of reading and actual use, I sorted out a note, there is a set of practical teaching video organized on the Internet.

If you need to, you can like, message “111”, support me, and then you can directly into my mouth”Lot”, which has free access.

The last

Saying so much is not to create anxiety for you, but to tell you: stick to a goal is hard, but your efforts will not be in vain.

Android isn’t cool, and it won’t be, given the fact that the number of Android users is clearly there. Just, now the Android requirements for practitioners become higher, the competition has become fierce, in this environment, we need to struggle, is not it?

Finally, if you find this article helpful, I hope you can like, leave a comment, support me, thank you.

If you have any good information can also be private to me, I will upload group files to share with you. This article belongs to personal view, any inadequacies welcome to point out.