Android engineer level division and learning route

Click on " Programmers " above and select "Public Account"

Critical moment, the first time delivery!

640?wxfrom=5&wx_lazy=1

640?wx_fmt=gif&wxfrom=5&wx_lazy=1&retryload=1

foreword

I saw an article mentioning that "there have been many junior Android programmers in China in recent years, but middle and senior Android technical talents are still scarce", which is true. From some interviews I conducted in Baidu, It is not easy to find a suitable senior Android engineer. Generally, it takes a lot of interviews to select a more satisfactory one. Why are there not many middle and senior Android programmers? This is a question that I can't answer well, but I want to write an article to describe the learning route of Android, hoping to help more Android programmers improve themselves. Since I'm also coming from a rookie, I will write this article based on my personal experience and my knowledge of the Android learning process, which will make this article more real, rather than just talk on paper.

my work experience

As mentioned earlier, I also came from an Android rookie. In fact, this sentence is applicable to anyone, that is, everyone has come step by step, so as a beginner, there is no need to be depressed because of poor skills. Similarly, experts should not look down on some so-called rookies, because this It's not fair, technology can only be compared to a certain extent with the same working years. Maybe the rookie in your eyes is just a novice who has worked for half a year, and you have worked for 5 years. As you can imagine, this is not comparable at all. It's not good that others can reach a higher technical level than you after 5 years.

I graduated with a master's degree. I have been working for 3 years and 3 months, and my position has changed from a junior engineer at Tencent to a senior engineer at Baidu Android. I didn't do Android in the beginning. I did C++ for half a year, and then I worked as a web front-end for 3 months. Then I transferred to Android in the company. The working life of pure Android is actually 2.5 years. But I think my Android work experience (note: work experience is not equal to work experience) is more than 2.5 years, I spend a lot of spare time on Android development, and I am used to thinking about problems, summarizing problems and integrating them, so I Android technology has improved a lot in a short period of time.

In the process of Android learning, I have stepped on the pits that beginners have stepped on. I also deeply know what the most difficult problems are in the learning process. For example, 3 years ago, I wanted to put a ListView in SlidingMenu, and found that the two always didn't work well together. This must be due to the problem of sliding conflicts. I also know it, but I don't know how to solve it. I went to the school library and rummaged through all the Android books, to no avail. Everyone must know the reason, why I can't find the answer to the question in the book, because the introductory book does not talk about sliding conflicts, and the so-called advanced programming book does not talk about it. There is another problem. I used to think that view.post(runnable) can make the run method of the runnable execute in the thread, so I did the time-consuming operation in the run method. Now I think about how many vegetables I was at that time, so I used to be a rookie too.

Until one day a few years later, I finally figured out the sliding conflict, and then I wrote the idea of ​​solving the problem on the CSDN blog, but it seems that not many people see it, and many people can't understand my intentions , and then the traffic of my blog became more and more, which slowly got some people's attention. Then one day I had the opportunity to write a book. I thought of the pit I stepped on when I first learned Android, and the trouble of sliding conflicts to me, in order to better spread my technical experience, in order to let more people In order to let more people become Android senior engineers, I decided to make the most important, most difficult, most troublesome, and necessary knowledge points for senior engineers in Android development. This is the The reason and meaning of "Android Development Art Exploration". What was the response to the book? Judging from the current readers' evaluations, there are basically no negative comments on the content. I have received affirmations and thanks from many readers, which shows that many people can understand my intentions.

Having said so much, let’s get down to business. Let’s talk about the topic of the Android learning route. This article intends to make a comprehensive analysis of the Android learning process from four stages, namely Android primary, intermediate, senior and senior engineers. Please see below for details. analysis. In the same way, this learning route is still only for Android application development, not for Rom development and reverse engineering. Here is a virtual role of "Xiao Ming", where Xiao Ming is the representative of Android beginners.

Junior engineer

Xiao Ming has never been exposed to Android development before. He is a fresh graduate. His salary is 13k. Then Xiao Ming entered Baidu as a school recruit. Then how does Xiao Ming need to learn to become a junior engineer? At this time, Xiao Ming has a certain foundation in programming, data structures, and C language. He also has a good grasp of Java syntax. Android only has Java language. Unfortunately, Xiao Ming does not know how to engage in Android.

First of all, Xiao Ming needs to buy a book for getting started with Android. In order to learn Android faster, Xiao Ming also spends his spare time reading the book while typing the code according to the examples in the book. As a result, Xiao Ming learned this book in 2 weeks. . After reading this book, Xiao Ming has a general understanding of Android's history, structure, code specifications, etc., and Xiao Ming can already write some simple activities. At this time, in Xiaoming's eyes, Android development is very simple and fun. You can make some interfaces by placing some button text boxes in xml.

Xiao Ming began to follow his technical tutor to make needs, and some simple small needs are naturally not a problem for Xiao Ming. Suddenly there was a demand one day, which required Xiaoming to add an animation effect to a button in the Activity. Xiaoming panicked: "I haven't touched it at all, and it's not mentioned in the book. What should I do?" Xiaoming calmed down and opened it. Baidu search, enter "Android animation", open the first few links, Xiao Ming suddenly realized, according to the online example to achieve the demand. Later, the tutor told him: "To learn Android well, the official documents must be read, which are both comprehensive and authoritative." Then Xiao Ming was like a treasure. He spent a year reading the above guide and training, and he also copied a few small examples.

One day, Xiaoming needed to do another animation-related requirement, which was not difficult for Xiaoming. He skillfully opened www.baidu.com and typed "Android animation", and suddenly he was stunned: "I can't write animation every time. Let’s have a look at Baidu!”, so he opened a blog on CSDN, and wrote all the knowledge points related to animation, so that he would not need to search on Baidu after writing animation-related code. What is the fact? After writing the animation-related code later, Xiaoming really doesn’t need to go to Baidu to search, because by writing an animation blog, he has memorized all the animation-related details, so that he can no longer refer to any documents. Later, Xiao Ming also learned to write some trivial things that are inconvenient to put on the blog on Evernote. Whenever he forgets, he can quickly retrieve it within 10 seconds, instead of spending 10 minutes to search again.

To sum up here, when getting started with Android, you need to have an introductory book, study the contents of the book well, and spend a year reading the training and guide in the official Android documentation, and do it by writing blogs and taking notes. In conclusion, it is recommended to make each of your blogs valuable. After a year of study, I believe that everyone can reach the level of an intermediate engineer.

skills requirement:
  • Basic knowledge points
    such as how to use the four components, how to create a Service, how to layout, simple custom View, animation and other common technologies

  • Book Recommendations
    "First Line of Code Android", "Crazy Android"

mid-level engineer

After a year of hard study, Xiao Ming finally became an Android intermediate engineer, and his monthly salary became 17k. As an intermediate engineer, he can already do a lot of physical work in the company, but some very important tasks Xiaoming cannot undertake alone. At this time, Xiaoming needs to learn a lot, as shown below:

  • AIDL: Familiar with AIDL, understand its working principle, understand the difference between transact and onTransact;

  • Binder: Understand the working principle of Binder from the Java layer and understand the use of Parcel objects;

  • Multi-process: master the operation mechanism of multi-process, understand Messenger, Socket, etc.;

  • Event distribution: elastic sliding, sliding conflict, etc.;

  • Play with View: the drawing principle of View, various custom Views;

  • Animation series: Familiar with the difference between View animation and property animation, understand the working principle of property animation;

  • Understand performance optimization, familiar with mat and other tools

  • Learn about common design patterns

study method

Reading advanced books, reading Android source code, reading official documents and trying to write related technical articles by yourself requires a certain technical depth and self-thinking. In the learning process at this stage, there are two points that bother everyone, one is reading the source code, and the other is customizing View and sliding conflicts.

How to read the source code? This is a headache, but the source code must be read. When reading the source code, don't go deep into the details of the code. You should pay attention to the process of the code and try to dig out the conclusions that are useful for application layer development. In addition, carefully read the comments on a class or method in the source code. When you don't understand the source code, the comments in the source code can help you better understand the working principle of the source code. Although this process is difficult, there is no other way.

How to play with custom View? My advice is not to learn custom views by learning custom views. Why do you say that? Because there are too many types of custom views, all kinds of gorgeous custom effects, how to learn to play! We need to look at the essence through the phenomenon, and pay more attention to the knowledge points required for custom view. Here is a summary:

  • Understand the sliding principle of view

  • Understand how to achieve elastic sliding

  • Understand the sliding conflict of the view

  • Understand the measure, layout and draw of the view

  • Then learn a few examples of existing custom views

  • Finally, you can get a custom view, the so-called change is inseparable

It will probably take another 1-2 years to reach the technical level of a senior engineer. I personally think that this process can be shortened to 0.5-1 year through "Android Development Art Exploration" and "Android Heroes". Note that reaching the technical level of a senior engineer does not mean that you can become a senior engineer immediately (influenced by opportunities and whether you change jobs), but once the technology is reached, becoming a senior engineer is just a simple matter.

skills requirement:
  • A little deeper knowledge

AIDL, Messenger, Binder, multi-process, animation, sliding conflict, custom View, message queue, etc.

  • Book Recommendations

"Exploring the Art of Android Development", "The Legend of Android Heroes"

senior engineer

Xiao Ming became a coveted senior engineer with a monthly salary of 20k, and he also got a drop of stock. At this time, Xiaoming's Android level is already good, but Xiaoming's goal is to be a senior engineer. Xiaoming heard that the monthly salary of a senior engineer can reach 30k+.

In order to become an Android senior engineer, there are more things to learn, and some are not so specific, as follows:

  • Continue to deepen your understanding of what is defined in "Slightly In-depth Knowledge Points"

  • Understand the core mechanism of the system:

  1. Understand the startup process of SystemServer

  2. Understand the message loop model of the main thread

  3. Learn how AMS and PMS work

  4. Able to answer the question "How many windows exist in an application?"

  5. Understand the approximate workflow of the four components

  • Basic knowledge point details

  1. Activity startup mode and the performance of different activities under abnormal conditions

  2. Association of onBind and onReBind of Service

  3. The difference between onServiceDisconnected(ComponentName className) and binderDied()

  4. The performance details of AsyncTask on different versions

  5. Thread pool details and parameter configuration

  • Familiar with design patterns and have architectural awareness

study method

At this time, there is no more specific learning method. It is nothing more than reading books, reading source code, and doing projects. Usually, there are various summaries, and try to integrate knowledge as much as possible to form a systematic feeling. At the same time, this stage has certain requirements for the architecture. The architecture is abstract, but the design pattern is concrete, so we must strengthen the study of the design pattern. Regarding the study of design patterns, I recently recommended a new book to everyone, "Analysis and Practice of Android Source Code Design Patterns", which can not only learn design patterns, but also experience the design ideas in Android source code. I am also reading this book recently.

skills requirement:

  • A little deeper knowledge

  • System core mechanism

  • Basic knowledge point details

  • Design Patterns and Architecture

  • Book Recommendations

"Exploration of Android Development Art", "Analysis and Practice of Android Source Design Patterns", "Analysis of Android Kernel"

Senior Engineer

Programmers at this stage may not have a very specific learning route.


640.jpeg

  • Original link : http://www.androidchina.net/8178.html

  • Programmers are organized and released, please contact the author for authorization to reprint

640?wx_fmt=gif640?[Click to become an Android God]

Guess you like

Origin http://43.154.161.224:23101/article/api/json?id=324771975&siteId=291194637