Now there are more and more programmers , How should you plan your career path ? Where is the way out for programmers ?
A map shows the way out for the apes ：
The way out for programmers , There are the following suggestions ：
20-27 year ： Technology accumulation stage
Hypothetical undergraduate 22 Graduated at the age of , So before work 5 Year is the foundation stage for you . Here 5 Within a year , You have to accumulate enough code , Polish your technical strength , Become a leader in a technology segment .
28-35 year ： The stage of forming thinking methodology and knowledge system .
When you accumulate enough code , For example, more than 10 After 10000 lines of code , You should form your own thinking methodology and your own independent learning skills , Any new technology can quickly see the essence of technology in your eyes , Quickly absorb and become part of your knowledge system .
At this stage , You will find that there are very few new technologies and knowledge you don't know at all , New technology is just a good toy for you to play with in a few days , Learning is becoming easier and easier , Have more and more knowledge reserves .
You are gradually no longer satisfied with the exploration of pure technology , But think about more questions ： How to transform technology into productivity ; What technology can play the greatest value on what occasions ; How should the technical team be built ; In a company , How can I maximize my technical ability ?
At this stage , Accumulating skills is a piece of cake for you , What you need to hone more is your ability to think , Form their own thinking methods and knowledge system , This will be your weapon to help you throughout your life .
35 After years old ： Know yourself , The stage of realizing yourself .
Needless to say ,35 Your front line after the age of coding Ability must decline , You're definitely not as good as writing code 25 Year old programmer fast , efficient . But it doesn't matter , Because programming is the least important thing in your arsenal , Your experience , Your vision , Your architectural skills , Your management skills , Your ability to analyze and solve problems is far beyond the field of technology .
While young , Technology quickly accumulated !
* thorough Java generic paradigm （ The role and definition of generics + Wildcards and nesting + Generic upper and lower boundary +RxJava Usage analysis of generics in +Json Analytic generics and Bean Strong rotation principle and Practice ）
* Notes in simple terms （ Custom annotation + Use of annotations +Retrofit Annotation principle project practice + Custom annotation implementation ButternKnife Project architecture practice ）
* Concurrent programming （ Thread sharing and collaboration + Deep understanding of threads +CAS+ Blocking queue + Analysis on the bottom implementation of thread pool +AQS analysis +AsyncTask Principle analysis ）
* Data transmission and serialization （Serializable principle +Parcelable Interface principle analysis +Json）
* Java Virtual machine principle （ Garbage collector mechanism + Memory allocation strategy +Dalik virtual machine ）
* Reflection and class mechanism （ Basic probability and of reflection Class+ClassLoader Class loader + Actual combat of hot repair loader project ）
* Dynamic agent （ Basic principles of dynamic agent +Rxjava/Retrofit Application practice ）
* Efficient IO(Java IO system +File File operation +IO operation Dex File encryption +APK Reinforcement project practice )
* senior UI Promotion
* Framework Kernel parsing
* Android Component kernel
* Data persistence
<> Design ideas ：
* Design idea and code quality optimization （
* Program performance optimization
* Development efficiency optimization
<> framework :
* Thermal repair design
* Interpretation of plug-in framework
* Component framework design
* Picture loading frame
* Network access framework
* RXJava Design of responsive programming framework
* IOC framework design
* Android Architecture component Jetpack
The key road of life is to go by yourself , The matter of seeking knowledge , There are no terminal shortcuts . Only think deeply , Constantly summarize and reflect , Build your own knowledge system step by step , Is the quickest way .
however Android Advanced architecture learning is a long and arduous road , You can't rely on a moment of passion , It's not that you can learn it well after a few days and nights , We must form the habit of studying hard at ordinary times . therefore ： The most important thing is persistence !
When many people first came into contact with this industry or encountered a bottleneck period , There will always be some problems , For example, after learning for a period of time, I feel no sense of direction , I don't know where to start to learn , In this regard, I aim at Android programmer , I've been sorting it out for a while Android Information on the most important and popular learning directions , There are also self-taught programming routes in different directions , Interview question set / Facial meridian , And a series of technical articles, etc .
<> If necessary, you can scan the QR code below for self reference