程序员VS码农:我们不一样
要避免程序员变成码农,必须对编码保持热情,并持续学习;必须保持好奇心,乐于探求事物本质;必须对所做的工作及时总结,主动优化代码,让系统变得更加有机;必须主动尝试更好的开发方式、更先进的工具,来提升开发效率,并想办法避免重复性的工作;必须不断改进设计,将编程变成创造性的工作。只要通过这样逐步地积累经验和长时间锤炼,知识体系才能构建完备和丰富,才能避免沦落为码农。
几年前,我曾经重构过一个模块,从外部看模块的所在的系统,都是类似这样的,简洁而漂亮:
但从程序员编码实现的层面看,它实际上是这样的:
这个设计在最初的版本没有任何问题,使用继承扩展管理对象的接口能力,但仅仅过了两个版本,项目组PL说实在撑不下去了:增加一个接口,需要修改200多个地方,如果再过一个版本,估计要修改400多个地方了。
后来我把它改成这个样子,使用聚合消除了耦合:
从代码实现层面看,在功能刚开始开发时,这两个设计区别不是很大,但随着系统演进、越来越多的功能加入,继承关系带来的耦合会导致模块之间关系越来越复杂,牵一发而动全身,终究有一天哪怕只做很小的改动,也将成为压死骆驼的最后一根稻草。
这次重构的成果是代码量由43K减少到15K,扩展新的接口能力不再需要修改已有代码。我想,这或许就体现了码农和程序员的区别吧。
建立知识体系
1.Android高级架构师筑基技能
内容
- java泛型
- java注解
- 并发编程
- 数据传输与序列化
- java虚拟机原理
- 反射与类加载
- 高效IO
2.Android框架体系架构
内容
- 高级UI晋升
- Android组件内核
- 大型项目必备ipc
- 数据持久化
- framework内核解析
3.全方面性能调优
- 内容;
- 设计思想与代码质量优化
- 程序性能优化
- 开发效率优化
4.设计思想解读开源框架
内容
- 热修复设计
- 插件后框架解读
- 组件化框架设计
- 图片加载框架
- 网络访问框架设计
- rxjava响应式编程框架设计
- IOC架构设计
- Android组件架构jetpack
我认为
在上一家公司当过一段时间的Android面试官,发现很多“精通”Android的候选人简历上都会写使用过XX开源库并引以为傲,如果在面试的时候没有问到这些有的还会对我提出质疑。拜托,这就叫精通了?这真的很有挑战性么?
怎么样算一名优秀的程序员?我认为最基本的要求是有高效的产出。回到Android上,一名优秀或者题主说的精通Android的程序员也应如此,高效的产出高质量代码,迅速解决开发中存在的BUG,对于需求提出合理的解决方案,不间断的学习和分享。而精通的开端,就是从一个使用者,变成创造者。轮子谁都会滚,而造轮子的,才值得尊敬。
那怎么成为精通Android的开发者?看,写,思考,总结,交流,这条路没有捷径。我认为精通Android的开发者至少需要具有扎实的C++/Java基本功,微机,网络通信,数据结构和算法基础,熟悉Android的大部分组件,常用开源库,丰富的Debug,适配经验以及持续的学习能力。
一线互联网公司Android岗位职位对应薪资图谱
大多数3到5年的Android开发集中在中小公司居多,薪资水平在10k到15k之间。很多人已经习惯性满足了。因为大家都拿的差不多,想提升突破,升职加薪,找不到方向。找到方向也很难坚持
如果你属于这类人,那么我希望你认真看一下这些文章中的学习路线图。很多Android开发的朋友跟我反馈,里面很多技术平时用不到,没有动力去学。
如果你满足一直待在小厂,做一些初中级的增删改查工作。那确实没必要去按照大厂的标准学习提升。
对于真正想深入学习高级技术的小伙伴,可以关注我,,在我的个人主页介绍有免费学习地址!
附上我的【GitHub】大厂面试题,Android高级工程师学习进阶笔记不断更新。。。
《Android高级工程师学习进阶笔记》
网友评论