The current situation of Android programmers is a common problem!

The current state of Android development seems to be a commonplace question. But today I don’t want to write about the status quo of Android development, what is the future of Android, and the coolness of Android.

Today we will talk about ourselves, the current situation of our Android programmers.

Everyone also came in from the title to see the starting point. Indeed, the title is very heart-warming and true. An architect is the culmination of a programmer's promotion. Who doesn't want to be an architect? Why are most programmers still a programmer from beginning to end from beginning to end? Let's look at it with thought.

Most programmers start from small companies and small teams. In particular, programmers who are not from a major class, unless they are skilled, it is difficult to enter a large company or a large factory such as BAT. Small teams usually have about 10 people, of which the architect (or CTO) is often the best technical. Therefore, the proportion of architects in the majority of coders is less than 10% on average.

Architects can also be divided into elementary, intermediate, and advanced. There are even fewer really high-level software architects in the arena.

Therefore, it can be said that more than 90% of the code farmers have been working for several years or even more than ten years, but they still cannot be architects. What is causing this?

What is an architect?

The term Architecture comes from the field of architecture. We often compare programming to building architecture. The division of labor on the construction site is clear, with each level, according to the process of a building:
First, the developer puts forward the demand (the company customer)
to the contractor stops the project (the company itself) and the
chief engineer draws the architectural drawings. This step is the most critical. The overall frame and model of the house, what it looks like after it is built, and the materials used for the decoration of the reinforced cement tile floor must be given clear processes and steps (architect)
foreman leader construction (TL)
and cement and cement, bricklaying master Bricks, etc. (code farmers, business codes)

It can be said that the process of building a house and programming development is a perfect fit.

Insert a little story of your own

One thing to understand: writing business code and doing architecture are two completely different things.

When I first stepped into the university to get started with Android development, I didn't have much concept of the term architect, so I felt that it must be very good. I will definitely be an architect when I work in the future.

Later, I started to write code, starting from Java, then the four major components, writing Activity, then learning UI, learning layout, etc.

After graduating from school, I have been able to independently develop my own APP, although it is just some books borrowing and returning APP, wallpaper downloading APP. But I still feel like I'm pretty good 13. But with this qualification and a background in a major, I easily got an offer from a small company after graduation. After working for a year, I can basically solve the problems in my development position independently.

I am awesome. But I won’t say it verbally. I want to quit. The stage of this small company is not enough for me to play, but I won’t say it. I will find my next home first, and then I will resign. I just entered the society. Admire yourself with such a vision.

So I took my resume of 1 year of work experience and voted for Alibaba, an Android R&D engineer. Gan, I haven't received the interview.
Then I voted for the ByteDance that was surging at the time, known as the world of young people. Gan, did not receive an interview.
Is it because my eyes are low? I voted in a listed company, the financial industry, and the most profitable industry for programmers. I'm ** and I don't give interviews.

???

Finally, I finally met a medium and large enterprise, um...intermediate Android engineer.
After introducing myself, after talking about the projects I have done, the leader's face looked like: That's it? That's it? Expressions.
Of course, as an adult, he still has the proper restraint and politeness, and he didn't interrupt me.
Then when the
leader comes up in the interview question section, he asks: See your resume written on your resume to be familiar with AIDL, and talk about oneway.
Me: Huh? What is oneway? It has nothing to do with AIDL, I am familiar with AIDL refers to the use of AIDL interface for cross-process communication.
Interviewer:...

Aha, in the next 15 minutes I am so ashamed that I can't wait to break out immediately! What is the principle of binder communication? Can't tell. Can child threads create Handlers? The hen. Can you always talk about the activity startup process? Hahaha, forgot...

The first job-hopping in my life ended in humiliation. . . . . . .

After this incident, I woke up like a dream. Want to be the chief foreman (architect) just by knowing how to build bricks (writing business code)? impossible.

This is also one of the reasons why most programmers cannot become architects. Always staying at the business level, no matter how good the brickwork is, it is only a bricklaying master after all.

How can I become an architect?

We still compare it to building a house. In other words, how can one step by step become a master foreman from a bricklayer?

1. Lay the bricks well

The code is written for others to see, and writing good business code is the first step to becoming an architect.

No architect has grown up from writing business code. There is no architect who does not understand the business. All architectures depend on the business. All architects must also write business code and do not use what they design in real projects. I am afraid that they themselves will not know the rationality of this architecture design.

The code quality optimization I want to express here does not only refer to daily programming.

What I want to express is an architectural idea: future-oriented programming

When a good engineer hears the requirements, he can judge which of these requirements are likely to change and which are unlikely to change based on his own business capabilities.

Regarding these changed content, in the process of writing, it will not be hard to write, and repeated confirmation of the requirements that are unlikely to change will be simpler to prevent the complexity caused by over-design.

To put it simply, when he gets the requirements, he does not simply consider how to realize the requirements, but also considers the architecture and scalability of his own design. In his eyes, the requirements that he sees will be decomposed and folded. Divide, and then your own technical solutions will be decomposed and distributed one by one.

After completing the design, he will clearly know which changes in the system he designed are supported. You can change it as you like. I only need to change a very simple content. What you absolutely cannot change, you have to change it. I have to spend a lot of money, especially when the data is already wired.

And I will communicate with PM with my own architecture system and make it clear.

If you already have this kind of thinking when programming, it means that you already have the basic qualities of an architect.

Second, know the composition of bricks, reinforced concrete

To build a house, good materials must be used. These are the ground floor and foundation of the house.

In programming, the language we use is bricks, various tools are cement, and various frameworks are steel bars.

Of course, it’s not enough to use it. It is necessary to "know what it is and why it is". The "because" is the underlying source code of various methods, tools, application frameworks, and its implementation principles.

For most programming developers, they face a common problem: it is difficult to balance breadth and depth.

Every company has a different business direction and uses different technologies. Fortunately, during the interview, the technology used by Party A’s company just happened to be the same as what you learned. As a result, when you ask about the technical aspects, you can only answer the four major components. The life cycle is still unclear, and the view is drawn. The process is ambiguous, the garbage collection algorithm is half-knowledgeable, and the performance optimization is ignorant. If this can find an offer, then hell.

Many people just float on the surface during the development process, ignoring the underlying source code analysis, and the resumes for job interviews have not been repaired and focused. Naturally, job applications are not going well, and salary increases are hopeless.

So the best way to solve this problem is: ** grasp the invariants. **Be aware that the underlying knowledge will never be outdated. Algorithm data structure is never out of date. Basic programming theory is never out of date. Good coding habits will never go out of style. The ability to analyze and solve problems will never be outdated. Strong learning ability and strong thirst for knowledge will never go out of style. The way your brain thinks is never out of date.

Give a chestnut

Everyone should know and understand the importance of performance optimization. However, due to insufficient knowledge of the entire knowledge at work, they will not have their own understanding of performance optimization. For example, Glide, this is a technology we often use, I believe everyone will use:

Glide.with(context).load("图片url").into(imageView)

But who knows there are performance pits in this?

If we cannot systematically master the life cycle of activity, fragment, and application, and don’t understand the glide source code, we may pass this directly in the context, or directly to the application context, then the life cycle of Glide at this time It is bound to this or application, then everyone can imagine that in the nested fragment+viewPager code structure, life cycle management is not in place, which will cause memory fragmentation of life cycle problems. Naturally, everyone knows that if there are more similar situations, performance will be lost little by little, and finally OOM will occasionally occur during the operation of the app. The result can be imagined.

The knowledge at the bottom level is solid, and the things on the top level are like a kite. You are the one pulling the string underneath. You can easily see what the kite looks like by pulling down the string.

Three, the house must be beautiful, decoration is indispensable

At this point, I believe you can easily think of what I want to say next. That's right, it's indispensable for Android development-performance optimization.

Performance optimization is definitely a compulsory subject for old Android. If you have no experience in performance optimization, you will inevitably hit a wall wherever you go to find a job.

An Android architect must control the overall composition of the entire APP. User experience is the most important point.

As an Android developer, most of my friends may be familiar with the topic of performance optimization. Google officially launched the "Android Performance Patterns" a few years ago. Of course, most of the Tips need to be followed. Standards, but no matter what the theory says, the work we do ultimately needs to serve the business. Whether you are to increase downloads, optimize user reviews, or increase business conversion rates, you need to give performance optimization ROI.

After nearly ten years of development, Android technology optimization is changing with each passing day. Now Android 10.0 has been released, and the Android system performance has been very smooth, which can be completely comparable to iOS in terms of experience. In the hands of major manufacturers, changing the source code and customizing the system made the Android native system become a mixed bag, and then in the hands of different levels of development engineers, because the technical level is uneven, even if many mobile phones are running and the software performance is very high. , There is still a lag when opening the application.

APP performance optimization has become a comprehensive quality that developers should have, and it is also a guarantee that developers can complete high-quality application works.

Summary

What is the career plan from Android Xiaobai to architect?

Our first entry into this business may be out of interest, maybe out of prospects.
Entering this profession means that you need to keep learning, learning, advancing, and advancing.

At the beginning of our career, in order to get a job, we had to make our knowledge system more **"broad"**

After entering the job, you find that you do not need to use all the knowledge you have learned before. You start to need to advance the **"depth"** of a certain knowledge module.
At this time, you have the basic development: knowledge points

After working for a few years, you find that you need a bigger stage, and you need several in-depth studies in connected modules.
At this point you have the knowledge of an intermediate engineer:

After a few more years, you are already a veteran in the workplace, and you can solve almost all daily problems at work. You have a lot of knowledge. You connect all your knowledge to form a complete knowledge system.
At this time you are a senior engineer: knowledge system

However, you have reached the age of 30+ and are about to retire. There are countless senior engineers behind you who can take your place at any time.

At this point, you need to explore the deeper secrets of the code. You are no longer a "bricklayer" who only builds houses.

You know the composition and structure of each brick. You know where in a house you need this "brick" and where is suitable for another type of "brick". You know how this house needs to be built and how to design it to be stronger, reasonable and beautiful.

At this point, you are an architect.

At last

Why can't many programmers be architects?
1. A good and healthy career plan is very important, but most people ignore it.
2. Learning habits are very important. Perseverance is the right answer.
3. Programming thinking has not been able to elevate to a higher level. It is limited to coding and business, and has not considered the selection and expansion.
4. There is no good architect to guide and train around. The circle you are in has a huge impact on the growth of programmers.

I am Xiaoma, a programmer from OPPO.
Welcome to follow my short book, share Android dry goods, and exchange Android technology.
If you have any insights on the article, or any technical questions, you can leave a message in the comment area to discuss, and I will answer you religiously.
Everyone is also welcome to come to my B station to play with me. There are videos explaining the difficulties of various Android architects in advanced technology, just to help you get an early promotion and raise your salary.
Through train at station B: https://space.bilibili.com/1478341492
Use the code to show a great life.

Easter eggs:

I have compiled a roadmap for the growth and learning of the Android Engineer Advanced Architect. Because of the many knowledge points recorded in it, I will not show them one by one. If you are interested, you can go to my GitHub address: https://github.com/ Take a look at the collection of 733gh/Android-T3 , don't watch it if you are not interested.

Guess you like

Origin blog.csdn.net/dongrimaomaoyu/article/details/114501185