灵魂拷问:Android 开发初期之后怎么提升?怎么才能叫精通?方向在哪
第三个阶段,横向扩展,到这个阶段并不是说比第二个阶段更加高级了, 而是对第二个阶段的一些补充,比如你是不是可以了解一下 web 开发,这样做 hybrid 开发的时候就会更顺手。是不是要了解一下这么火爆的 ReactNative&Weex 技术,甚至可以把他们的一些思想拿过来自己用,比如我司内部就有很多项目是用了 JSCore 和 CssLayout 来实现一些更轻量的动态化技术的。正如科学领域很多重大贡献都是在交叉学科领域出现的。技术上到了这个阶段甚至可以做到技术影响业务,技术驱动业务。
第二种 如何转型,迷茫型
如果你要转型,这里要注意的是,开发者的行业属性有两重计算机软件和所做软件所属行业。举个例子,猿题库的开发者,就有计算机软件和教育两个行业属性,而且,往往与你所做软件相关的行业属性更重要。
所谓职能,指的是某个职位所承担的任务作用和功能。比如软件开发工程师和研发经理,就是两种不同的职能(所以开发者升任研发经理,不是职位序列自然发展的结果,而是一种转型)。
我们把职能分为 5 类:管理、专业技术、自由职业、创业、投资。投资其实是一种综合性职能,它有管理、专业技术、创业几种特性。我们在这一节讨论转型分类时,暂不考虑它
第三种,如何提升学习效率
那么接下来,问题就变成了“如何提升自己在 Android 市场上的竞争力”。
1. 提升通用技术能力 The more things change, the more important it is to know the underlying principles.
半衰期长的技术要打好基础,也就是更加通用的技术。
一来通用技术如数据结构和算法、计算机网络、操作系统、计算机系统结构等,对技术的深层理解有很大的帮助,二来这类技术在不同的语言和技术方向上切换时是共通的。
2. 提升软实力软实力实际上也是一项通用的技能,甚至比第一条更加通用。
良好的沟通可以缩短开会的时长、节省相互之间的沟通成本,也使得团队合作更加愉快。不错的文档表达能力可以省去不少的重复沟通。
懂得规划自己的时间,上班时能更有条不紊地完成任务,下班也能高效地规划业余时间的学习。
懂得反思:为什么这个任务预计五小时能完成,却变成了三天;为什么这个需求要这样做,这么做是最合理的吗,还有更好的方式吗?
对问题、业务和自身的更多思考有助于更好地发挥和展现你的技术实力。
3. 选择一个细分领域不断深入个人认为一个较好的学习方式是先优先广度遍历,即粗略了解自己领域的各方面知识,然后优先深度遍历,即选择一个自己感兴趣或者觉得值得深入的方向深挖下去,等到这个方向学习研究得差不多了,再去深入下一个方向的技术知识。例如:
插件化技术、响应式编程、组件化框架、系统架构等进阶技术,承托着业务之下的基础框架,能够使得开发者在面对需求和功能变化的时候有更快的反应和更优雅的行动。
业务逻辑日渐成熟的形势下,用户体验越来越重要,突然的软件崩溃或是加载图标持续 5 秒,对于高质量应用都是阻碍。渲染速度、网络请求体验、I/O 优化、热修复技术、耗电优化,都是性能优化需要重视的点。
Android 现在细分的领域非常多,逆向安全、音视频、物联网、SDK 开发等等,可以在这些领域中选择一个并不断深入。若是从时代背景的角度考虑,当下处于信息时代,用户接收和喜爱信息传播的形式一路从文字、图片、音频、视频,到了如今的直播。
音视频会是一个不错的选择。其中会涉及到音视频编解码和音视频同步处理、特效处理、合成等等技术,对于 Android 底层源码的理解也十分有帮助。
福利
我这里有一套,系统学习资料,由于篇幅问题不展示太多,有需要的可以在我的【GitHub?】中领取,里面包含不同方向的自学编程路线、面试题集合/面经、及系列技术文章等,资源持续更新中…(欢迎免费领取,觉得不错记得,点个赞,支持一下!)
自行下载领取链接:【https://links.jianshu.com/go?to=https%3A%2F%2Fjq.qq.com%2F%3F_wv%3D1027%26k%3DBRZhpPkt】
![](https://upload-images.jianshu.io/upload_images/24334488-65e67bd
b5bc4219f.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
评论