Recently, I had a chat with some old Androd who have been working on Android for so long that everyone is starting to rethink their future development. They are more or less worried about the “bottleneck” in their career and have a feeling of “can’t stay” in their heart.
Looking back on the development of Android in the past six years, we can see that Android now has a mature development system and the technical framework has been updated generation by generation:
HttpClient
,Volley
、OkHttp
,Retrofit
;ImageLoader
,Picasso
,Fresco
,Glide
;OrmLite
,LitePal
,GreenDao
,Realm
,Room
;
In addition to the familiar “three big pieces” of network, image and database, there are xUtils, EventBus, Dagger, RxJava, MultiType, etc., which can be said to be the memory of the old Android throughout the “adolescence”.
From MVC to MVP to MVVM to the official AAC architecture, the Android technology stack has been “refreshed”, and with Kotlin’s help and Android Jetpack, The new generation of improved development systems has also created some additional “irritations” for older developers.
“AS 2.3 doesn’t work? !”
Will the project continue to be compatible with version 4.4? !!!!!!!!”
“Blowing coroutines before YOU even use RxJava? !!!!!!!!!”
Due to the maintenance of the old project or the working environment, there is no condition for the new frame to land, and even the appearance of the Flutter will cause a wave of anxiety.
So let’s talk about this anxiety or insecurity. Rest assured, there is no “impossible to guard against” behind!
“Unused” anxiety
For older Android, part of the anxiety comes from the “I haven’t used it yet” sentiment, which is amplified with each iteration of new frameworks and technologies, and the “I haven’t used it yet” sentiment, which is amplified with each iteration of new technologies.
For example, Android Jetpack, coroutine, Jetpack Compose, Flutter, etc. Every time you see these words, you will feel “anxious” just like hearing Dagger, RxJava, React Native at the beginning.
So how to ease (TAO) to solve (BI) this anxiety? It’s important to understand why the term “new technology” keeps popping up. I interpret this “I haven’t used it yet” anxiety as “wrench upgrade side effects.”
Here is an interesting example of the different stages of the spanner shown below, as can be seen:
- The number of spanners required for screwing nuts from 1 to 2 is reduced;
- From 2 to 3 wrenches became more handsome and powerful, and their “damage” increased.
Here’s the question:
A, since there are 2 such convenient spanner, that 1 such spanner is necessary to exist?
- The answer is yes, because the wrench in 1 is more cost-effective and lighter in characteristic scenarios.
Second, since wrench 2 can meet most scenarios, is it necessary to have wrench 3?
- The answer is yes, because the wrench in 3 is much more handsome and reliable from a robust point of view.
With the development of technology, new frameworks and technologies are designed to make development more convenient, while lowering the threshold of development to make it easier for newcomers to enter the pit.
So as an old Android developer, after the development projects need to prepare a “bunch of wrenches” manual gearshift era, now in this semi-automatic gearshift era, as long as a “wrench” can work, how can not screw the nut?
The last day we tweaked the countless nut, now just need to change the “key”, and it is the wrench may be 3, pick up the first time may be “too much”, twist the switch is not skilled, but once the nut need how deep “twisted” and “card” what position, these for us and actually isn’t so different from before.
So as long as it’s still nuts, we shouldn’t worry about having too many spanners, or be thankful that the field is still growing healthily.
The healthy evolution of technology will only make it easier to understand and use, lowering the barrier to development:
- from
RxJava1
到RxJava2
The change of the; - from
Dagger
Official till nowKoin
; - From Java
AsyncTask
Coroutine to Kotlin; - from
ButterKnife
到KTX
;
So it’s easier to use a new wrench than a bunch of old wrenches, and developers actually have less code and logic to maintain, which is a sign of a more mature community, which in turn lowers the barriers to development.
As for the anxiety that the new technology cannot be implemented into the project, we can change our thinking: there is no condition for implementation, but we can try to understand the nature of the new framework or technology, so as to ease the fear of the unknown.
For example, Dagger explicitly generates code based on annotations and templates, so if you can’t read the various “awkward” annotations, you can look directly at the generated code and understand how Dagger decouples us with the “bloated” code.
In addition, in the following Android Studio 4.1, direct jumps of the Dagger class are now supported so that we can easily navigate between the Dagger associations.
So the learning cost of a “wrench” is not high, as long as you have the skills to twist the nut. “Now has not used” also need not panic, perhaps and so on technology can be more mature more convenient to learn, and so on again can also white piao big guy’s article is not it?
Of course, there is an interesting misconception here:
Wrench 2 is better than Wrench 1, so as a wrench 2 I’m better than wrench 1?
The truth is, however, that it is the wrench makers who are awesome, and as users, those who use OkHttp directly may not understand web requests as well as those who use HttpClient.
Frameworks lower the threshold of development and improve the maintainability of the code, but as users we enjoy convenience at the same time, to become awesome is not to use, but to understand why the framework works!
OkHttp, for example, is good because of its interceptor design, while Retrofit makes development more efficient by generating template code through annotations, but Retrofit itself still needs OkHttp and other support for web requests.
Eat the best parts of the framework and you’ll be awesome. OkHttp’s design was perfectly replicated in Flutter by the Dio framework, which has become one of the most popular web request packages under Flutter.
Anxiety about competitiveness
There is also anxiety about competitiveness. From time to time, we compare ourselves with the younger generation of developers. Obviously, the younger generation is cheaper, more tolerant and more physical, which makes us, who are about to become the next wave, have anxiety about our career.
Due to the lower threshold of development system maturity, the requirements of developing Android apps are not as high as before, but “usable” and “usable” are two stories!
Compared with young people, we have some disadvantages, but as an old developer, we still have some other advantages in competitiveness, such as: business understanding and landing ability.
To take a quick example, on Android the product presents a requirement:
“Add a playback function, the effect is similar to iQiyi.”
How “reasonable” demand, at this time “salt” of the old Android believe will “tremble”, in the heart silently “greetings” product at the same time, began to think about the development of the need to discuss the “pit” :
- Whether the video needs to be encoded properly, for example
H264
/AAC
、MPEG
/MP3
? - Encapsulation protocol
MP4
orM3U8
? - Do bit rates and frame rates need to adapt to the network?
- With a soft decoding
FFMPEG
orMediaCodec
? - Whether the video needs support
AES128
Encryption? - Do you want to add offline cache locally?
- Do you want to support disconnection reconnection?
- Whether to support the expansion of live broadcasting and advertising in the future?
Although the code can be written without considering the above parts, and there are some open source projects that provide “nanny-like” support, it is a test of the comprehensive ability of a development to continue the project when you encounter a pit, and how to avoid the pit reasonably within the project cycle.
This comprehensive ability naturally involves more than just code, but it takes time to develop and step into.
Yes, from my point of view, development is not only about writing code, and our competitiveness is not only about code. For example, the ability of business implementation is accumulated from long-term experience, such as:
- What will a work order go through from the initiation to the end of the process;
- What needs to be considered in the flow of a shopping order from origination to after-sales;
- What needs to be concerned about when a reservation system is concurrent;
- What kind of technology stack does a live broadcast system need to support?
What pitfalls do these businesses face in specific scenarios? Why is this business written this way? Even if you know that the design doesn’t make sense, how to organize your code to avoid the burden of frequent changes later on.
After all, there are millions of good code, and bad code is destroyed by ruthless modification under the high pressure of business.
So much nonsense, in fact, to express: As ordinary people, technology will not be our barrier under normal circumstances, because many jobs in the IT industry have changed from brain-intensive to physically intensive. 996 and 007 need physical strength, but also need a smooth mentality to stand firm. Industry experience can help us better conserve our energy to face the ups and downs of the workplace.
Fuck you! F: Yeah, I’ve been fishing for years
Therefore, I always have a suggestion: if conditions allow, try to choose one industry. Do not engage in education this year, catering next year, and the Internet of things the next year.
Perennial “crossover” may be just “head soldiers” wherever we go, the contacts in an industry are resources, we may not be good at communication, but we have always said that XXX circle is very small, or our ability is not particularly outstanding, but after working for a long time, we know more insiders.
After the age of 35, 10 years of ecommerce experience may be slightly more useful than 10 years of mobile development experience.
Of course, this belongs to the situation of standing up and saying that you don’t have waist pain, and the condition of permitting refers to the situation of little economic pressure, no matter what bullshit theory, living is the first element.
The last
Getting back to the theme, Android’s 2018 Jetpack announcement doesn’t really change that much now in 2020, Updates such as ViewPager2, CameraX, Motionlayout (and more recently Hilt, Paging 3, App Startup), In Android 10 and Android 11, privacy and Scoped Storage partitions are highlighted, which is probably a sign that Android development is becoming more mature and stable.
Therefore, Android now has a very mature development system, which also means that the development dividend brought by this system has faded. In general, it means that there are fewer job-hopping jobs.
As a non-technology leader, I will choose some other things to try to make breakthroughs, such as front-end, RN, Flutter and other technical fields.
Of course, everyone’s concept and choice may be different, maybe my way is not suitable for you, here just want to express: when you feel that you are in the “bottleneck” and anxious, or you can choose to toss from other directions.
In addition, friendship reminds, do not give yourself a plan, such as “how many more articles” or “how many books to read in a month”, set to complete as far as possible, otherwise because of the “self-inflicted sin” and increased anxiety is enough.
Finally, here mostly belong to a family, only for reference, is mainly a feeling, I hope to help you a little, so that the daily development can continue to feel at ease!