Everybody knows , Mobile development is not so hot this year , It's totally gone. The first two years Android Develop that hot momentum , At the same time ,AI The heat , A lot of words say Android That won't be possible . It's not just Android,iOS There are similar comments .
So how to treat this phenomenon ？
My answer is ：Android ok , It's just plain , Without the heat of the previous years .
How to treat an industry ？ There are two points ：
Is the industry dead ？
Do many companies offer jobs in this industry ？
Take Saipan for example , Saipan is dead , Because Saipan was completely Android and iOS Replaced by , And there's no company to offer Symbian a development position .
about Android, at present Android The sun is shining , I don't need to say more about its global share of mobile devices , Various on-board equipment 、 TV and so on Android System . Within a few years , There is no new platform to replace Android, therefore Android Will not die .
At home , Tencent or Alipay , Its mobile products have a huge impact on the whole company , Tencent's wechat 、 Alibaba's mobile Taobao 、 Alipay is a crucial asset. , Every company has Android End products , So there is no problem with the job demand .
From the above two aspects ,Android No decline , It's just that it's at its peak , It's hard to maintain the momentum of rapid development .
Android Don't worry about programmer unemployment , Not for years .
But it's not so easy to find a job these days , The reasons are as follows ：
because APP Entrepreneurship has passed , A lot of startups die , Led to Android Post reduction ;
Some companies don't need one Native Of APP, They just need to APP Embed a web page in ;
RN、Weex Yes Native The impact of concept
At this time , You need to improve your skills ,Android Senior engineers are still in short supply .
I am also numerous Android A person walking on the development road , I heard a lot from the great gods live, I also read a lot of books , I have also communicated with many predecessors , So share it here Android Develop books and knowledge that should be learned , Of course , It also includes some methods , I hope it will help more people who want to enter this industry .
as everyone knows , Now mobile development is not the most popular programmer profession , If you don't have any real kung fu , Only two or three months of training has been difficult to occupy a place in this industry . therefore , Want to have the real “ What a skill ” It will take quite a long time , My study plan is mainly for people who dare to spend time , Students who can stick to it , for instance ： Want to engage in Android Developed college students , On the job developers who want to advance , And, for personal reasons, want to move in other directions Android Development programmer .
How to do it can make beginners feel that programming is easy to learn , It's interesting. ？ Naturally, get some feedback that can see the result quickly , The program written by myself can run immediately and achieve some effects , It's very inspiring , So the first goal of this stage is to be able to actually write two programs by learning , And get quick feedback , So I recommend some relatively simple books .
Recommended books ：《Head First Java》,《Java From entry to mastery 》
《Head First Java》 Needless to say , Industry recognized Java A good introduction , If your programming base is very thin , You can learn quickly through this book Java. And for this 《Java From entry to mastery 》, Maybe a lot of people scoff , I think it's just teaching the surface , A shallow book that does not dig deep into principles , No need to look at it. , But the good thing about this book is , When you're completely untouched by programming , When I haven't been exposed to computer knowledge , This book can take you to the road quickly , It doesn't just teach how to use Java Language , It even has a detailed tutorial on how to build a development environment, which is a headache for the novice , therefore , It's for people just getting started , It's very friendly , If , You don't have any programming experience , But from Java An introduction to programming , This book is very good . In theory , Choose one of these two books to read .
Recommended books ：《 First line of code 》
If you want to start this stage , Please make sure that Java Try again after you've finished getting started . So how is it done ？ At least I have written it myself with the knowledge in the book Demo, And the test was successful , for example , The most basic Java knowledge , Include ： Inherit , Interface , character string , Inner class , An anonymous class , aggregate , Simple multithreading ,Socket Network communication and so on have had personal practice , The first stage is finished , You say reflex , Paradigms , enumeration , Multithreading , You can't understand such knowledge as annotations ？ It doesn't matter. , These are all the main objectives of the second stage .
As for the first line of code in this book , There's no need for me to talk nonsense , This has basically become... In China Android The standard textbook for introduction , The book covers Android Develop all aspects of knowledge , For example, how to build Android development environment ,Android The use of four major components ,Android The foundation of network communication , How to use open source library , How to use Git, How to store locally and so on . Just follow the book , Put every one of the books Demo All of them can do it by themselves , And after learning the book , I try to integrate all the knowledge I have learned to develop a small one that can play by myself app, The first big stage —— introduction , Even if it's over .
Advanced ： Keep climbing the technological peak
If you have completed the first stage , And I've come here with little confidence , Then I will say , The advanced stage may spoil you , Because the amount of learning in the advanced stage may be several times as much as that in the entry stage , Even on 10 times , however , Now that we have come here , Nature can't give up .
Recommended books ：《Java Programming idea 》,《Effective Java》
If you have finished reading Java Introduction book , Maybe I think ：“Java That's not it , It's easy to use , Don't tell me any theory , I just need to know how to use it ！” But actually , This stage may overturn your previous understanding of Java Most of our cognition , We will start from Java The advanced features and underlying principles of Java Knowledge tree adds branches and leaves .
《Java Programming idea 》 This book is close to Java The authority of teaching materials , It explains in detail Java Most of the details , Open the catalog , Maybe you think you have learned a lot of knowledge , But believe me , This book is worth reading from beginning to end , After reading will let you Java Great progress in internal skill , Up several levels . Of course , Reading this book is a great challenge to people's perseverance , Because this book is really a little obscure , I can't understand it often , I need to see it a few more times , And this book is close to 800 The length of the page （ Actually this book has more pages , Just the last GUI and Android Development doesn't matter much , Don't look ） It's quite a challenge to the endurance of readers .
《Effective Java》 yes Java Books that users must read （ No matter which direction you are ）, It's indexed by dozens of practical experience summaries , Let the reader master... From every detail Java Use skills , In order to write an efficient and usable Java Code , When you take these experiences to heart , Write code with experience , It will save you a lot of time and code to get enough programming experience .
Recommended books ：《Android Exploration of development Art 》,《Android Analysis and practice of source code design pattern 》
After learning 《 First line of code 》 after , You may use Android SDK Many of the libraries provided in to develop Android Applied , however , It's not enough to just use it , We have to Master their operation mechanism and principle , And we should also learn to customize some tools similar to the components provided by the system （ For example, custom View）, Learn these things , These two books are no better . Their explanation of this part of knowledge can be said to be complementary , These two books also need to be read with great effort , When these two books are thoroughly eaten by you ,1 To 3 Years of experience Android During the interview , You can basically take all and Android There's something about it .
If you've eaten through 《Java Programming idea 》 I'm sure you've already met 23 Several of the design patterns have been met , But maybe it's not special , It's time to Systematic learning 了 ,《Android Analysis and practice of source code design pattern 》 Not only about Android Source code , More elaborate on a variety of design patterns , Learning this book can be said to kill two birds with one stone , Can learn source code again , It can also learn and design patterns systematically .
When you first 3 After the completion of the phase , In fact, we can put this 5 Stage and stage 4 The phases are executed in parallel , Most of this knowledge is not in the books , Therefore, we need to combine the blog articles on the Internet and a lot of hands-on practice to learn . First , You are already in 《 First line of code 》 I've seen several open source libraries in , Now? , In order to develop efficiently Android application , We should learn the following kinds of mainstream Android The usage and principle of open source library , As shown below ：
1. Network request （Retrofit2）
2. Image loading （Glide／Fresco)
3. Event bus （EventBus/Otto）
4. Asynchronous operations （RxJava2)
5. Dependency injection （ButterKnife/Dagger2）
In parentheses are the representative works in this kind of open source library , I've listed two kinds of , But when you start learning, you just need to choose one to learn . Of course , The kinds of open source libraries are far less than these , And database operations , Picture selector , There are many kinds of big picture viewers , But these libraries don't use the same frequency as the above five , The above five open source libraries can be said to be in almost any app It's all used in , Learning them is useful for both the efficiency of your application development and the company interview .
The main way to learn the open source library is to find a reliable article on the Internet and simply read it , If you are good at English, you can also go directly to their project home page to read English documents ; Then write a simple example of them demo Or use it directly in the personal project you are developing , Use it later according to the code , Read the parsed article or document carefully , Then modify the code , Try some advanced usage . When you can recite the use process of these libraries in your mind with your eyes closed , You can find some in-depth analysis of the article or see their source code to learn their principles ; The principle of learning is very important , Especially in big company interviews , It's also important to see if you understand the principles of the libraries you use . Come here Android The development of basic theoretical knowledge has been roughly completed , This section is called the actual combat section , So you can't do without a lot of coding , As a beginning programming learner , It is necessary to guarantee a certain amount of code or reading of technical books every day , It's just a lot of practice , Solve a lot of problems in actual development , Technology can really improve rapidly .
It was said at the beginning ,Android Development is not a low threshold industry that any layman can enter with a few months of raids , What is really missing in the market is more professional developers , Or middle and senior engineers . As a non computer major non science students , It is the basic knowledge of computer that restricts people's development , The foundation is a wonderful thing , Many people think the foundation is boring and hard to learn, and they don't know how to use it , So I gave up the basic learning , But actually Foundation is like physical training , When you play football, you shoot and tackle , Head ball barb , It certainly looks very handsome , But in one 90 Minutes in the ball game , If there is no physical strength , Will be tired before the end of the game , The basis of computer is similar to the function of physical ability , it Provide you with a more professional perspective on programming and writing code , Let you unconsciously write efficient programs .
If you are an undergrad , Then you don't need to do more planning , It's enough to learn every subject of the school's professional courses well , If you can take part in some of these competitions in College , for example ACM, Whether it's good for your programming skills or your resume .
But if you're already at work , There must be no time to learn all the major courses in the university once and deeply , Please refer to my plan below , Grasp the key points in the foundation to learn .
in my opinion , and Android Develop the three most closely related basic courses ： computer network , Data structure and algorithm , operating system , The following will recommend the relevant learning books for each category .
The Internet ：《 The illustration HTTP》,《 The illustration TCP/IP》
These two books are very thin , The network knowledge will not be very deep , So learning is very fast , Other books on the Internet , for example 《HTTP Authoritative guide 》 Very thick , It's also very obscure , Although the HTTP It's very thorough , But it takes too long to read , It takes a lot of energy , So junior programmers in the job don't recommend such books . And these two books almost cover Android Most of the network knowledge used in the development , for example HTTPS,HTTP,TCP/IP Principle , As well as some basic network knowledge such as seven layer protocol and so on , It's enough to deal with the Internet part of the interview .
Data structure and algorithm ：《 Algorithm 4th》,《 The finger of the sword offer》
《 Algorithm 》 It's an introduction to data structure and algorithm , And with Java Language as an example , So if you don't have any algorithmic experience , This book is perfect for , It's easy to get started , And because I am familiar with the relevant language, I will not feel strange .
and 《 The sword points at Offer》 It's a must-have book for pre interview preparation , In an interview with a big company , Countless algorithmic problems come from this book , If you don't have the will to change jobs , This book can improve your thinking and prepare you for your future job hopping , If you are looking for a new job , That book is a necessary martial arts script .
I'm at this stage, too , Just started reading these two algorithm books .
operating system ：
Because I haven't reached this stage yet , So I don't know which books are more suitable . Listen to the friends in the group 《30 Days to build the operating system 》 It's a good book , But I haven't understood it myself , This part will be understood and supplemented in detail when I learn this part .
senior ： Expand the scope of knowledge and a large number of actual combat
Recommended books ：《 In depth understanding of Java virtual machine 》,《 Data structure and algorithm —Java Language description 》,Android/Linux Bottom level books
In an interview with a big company , No matter school recruitment or social recruitment , You can't help asking two or three questions Java The problem of virtual machine , for example Java Memory model ,gc Algorithm, etc. , therefore 《 In depth understanding of Java virtual machine 》 This book is mainly for learning the above problems , Of course , It's not just about meeting interviews , After reading the book , It's a complete understanding Java The underlying operating mechanism .
Students who have completed the algorithm in the sixth stage may find that ,《 Algorithm 4th》 It does not include algorithm knowledge such as dynamic programming , and 《 Data structure and algorithm —Java Language description 》 It's a good book to make up for this kind of knowledge , Of course , This book is not a must , If you have higher requirements for your algorithm foundation , Want to learn more about , Or I just want to change my career in this field , And I can make more efforts in this field when I have spare time , After reading the book , If you are not satisfied , You can try to challenge the legendary wordless heavenly script ——《 Introduction to algorithms 》.
As a basis for Linux The kernel's operating system ,Android Many of the operating mechanisms of Linux of , If you want to know more Android The bottom content , for example Native Layer operation mechanism ,Linux The principle of kernel and so on , You can choose some Android and Linux Look at the books at the bottom , As for the specific books , I haven't understood , If I further expand this aspect in the future （ Of course not ）, I'll come back and add .
In addition to these recommended books , We have other knowledge to pay attention to , for example Kotlin.Kotlin This year was officially Google justify , Be in Android The preferred language for developing applications , Of course , Market applications from Java towards Kotlin It will take quite a long time for a comprehensive transformation , therefore Kotlin I put the order of learning a little bit back , however , If you have completed all of the above stages , I don't know what to learn next , You should start learning at once Kotlin 了 .
In addition to the new language . A very important difference between a good developer and other developers is whether the code is low coupling , High reuse , This involves architectural patterns , The architecture pattern is Android The most common and popular one is MVP, So learn MVP It's also a very important thing .
Although it's listed below , But I think Kotlin and MVP The order of learning should be in-depth learning algorithms and Android/Linux Before the bottom floor , After all, deep algorithmic knowledge and too low-level system knowledge and application development are actually far away , Although learning them can improve the mind , But in some ways , Specific knowledge of these directions has been combined with Android Development is irrelevant , So these two parts are selected contents .
The books I listed above , except 《Head First Java》 I bought and read them myself （ The sixth stage and later books are not finished ）, But here I also want to recommend a lot of good books recommended by netizens , I haven't seen them , But they all have good reputation , Here I list them .
《Java Core technology volume ： volume 1》,《Java Core technology volume ： volume 2》
These two books are also Java Classic books on , One volume 1 It can be used as an introduction book , And volume 2 Advanced books of advanced knowledge . except 《Effective Java》 Can't be replaced by these two books , If you read these two books , Other basics I recommend Java Books are not necessary .
《Android From all over the world 》,《Android From all over the world —— Weapon of magic 》
These two books are domestic Android By Xu Yisheng, the great God , The first can be seen as and 《Android Exploration of development Art 》 A book that serves the same purpose , But in terms of content 《 Artistic exploration 》 Slightly simple , And it can't completely replace 《 Artistic exploration 》, So this book can be bought as a complementary book . And as for the second one 《 Weapon of magic 》 It's an irreplaceable book , If you want to find a book to learn development tools , This book is absolutely to your liking , After all, Android Development of learning ,gradle,Android Studio,Git The use of such tools can not be ignored .
To make a long story short , Success is reserved for those who are prepared . No matter what the interview is , Be well prepared , Pay attention to the etiquette and dress of the interview , Just show your enthusiasm and sincerity to the interviewer . Even if I didn't pass the test in the end , We should also sum up our experience , Be prepared for the next interview .
Here I've prepared some interview materials for you , Except for the interview questions , Also summed up the Internet companies Android Most of the questions and answers involved in the programmer interview , And organized into a document , And the advanced learning video of the system to share with you , Hope to help you review before the interview , And find a good job , It also saves time for people to search information on the Internet to learn .
After all, no matter what kind of interviewer you meet , The most important thing to go to an interview is your strength , As long as the strength is strong enough , The technology is strong enough , I'm not afraid that I won't get the interview offer！
Why some people are always better than you , It's because he's good and he's constantly trying to be better , And are you still satisfied with the status quo and secretly happy ！ I hope you can give me a little compliment and pay attention to me , In the future, we will update the technology of dry goods , Thank you for your support ！