在工作初期,工作主要是按照业务需求实现App页面的功能,按照设计师的设计稿实现页面的效果。
在实现的过程中,总是会被提如下的需求:
这个字能不能大点或者醒目点儿?
感觉颜色和设计稿有差别,能不能再调调?
怎么老是崩溃啊,行不行啊?
…
所以,工作过一、两年后你会发现,自己每天重复工作内容就是将找各种各样的组件、框架,拖拖拽拽,改改样式。在极端情况下出现了问题后(比如部分机型上崩溃,加载图片慢),也不知道该如何解决!都不好意思说自己是搞技术的。
造成这种局面的有两种原因:
1.所开发的App功能要求并不复杂,在性能上呢,也不需要极致的追求;
2.自己的意识不够,不知道如何从平凡的工作中提炼可优化的点,在向上提升方面也没有完整的规划。
从自身规划的角度讲,技术上的进阶分如下几个阶段:
1.做好业务需求的功能。这个是初级程序员就应该有的能力。
2.解决极端情况下的技术问题,比如性能优化,OOM等。稍有点规模的公司,肯定都会遇到这种问题,比如上文中说的App在部分机型上崩溃、页面加载不出来等。只是大部分程序员会觉得难以复现,或者是因为小概率事件而忽略了。在忽略这些问题的过程中,也放弃了进一步提升的可能性。还有一部分程序员是看到了这些问题,但一直不知道怎么解决,因为这些问题的产生基本都是要往底层框架去找原因,而平时只关注上层的业务逻辑代码,因而没有深入研究底层的原理,导致心有余而力不足。
3.在开发框架和效率上做文章。举个例子,很多程序员说自己的精力都在和产品的撕逼中浪费了,但有没有想过,能够通过技术手段将自己从繁杂的无技术含量的工作中解救出来?比如是否能够做到只编写一次代码,或者改个配置参数就能够做到在不同平台上运行。更高的要求是,能否将这些方案做成通用框架或产品。
上面列举的几个阶段,首先要从思考方式上去逼迫自己不断地逼迫自己,不要偷懒。其次,要想按照上述阶段发展,还需要落在实处,在具体的技术体系中不断的学习。
这里我推荐大家一个学习的参考路线,是我根据现在市场需求以及本身的技术薄弱区域所进行整理,大家可以进行参考学习。
内部调优
-
高效文件IO与网络IO
-
微信全面调优
-
内存与网络
-
贴近实战之问题优化
-
编程优化
高级音视频
-
C/C++基础
-
交叉编译
-
NDK进阶面试
-
增量更新与Gif渲染
-
H264视频编码
-
MediaCodec
-
视频编辑之剪影实战
-
FFmpeg万能播放器
-
直播推流
-
图形渲染与识别
-
Webrtc音视频
架构师必备
-
架构筑基技能
-
手淘组架构设计
-
开源架构手写实现
-
一线大厂架构核心进阶
鸿蒙系统
-
Ability组件
-
Ability组件
-
分布式任务
-
事件总线
-
鸿蒙线程
-
鸿蒙UI自定义控件
-
鸿蒙实战之新闻客户端
Kotlin技术
项目开发必备底层知识
-
Android虚拟机内存原理
-
Android10.0虚拟机源码分析
-
高级并发原理
-
线程实战
-
编译时高阶技术
-
JDK高级动态代理
-
高级数据结构与算法