资深开发者再进一步发展,主要有两个方向,即技术经理和技术专家,分别对应业务方向和技术方向。
技术经理需要有技术广度,除了Android技术过硬,对其他技术也要有所了解,同时商业思维和项目管理能力等也要很强,最重要的是具备团队建设能力,负责的团队能够以较高的速度、质量和满意度落实规划;技术专家需要有技术深度,对Android的某个领域有非常深入的理解,可以牵头完成复杂技术攻关,可以从领域的视角出发为产品提供发展建议。
在规模较大的企业内,技术专家一般分多个方向,常见的有音视频、跨平台、图像处理、性能优化、DevOps、端智能等。每个方向涉及的知识点都非常多,因为它们是与平台无关的通用技术,无论是Android、iOS,还是前端、后端,这些方向都会涉及到,所以开发者可以将其作为个人技术特长深入学习。
限于篇幅和笔者的个人经验,本书主要介绍的是Android性能技术专家需要掌握的相关知识,本节先介绍性能技术专家需要具备的能力。
性能技术专家一般指在性能优化相关领域有深入实践的开发者。除了业务手段,性能技术专家更要能从系统底层出发,根据系统运行机制,提出针对业务的优化思路和方法。
性能技术专家的判断标准如下。
● 具备独到的技术深度,在部门内技术影响力强。
● 能够发现产品存在的体验问题,提出系统的优化方案并取得收益。
● 能够根据技术领域的发展趋势,为产品提供优化方向。
● 不限于技术方向,可以从多维技术角度思考,为业务提供技术价值。
● 对团队的整体技术提升负责,在技术分享、技术规范、代码审查等方面有比较多的经验。
性能技术专家需要具备如下技术能力。
● 熟悉Android NDK开发,掌握常用的NDK的使用场景。
● 掌握Linux系统编程,能够从Linux系统角度思考优化方案。
● 熟悉Android虚拟机核心模块,能够根据问题快速了解具体技术细节。
● 熟悉Android启动、内存、卡顿、功耗、包大小等的底层原理,具备相关优化能力。
● 掌握Android ANR(Application Not Responding,应用无响应)、OOM(Out Of Memory,内存不足)、崩溃等稳定性问题的解决思路、方法和工具。
● 熟悉Android App构建过程,能够对编译速度进行优化。
性能技术专家一般是公司中性能方向的“权威”,能够结合Android系统的运行机制,为产品提供性能诊断、优化建议和分析工具。要达到这个阶段,开发者需要有全面的知识体系,同时在实践中通过解决大量的问题,沉淀分析经验和理论,从而对Android系统架构从下到上有深入的理解。
一般公司在招聘这个阶段的开发者时,在技术方面会考察得比较深入,可能会从Linux进程管理、内存管理、CPU(Central Processing Unit,中央处理器)调度,一路问到Android虚拟机的AOT(Ahead Of Time,预编译)、类加载、代码执行,然后问到上层的界面渲染、内存申请等细节。当然,不会要求面试者对所有细节都非常熟悉,只要能打通某个线,具备相关基础知识即可,这样再学习其他知识也很容易。
本书的主要目的,就是为读者提供成为Android性能技术专家的学习指引,解决普通App开发者不了解、不知道Linux和Android虚拟机的使用场景的问题。无论你现在做什么业务,性能优化都可以派上用场,相信读完本书,你可以对性能优化和成为性能技术专家有更深刻的认识。