My Android Experience
The past ten years have been the golden period for the vigorous android development of the mobile Internet. I believe that everyone has also enjoyed the dividends of the mobile Internet. During this period, the mobile Internet experienced a dawning period, a growth period, a mature period, and now it has entered a saturation period. I still remember that during the period from 2014 to 2020, I don’t know how popular mobile development work was.
The salary of developers with 1-2 years of work experience was basically tens of thousands, and the professional qualification requirements for recruits were not high, just getting started. From the end of 2016 to the present, the situation is different. The mobile development market is oversaturated, and the market is flooded with too many junior developers. The cold winter of the mobile Internet has been circulating on the Internet. Many developers are not as easy to find a job as before. , Some positions are often faced with the scene of being one in a hundred. Without three to five years of experience, HR is now overwhelmed.
So I can’t help but ask, is there room for development in the future, whether it is Android or IOS if you are engaged in mobile development now? Also, as mobile development is getting closer to the big front end, even some positions that originally belonged to native developers are also qualified by front-end developers. Think about dividing up the space that originally belonged to others in a crowded room. Use, it becomes more crowded, the feeling must be uncomfortable, so where is our shelter in the future?
The author has been engaged in mobile development since the end of 2022. I have been engaged in server-side development since I just graduated, and I have written .NET technology stack codes. I have nearly 5 years of experience so far. I want to say that if you only stay on the surface framework and use other people’s wheels, and don’t understand the mechanism and principles of the implementation inside, it is easy to be eliminated.
But if you have a deep skill in mobile development, for example, in Android, you have a certain unique insight into the mobile architecture, have certain attainments in performance optimization, have a clear understanding of the Android system, and are in an industry The accumulation of rich industry experience is also the highlight, and it is basically a popular type. So to put it simply, for a concept that cannot stay at the level of use, it is necessary to deeply study the structure inside, why there is such a concept, if there is no such concept, what kind of situation will it present?
The same is true for development and programming. What you want to pursue is the way of programming, not the art of programming. Don’t look at the popularity of various popular frameworks. There are almost only a few types, and they can be used one after another, but some open-source library authors or organizations have packaged them well.
Based on the current market performance, we all know that the next trend is AI, but as mobile developers, how can we take advantage of the coming AI era? My answer is: Commit to being a lifelong learner, go back to the source to explore which unchanging ways in the code world, you will say again, which are the ways, simple examples, such as programming ideas, commonly used design patterns, Design principles, algorithms and data structures, network communication mechanisms, operating systems, refactoring principles, architectural thinking, etc. At the same time, under the current development situation, it is becoming more and more the route of full-stack engineers.
Read more: How to write blog rygar enterprises | rygar enterprises
Advanced Road
Why do I think of writing such an article? On the one hand, the work needs these days, and the group just wants to plan the Android technology route in 2023. Simply put, it is what level our group is currently at, and the current project uses What stage is the technology in? In the next year, how should the technology iteration of the project go, and to what extent?
On the other hand, I have been engaged in Android development for several years, but I have not planned my technical route well, and I want to carefully organize the future advancement path. We all know that the Android technology system has always been huge. When we first started learning, we basically started from point to point. There are developers at all levels for driver development at the system layer. Most developers develop from the application layer. For development, it is more appropriate to develop in the direction of application architecture. If it is for system layer development, the underlying driver is often more appropriate.
Mobile Architecture
Mobile architecture is one of the TOP5 topics of the 2018 mobile technology year. From it, I realized how popular architecture is. I remember that when I first started learning Android, there was no such framework as it is now. At that time, most of the architecture was developed on the server side, such as multiple Layer architecture, including the display layer, business logic layer, and data access layer.
This is the simplest three-layer model. The Android system is a single-page architecture designed based on an event-driven response mechanism. In fact, it is the same as the window page in a browser. There has always been a message polling monitoring mechanism in the system, in which an event is triggered, the corresponding response code is processed, and these processing operations are registered in the system in advance.
The earliest development model is basically based on the MVC model that comes with the Android system. Activity is basically similar to the role of Control. View and Mode are coupled with each other. Later, it evolved into the mainstream MVP and MVVM models. By the way, the MVVM model is actually Proposed in the Microsoft WPF technology system.
Performance optimization
To put it simply, an APP needs to be paid attention to from three aspects, business function, logical interaction, and performance response. If we use an APP, we often freeze when sliding, and crash from time to time, and some function designs are simply unconventional. For example, there are three levels and other breadcrumb clicks on the website.
You have to create a tree-level click to load on the phone, Isn’t that a bit difficult, can’t I pull up and down, swipe left and right, do I have to click? So what is the core of performance optimization? Pursue fast, stable, economical, and small, and pay attention to four aspects: stuttering, memory leaks and crashes, code quality and logic, and installation package size.
Read more: How to rank your app on the Play Store?
App Security
APP goes from code security to transmission security, to storage security. The code can be guaranteed by obfuscation and reinforcement. The transmission security is basically based on the encryption algorithm and Token to ensure the uniqueness of the transmission.
The storage application is set with an irreversible encryption algorithm. Therefore, it is particularly important to master some cryptography theories. At least you must know the hash algorithm. Some common encryption algorithms such as symmetric encryption and asymmetric encryption.
Basic to Advance
The View sliding conflict problem we usually encounter in our work can be easily solved by mastering the working mechanism of View and the Android touch event system. Common solutions include the external interception method and the internal interception method, based on the horizontal coordinate sliding distance and vertical coordinate The value obtained by subtracting the sliding distance can determine whether it is sliding left or right or sliding up and down.
Also, if you need to develop gorgeous animation effects, you must have a certain understanding of some features of view animation and property animation. The development of JNI and NDK is also relatively common, especially for some SDK projects, this piece of the development process also needs to be mastered. The working mechanism of the four major components in Android is actually the underlying application of the Binder mechanism. We might as well learn from the AIDL interface. Binder.
Continuous Integration
The continuous integration compilation environment is an important part of agile development. It can effectively improve the productivity of the entire team and minimize the possibility of human error. For example, through the continuous submission of code, the pain of code merging can be reduced, and it can be integrated with other people’s code faster.
Through integrated compilation, errors in the code library can be found early, and personnel such as products and testers can be supported in a timely manner to take packages and perform functions. Verification, so you need to master Git, Gradle tools, and Jenkins servers.
Development language
This year can be said to be the year of Kotlin. After Google IO, Kotlin has been really popular. Developers’ pursuit of efficiency is the biggest reason why Kotlin is so popular, and its momentum is also very good. For reasons of using it, it looks even more promising than Swift these days. Now that Kotlin has become a first-class citizen of the Android world, fully compatible with Java, there is no reason why we should not embrace it.
Mobile Front End
In fact, mobile terminal development also belongs to front-end development, but the front-end developers we refer to are often Web front-end developers who develop websites, and the mobile terminal is not a display carrier. It also has an entrance but compared to the website The mobile terminal has specific characteristics such as natural mobility and convenience.
With the rise of H5, the functions that can be realized natively can also be realized on the H5 side, and the experience is gradually improved, and H5 is inherently dynamic and cross-platform, which is one of the reasons why H5 can be a trend.
Design Principles
This design originality is the essence, it is the same, it is what we need to really master, the development of language features and development framework is too fast, we can’t do it, isn’t there such a sentence, the specific changes of the package Yes, just abstract it, and go after the unchanging content. Mastering a design pattern is actually mastering a solution.
These are the crystallization of knowledge summarized by the predecessors. They are basically based on specific fields to solve specific problems. We need to learn to solve problems on the shoulders of our predecessors.
Server Development
Recently, microservices have been in a mess. Although we basically do mobile development, based on the trend of full-stack development, it is necessary to understand server development. There may be no actual combat projects for you to do it with real knives and guns, but for microservices Structural theory, service-to-service communication, and what kind of aggregation process also needs to be heard. It is also necessary to focus on horizontal expansion while in-depth research in one’s own field of expertise. You can’t close the door and keep your ears open. That’s not okay.
Read the Source Code
For Android source code and third-party library source code reading, you can choose the corresponding source code library or module according to the type you are interested in, and agree on a time point for yourself. After reading it, there is a flowchart at the end, which are the core classes, classes, and classes What is the relationship between them, what is the mechanism of these open source codes, and what solutions are used? These points can finally be output through articles. I think the output is a very good way to learn.
Read More: Which countries are best for Android developers?
Mobile AI
AI, also known as artificial intelligence, formally established the research field of artificial intelligence at a conference held at Dartmouth College in 1956. The conference’s attendees were leaders in AI research for decades to come, and many of them predicted that within a generation, machines with human-level intelligence would emerge. Looking at it now, the concept of AI has existed for a long time. The main reason why it did not develop before was that the infrastructure was not perfect and the research cost was high. Now it is able to develop vigorously because of the increase in our network bandwidth, the improvement of computer performance, and the reduction of computing costs. The factors are ready. AI needs to be implemented through algorithms, so the theoretical background of algorithms is mathematics, so if you want to advance AI development, you need to learn relevant mathematical knowledge, especially linear algebra and probability theory, which are the theoretical knowledge that supports many algorithms.
Conclusion
In general, technological development can promote social progress, liberate productivity, and then improve human social production efficiency and create value. The implementation of technology requires the cooperation of commercial application scenarios. How to cooperate is realized through each different business model. In the end, technology needs to be closely integrated with the specific use of the business. If it is empty to talk about business without technology, it seems theoretical to talk about technology without business. It is best to combine the two. This also requires those of us who are engaged in software development to pay attention to business accumulation while pursuing technology accumulation, let business drive technology development, and use technical means to solve practical business problems. It’s just a fad, so you need to have a sharp eye.