Mobile development has arguably become more and more stable in the last two years as more and more people learn to develop on Android, creating a uneven market. The so-called entry is easy to grow up is difficult, confused about the future, do not know how to improve their skills, and for the primary, intermediate and senior need how to become a talent, many people are confused. In order to facilitate you to become a talent, I put the basic, intermediate, senior and senior four common positions need to master some knowledge sorted out as follows.

primary

The definition of a junior R & D engineer is to master the basic knowledge of Android and be able to independently complete a function. The working years are about 1-2 years. Most people at this level can achieve it quickly by reading some materials and practicing projects. People at this level often need to master some of the following skills:

  • Master the knowledge of Android’s four major components, deeply understand the related life cycle, and common development knowledge of Application, Fragment, and Intent must be mastered.
  • Master the properties and use of basic Android layouts and controls, such as LinearLayout, RelativeLayout, ConstraintLayout, etc. Control TextView, ImageView, RecyclerView, ScrollView and so on.
  • Have a basic understanding of Android resource access and use, and understand the adaptation principle of Android for different countries, languages, screens and apis.
  • Master the use of Android system services and tools, and have basic knowledge of network access and database operation.
  • Proficient in r&d tools, such as IDE, simulator, network agent, log, etc.

The intermediate

My definition of intermediate engineer is to be able to skillfully complete functional research and development, but also need to master some principles of common open source library, and imitate the open source library to build wheels. Most people at this stage have worked for 3-5 years and are skilled in business development and can solve any problem they encounter. People at this level usually need to have the following skills:

  • Familiar with SOLID basic design principles, master 23 design modes.
  • Deep understanding of development language features Java/Kotlin, such as reflection, dynamic proxy, APT, etc.
  • Basic understanding of Android architecture, and in-depth understanding of APK structure and packaging principle.
  • Basic understanding of Android features, such as MD design, rights management, Doze mode, etc.
  • Proficient in various r&d debugging tools, such as Git, Gradle, Mat, layout Inspector, etc.
  • Master the principle of Handler/AsyncTask and be familiar with multi-threaded development.
  • Have a preliminary understanding of the principle of drawing page system, able to implement a complex custom control.
  • Familiar with the use of open source libraries such as Glide\Fresco, Network library (Volley\okhttp\Retrofit), Dagger\RxJava\EventBus, etc.
  • Be familiar with applying common optimization methods to avoid writing code that leaks memory.

senior

For advanced, it is not limited to function and business development, but also need to have a deep understanding of the operating principle of the Android system, to achieve mastery, part of the Android end architect. Most people at this stage have worked for 5-8 years, have the ability of open source library design, and have a good understanding of the operating principle of Android system.

  • Master advanced Java features, such as JUC, thread pool, NIO\BIO, etc. Knowledge of JVM, such as memory model, GC principle, class loading mechanism, thread model, etc.
  • I have a deep understanding of Android operating environment, Android sandbox mechanism, AIDL principle and Binder communication principle, and app and activity startup principle.
  • Master the principle of thermal repair, advantages and disadvantages of major manufacturers’ solutions.
  • In-depth understanding of Android event distribution, with emphasis on touch event mechanism.
  • Deep understanding of Android drawing principles, understanding of VSYNC and Surface mechanics and Windows principles.
  • In-depth understanding of Android animation principles, including tween animation and property animation.
  • Basic knowledge of Android security mechanism and understanding of Android security principles.
  • In-depth understanding of design paradigms such as MVC, MVP, MVVM, clean-Arch, etc.
  • Understand architecture evolution, have a good idea of layering and splitting, master modularization, plug-in, dynamic deployment, etc.
  • Sensitive to new technology (, understand and master next-generation architecture dynamic feature, etc.

If you reach that level, congratulations, you’re over 70%, but if you want to take it a step further, such as an architecture/development specialist, you need to be able to design architecture, see things from a higher level, and understand the design of the entire system, in addition to understanding some of the core principles of Android.

experts

As a development expert, in addition to understanding some of the core principles of Android, you also need to have the ability of architectural design, be able to view problems from a higher level, and understand the design of the entire system.

  • Understands microservices, SOA ideas, and has some experience in back-end development.
  • Understand front-end development tools and ideas, know vue React and other development frameworks.
  • Deep understanding of cross-end technologies such as PhoneGap, WEEX /RN FLUTTER, apAP, etc.