Android 高效开发之研发效能

在现在红海厮杀的移动互联网,快速试错变得愈来愈重要,敏捷开发也被愈来愈多的团队所推崇。有些时候为了效率咱们甚至愿意牺牲部分性能,而选择在合适的时间去偿还这些“债务”。咱们都但愿在保证质量的前提下,为本身的团队提速。

1、组织的研发效能

1.1 何为研发效能

在讨论如何优化组织研发效能以前,先思考一下什么是研发效能。前端

咱们日常开发的过程,是从产品的一个需求想法,转变为功能而且发布上线。这个过程会涉及产品、设计、开发、测试,更多的时候可能还会拉上前端、后台。后端

产品的交付涉及不少的流程和人员,虽然设计人员出图很快、咱们开发效率很高,但也并不能表明研发效能一样很高,研发效能是对整个产品最终交付的速度和质量负责。性能优化

研发效能的五个衡量标准:微信

对于客户端研发来讲,咱们是否是只要保证按时按质实现需求就能够了呢?有不少公司,尽管实行 “ 996 ” 甚至 “ 247 ” ,产品、开发和测试看起来的确都很忙了,可是交付速度和质量却仍然不使人满意:产品埋怨开发效率低、开发埋怨产品需求不明确、测试埋怨开发质量差、开发埋怨测试发现不了问题等。这在咱们平常开发中太常常出现了。网络

这是由于什么呢?对于研发效能这个话题,我观察了不少团队和项目,且根据我的的工做经验,主要有如下两点思考:架构

  • 提效是每一个人的职责。尽管在 BAT 这些大厂,会有专门的研发效能部门,可是效能的提高并非单单只依靠效能部门,或者认为是领导的事情,而是组织里面每个人都应该去思考的事情。例如天猫设立的效能目标是 “ 211 ”,也就是 2 周交付周期、1 周开发周期以及 1 小时发布时长。那团队中的每个人都应该为这一共同目标而努力,回顾在每一个发布迭代中遇到的问题以及改进的建议。
  • 提效不只限于写 Android 代码。尽管咱们是 Android 开发工程师,可是咱们的工做不该该局限在写 Android 代码上,关键仍是解决需求场景。还有需求流程上沟通讯任的优化。只要是对提高效能有帮助的,咱们均可以尝试去实践。在创建了这种总体统筹的思惟以后,将来咱们想转后端、前端,甚至是产品都会有很大的帮助。

参考 Google 的OKR绩效考核制度,Android 团队应该制定 “ 质量 ” “ 效能 ” 和 “ 影响力 ” 这三个目标。例如针对 “ 效能 ” 来讲,有的人抽离一个 UI 库或者动画库,有的人写一个监控工具,有的人提高编译速度,有的人写一个 Web 的值班页面,有的人优化需求评审的流程…框架

这样你们集思广益,一块儿思考、一块儿讨论,为达成组织的共同目标而努力。工具

1.2 应用交付的流程

前面从整个组织的角度,了解了研发效能的含义以及衡量它的五个标准。可能大部分开发人员仍是感受整个产品的交付流程相似产品、UI 设计这些环节是研发人员没法把控的。一个应用至少会通过开发、编译 CI、测试、灰度和发布这几个阶段。下面从效能的角度,分别看看每一个阶段须要关注什么问题。性能

  • 开发阶段。开发阶段解决的是如何用尽量短的时间,完成尽量多的需求,而且保证开发的质量,不至于后期过多的返工。项目的架构应该如何选择?例如应该采用原生开发,仍是 Web、React Native、Flutter 这样的跨平台方案。如何提高团队人员的能力以及工具和框架的成熟度?有哪些提高团队工做效率的技巧?
  • 编译、CI 阶段。编译 CI 阶段解决的是如何发现和优化开发阶段的一些编码问题,以及快速构建出最终产物。Google 的 Gradle、Facebook 的 Buck 为编译速度作了哪些努力?Flutter 的 Hot Reload 为何能够这么快?AspectJ、ASM、ReDex 这三种插桩方法的原理和差异是什么?
  • 测试阶段。测试阶段是为了发现交付过程的质量问题。测试的确不容易,自动化测试成本高,也不容易把控发布质量。那如何可让测试覆盖更多的场景,Monkey、性能测试、UI 测试应该怎么实践?看看大厂的伙伴是如何作到人人都是测试?
  • 灰度、发布阶段。灰度发布是为了验证产品的效果。发布并非把包丢出去就能够了,咱们须要对本身的产品负责。那如何准确、快速地评估产品数据?头条、快手是如何作到精准运营和 A/B 测试?若是遇到疑难的线上问题应该怎么解决?复杂多变的网络问题又应该怎样去定位和分析?

固然为了提高在这个过程的效率,咱们会用到一些颇有用的第三方工具,例如用于 CodeReview 的 Gerrit、持续集成的 Jenkins、代码审计的 Coverity 等。工具不只能够将大量人工操做变成自动化,也能够方便团队更好的协做。测试

项目管理、需求管理、代码托管、构建 / 部署、测试平台…都是咱们经常使用的工具,从需求发起到分支管理、代码 review,再到测试发布。在过去,这些工具都是各大公司研发效能部门多年的结晶,通常都不肯意对外提供。可是得益于云时代的到来,如今都愿意打包成商品供咱们使用。

固然每一个项目都会有本身特殊的状况,这些工具也不必定能够彻底符合咱们的须要,咱们能够根据本身的状况选择合适的服务,或者直接开发本身的工具。

2、我的的研发效率

我的做为整个组织的一部分,咱们效率的提高也会对组织有正向的做用。特别是对某些小团队或者独立开发者来讲,我的可能就表明了整个团队。关于我的效率的提高和时间的管理,有不少书籍专门在讲这个内容。下面从我看到的一些很差的现象,谈谈两个比较深的体会专一、方法。

2.1 专一

千万不要碰的东西之一,即是能得到短时间快感的软件。它们会在不知不觉中偷走你的时间,消磨你的意志力,摧毁你向上的勇气。

随着咱们接触到的信息愈来愈多,愈来愈多的人很难保持对事情的专一力。工做期间常常想着去刷一下抖音、头条、微信、王者荣耀,强行把时间打破成碎片。

跟产品开了一天的会,他的需求有了,你的代码呢?

可能也有一部分同窗他们不刷抖音和头条,可是在上班时间也会被各类邮件、钉钉、会议折磨得痛不欲生。针对这个问题,个人作法是天天上午和下午都会至少保留一个小时“目空一切”的时间,不看邮件、不看钉钉、不接会议。固然有的时候也是没法避免被老板当面拉回到“现实”。

常常看到团队里面的一些人也存在这种现象,最终表现多是这我的常常“996”,看起来很忙,可是产出并不高,并且我的成长也不明显。

天天咱们应该须要有一段时间真正的静下心来工做,并且每过一段时间也要从新审视一下本身的工做,有哪些地方作的不够好?有没有什么事情是本身或者团队的人正在反复而低效在作的,是否能够优化。

2.2 方法

关于方法,也是同窗们常常会出现的问题。

  • 作事的方法。曾经看到一些开发人员,很是喜欢用二分法来排查问题。当测试给他报 Bug 时,他会很是熟练的操做 Git 命令,花上一两个小时打出几十个验证包,不辞劳苦地尝试。固然二分法我也使用过,在毫无头绪的时候的确能够“死马当活马医”。可是咱们在使用这个“大杀器”以前,起码应该通过本身的思考,尝试正面去迎击 Bug 自己。
  • 提问的方法。在微信和 QQ 群里面,常常会看到有些同窗在群里问一个问题,可能 Google 一下就能够获得答案。而后他们在群里灌了一个小时水,最后仍是没有任何答案。事实上提问题是很是体现技术和职业素养的,咱们在提问题以前须要通过本身的思考和努力。

3、总结

“吾日三省吾身”,不管是组织的研发效能,仍是我的的工做效率,咱们都须要学会常常去回顾和思考,快速演进、快速迭代,争取将来作得更好。

须要更多相关的代码源码等等的能够加我群讨论哦 本专栏为那些想要进阶成为高级Android工程师所准备。 从初中级转向高级工程师须要从技术的广度,深度上都有必定的造诣。因此本专栏就主要为你们分享一些技术,技术原理等。 包含源码解析,自定义View,动画实现,架构分享等。 内容难度适中,篇幅精炼,天天只需花上十几分钟阅读便可。 你们能够跟我一块儿探讨,欢迎加群探讨,有flutter—底层开发-性能优化—移动架构—资深UI工程师 —NDK-人工智能相关专业人员和视频教学资料 。后续还有最新鸿蒙系统相关内容分享。群号:892872246(进群能够选取以下部分资料分享)
图片描述

相关文章
相关标签/搜索