前言
如今程序员越来越多,应该怎样规划自己的职业道路呢?程序员的出路在哪呢?
一张图道尽程序猿们的出路:
建议
对于程序员的工作出路,有以下几点建议:
20-27岁:技术积累阶段
假设本科22岁毕业,那么工作的前5年对你来说是打基础的阶段。在这5年时间里面,你要积累足够的代码量,打磨自己的技术实力,成为某一个技术细分领域的牛人。
28-35岁:形成思维方法论和知识体系的阶段。
当你积累足够的代码量,例如超过10万行代码以后,你应该形成了自己的思维方法论和自己独立的学习技巧,任何新的技术在你眼中都能迅速的看到技术的本质,快速吸收成为你的知识体系的一部分。
到了这个阶段,你会发现你所完全不了解的新技术新知识是非常少的,新技术对你来说也不过是几天时间就把玩的很好的玩具,学习越来越轻松,掌握的知识储备越来越多。
你开始逐渐的不再满足于纯技术领域的探索,而是思考更多的问题:如何将技术转化为生产力;什么技术在什么样的场合能够发挥最大的价值;技术团队应该怎样构建;在一家公司里面,我怎样才能将自己的技术能力最大化的发挥出来?
在这个阶段,积累技术对你来说简直是小菜一碟,你更需要磨练的是思考能力,形成自己的思维方法和知识体系,这将是你帮助你一生的武器。
35岁以后:了解自己,把自己变现的阶段。
毋须讳言的是,35岁以后你的一线coding能力一定是下降的,你写代码绝对不如25岁的程序员快,效率高。但是这不重要,因为编程只是你整个武器库当中相对最不重要的了,你的经验,你的视野,你的架构能力,你的管理能力,你分析和解决问题的能力已经远远不局限于技术这个领域。
趁年轻,技术赶紧积累起来!
JAVA:
- 深入Java泛型(泛型的作用与定义+通配符与嵌套+泛型上下边界+RxJava中泛型的使用分析+Json解析泛型与Bean强转原理实践)
- 注解深入浅出(自定义注解+注解的使用+Retrofit的注解原理项目实战+自定义注解实现ButternKnife项目架构实战)
- 并发编程(线程共享与协作+线程的深入理解+CAS+阻塞队列+线程池底层实现分析+AQS解析+AsyncTask原理解析)
- 数据传输与序列化(Serializable原理+Parcelable接口原理解析+Json)
- Java虚拟机原理(垃圾回收器机制+内存分配策略+Dalik虚拟机)
- 反射与类机制(反射的基本概率与Class+ClassLoader类加载器+热修复类加载器项目实战)
- 动态代理(动态代理基本原理+Rxjava/Retrofit应用实战)
- 高效IO(Java IO 体系+File文件操作+IO操作Dex文件加密+APK加固项目实战)
ANDROID:
- 高级UI晋升(自定义流式布局(ViewGroup)项目实战+灵动的锦鲤自定义View项目实战+今日头条字体渐变特效项目实战+自定义PhotoView事件分发项目实战+RecyclerView实现吸顶效果项目实战+自定义Banner高级项目实战+布局ViewGroup原理解析+Material Design设计的APP+webview交互架构项目实战)
- Framework内核解析(Binder+Handler消息机制+Dalvik VM进程系统+增量更新项目实战+插件化实战+深入理解WMS+PackageManager Service)
- Android组件化内核(Activity与调用栈+Fragment的管理与内核+Service内核原理+组件间的通信方案)
- 数据持久化(Android文件系统+轻量级kv持久化+嵌入式Sqlite数据库)
设计思路:
- 设计思想与代码质量优化(六大原则+设计模式+数据结构+算法)
- 程序性能优化(ANR问题解析+Crash监控方案+布局检测与优化+内存优化+屏幕适配)
- 开发效率优化(分布式版本控制系统Git+自动化构建系统Gradle)
架构:
- 热修复设计
- 插件化框架解读
- 组件化框架设计
- 图片加载框架
- 网络访问框架
- RXJava响应式编程框架设计
- IOC框架设计
- Android架构组件Jetpack
最后
小编想说当程序员容易,当一个优秀的程序员是需要不断学习的,从初级程序员到高级程序员,从初级架构师到资深架构师,或者走向管理,从技术经理到技术总监,每个阶段都需要掌握不同的能力。早早确定自己的职业方向,才能在工作和能力提升中甩开同龄人。
- 无论你现在水平怎么样一定要 持续学习 没有鸡汤,别人看起来的毫不费力,其实费了很大力,这四个字就是我的建议!!!!!!!!!
- 我希望每一个努力生活的IT工程师,都会得到自己想要的,因为我们很辛苦,我们应得的。
千里之行始于足下,愿你我共勉。
我这段时间还整理了Android最重要最热门的学习方向的资料,还有不同方向的自学编程路线、面试题集合/面经、及系列技术文章等。