“为什么你们开发这么慢?” 5页ppt讲透:硅谷10倍速工程效能提升,是怎么干的?...

点击“技术领导力”关注  每天早上8:30推送

作者| Mr.K   编辑| Emma

来源| 技术领导力(ID:jishulingdaoli)

上一篇我们聊了,《“为什么你们开发这么慢?” 3页ppt讲透:帕金森定律,低效正在杀死你的团队!》,这两天收到许多读者的反馈:说好的下篇怎么还没来?

老K近期推出了“K班出身”短视频号,通过短视频的方式讲技术、讲管理、讲职场人生,所以公众号更新慢了。感兴趣的读者,可以去抖音(ID:KBCS)、快手(ID:KBCS2020)围观老K,搜索K班出身关注,给老K三连击666,内容陆续更新中。

回到本文正题,我们先明确定义,工程效能是什么?工程效能是研发团队能够持续为用户产生有效价值的效率,包括有效性、效率、可持续性,三个方面

一提到工程效能,大家脑子里马上会浮现:持续构建、持续发布、开发流程改进等词汇,往往会忽略有效性。有效性,指的是软件产品给用户带来的价值。如果研发团队辛辛苦苦开发了一个系统,交付给用户,这个系统并没有很好的解决用户的实际问题,那么研发团队的工作就是无效的。所以,工程效能里首先要强调的就是,有效性,否则做得再快都是徒劳

老K的朋友约瑟夫,是海归技术大佬,在facebook工作过几年,跟他聊了聊fb在工程效能提升方面的实践,世界级互联网公司对工程效能提升是非常关注的,投入专门的技术团队进行流程优化、工具开发等方面的工作。

下面整理了硅谷公司的实践,结合老K带过上百人技术团队的经验,我们来聊一聊,如何提升开发团队的工程效能?

首先,要想提高工程效能,就必须深入到软件开发的整个过程当中,研究软件开发过程的本质,才能够从纷乱的表象中,找到根本性的原则。图9-6是软件开发过程闭环图。

软件开发的整个生命周期,包含6个部分:需求分析、软件设计、程序开发、测试、发布、运营。在运营的过程中发现新的需求,于是又从需求分析开始,不断迭代。

工程效能提升的关键,就是从以上6个环节入手,确保输入和输出的质量与速度,从每个节点的优化,再到整个软件研发流水线的优化。总结下来,工程效能的优化,可以从以下四个方面进行:

01

研发流程全链路优化提效

需求分析。关注需求价值的管理,建立需求价值的判定规则,根据公司当前的战略重点,对需求价值、项目价值进行评定,如:公司当前以拓展市场为主要目标,那么跟拓展市场相关的需求优先级就高一些,比如OA办公、培训系统等等,相比之下优先级就没那么高。

软件设计。在设计环节,重点提升设计交付物的简明,这里并不强调文档交付的格式和标准,需要根据每个团队自身的情况来制定,成熟度比较高的团队,经过了长时间磨合,产品设计人员只需要通过简单讲解,辅助一些流程图、页面要素定义、原型,就可以清楚的表达设计意图,开发人员和测试人员也能够很好的理解,这就达到了比较好的状态,不需要设计人员写几十页的设计文档。

程序开发。在给予一定工作自由度的同时,工程师需要遵守相关的规约,如编码规范、文档注释、自测用例的覆盖度等等,通过一个个项目来提升自己的职业素养。其次,工程师要快速解决问题,把这一点视为有效工作的标准,而不是去玩一些新技术,结果把代码质量和按时交付抛在一边,就本末倒置了。

测试。测试工作的重心放在测试用例的编写,对业务逻辑的梳理和学习,尽可能把手动测试的工作工具化,从接口到界面尽量用自动化测试工具,许多云测试工具是不错的选择,包括App兼容适配测试等等,都可以做到云端测试。

发布。随着虚拟化、云计算等技术的发展,发布技术和工具日益强大,许多公司在开源套件的基础上,都建立起了自己的CI、CD平台,实现DevOps研发、测试、发布、运维一体化。实现了A/B测试、灰度发布等极大提供效率的工程实践。

运营。发布结束并不意味着软件生命周期的结束,实际上万里长征才踏出第一步,产品经理、运营人员、项目经理等核心人员,必须关注软件交付后的运营情况,对产品经理来说,这个阶段是验证需求有效性非常重要的环节,然而许多公司的产品研发团队对运营环节重视度不够,久而久之就会跟业务方的想法产品隔阂,技术人员不能很好的理解业务需求,导致开发的有效性降低,所以产品研发团队必须有日常工作当中关注运营进展,提升业务敏感度。

02

团队工程效能提升

一群人如何走得更快、更远?

开发环境。开发环境包括,机器、IDE、版本管理工具等开发所需的软硬件设施。国内许多企业都越来越重视这些因素,比如给开发人员配备一台笔记本、一台式机、高分辨率的电脑屏幕、移动端开发用的手机,甚至符合人体工学的办公桌椅等等,这些都是非常好的实践,提升了员工办公体验的同时,也提升了工作效率。

许多公司也开始重视代码审查,为什么强调做代码审查呢?因为代码审查,一来能够及时发现代码中的问题,并且能够提升开发人员的编码能力,再者能够提高代码质量,促进代码规范的统一,同时也达到了知识共享的目的。代码审核包括增量审核、全量审核,根据员工的特点的阶段可以分别采用。

开发速度与代码质量。在日常开发工作当时,迭代的安排是比较紧凑的,以应对快速变化的市场,开发人员会做很多的“临时方案”,这些方案逐渐变成了技术债。因此,有计划的还“技术债”能够避免工程质量的坍塌,让系统更持久的运行。同时,开发人员要有意识做持续重构,通过工程再造,抽象、拆分等措施,把代码和架构持续优化。

左移、右移测试。所谓的左移测试、右移测试,是相对于常规测试而言的,从图9-6所示,测试的上一个环节是开发,下一个环节是发布,左移测试指的是在开发环节进行前置测试,包括开发的测试用例执行,代码中包含测试代码等等,指标包括:测试用例代码覆盖率、送测一次通过率等等。右移测试指的是,在发布环节的测试,即代码部署完成,连接线上数据,进行预发布测试,以及发布完成后在生产环境做冒烟测试、手工测试等等。

灰度、蓝绿、红黑发布。灰度发布,也叫金丝雀发布,是指在黑与白之间,能够平滑过渡的一种发布方式。在其上可以进行A/B testing,即让一部分用户继续用产品特性A,一部分用户开始用产品特性B,如果用户对B没有什么反对意见,那么逐步扩大范围,把所有用户都迁移到B上面来。金丝雀发布的由来,是因为以前旷工开矿下矿洞前,先会放一只金丝雀进去探是否有有毒气体,看金丝雀能否活下来,金丝雀发布由此得名。

蓝绿发布。蓝绿发布 (Blue Green Deployment) 是一种平滑过渡的发布模式。蓝绿发布的操作模式上,首先依赖于能够将全站应用划分为对等的 A、B 两个单元,A 先发布新产品代码并引入少许用户流量,B 继续运行老产品代码;如果新代码 A 经线上运行观察没有迹象表明有问题,或者用户行为对 A 中的变化没有特别的反馈,那么逐步引入更多用户流量,直至所有用户都访问新产品。

红黑发布。这是Netflix采用的部署手段,Netflix的主要基础设施是在AWS上,所以它利用AWS的特性,在部署新的版本时,通过AutoScaling Group用包含新版本应用的AMI的LaunchConfiguration创建新的服务器。测试不通过,找到问题原因后,直接干掉新生成的服务器以及Autoscaling Group就可以,测试通过,则将ELB指向新的服务器集群,然后销毁掉旧的服务器集群以及AutoScaling Group。红黑部署的好处是服务始终在线,同时采用不可变部署的方式,也不像蓝绿部署一样得保持冗余的服务始终在线。

云化提效。中小型软件公司尤其适合云化提效,把测试环境、生产环境部署在云端,通过第三方云平台的成熟套件,进行环境搭建,包括机房负载、安全防护、数据库搭建、服务器环境安装等等。如果按照传统的方式,需要专业的数据库工程师、运维工程师、网络工程师,采用云端的方式,这些都省了,只需要按月付费即可。云化还有一个好处,就是让应用能够实现高可伸缩性,这在过去,是一笔巨大的投入,现在云化就像自来水一样,按需付费,人人都可以使用。

03

个人工程效能提升

从原则、方法、工具,来武装每个工程师

个人高效能原则。个人工程效能提升,要关注一些基本的原则,比如当接收到一个需求的时候,不要着急动手编码,要对模块进行抽象、拆分,做适度的工程化处理,否则随着工程复杂度的增加,代码就会变得难以维护,灾难离你就不远了。在工程化的同时,要注重快速迭代原则,回归工程师的本质,工程师的本质就是用工程的方法,解决业务上的实际问题,快速搞定是工程师的基本要求。

番茄工作法。番茄工作法,是一种帮助你深度高效工作的方法。具体做法是,选择一个待完成的任务,将番茄时间设为25分钟,专注工作,中途不允许做任何与该任务无关的事,直到番茄时钟响起,然后在纸上画一个X短暂休息一下(5分钟就行),每4个番茄时段多休息一会儿。

番茄工作法极大地提高了工作的效率,还会有意想不到的成就感。市面上有许多软件、App都提供番茄钟的功能,可以尝试使用,以帮助你进一步提升工作效率。

04

硅谷10倍速工程效能提升的秘密

跟奈飞学习工程师文化

文化好比企业的DNA,它决定了企业如何思考,如何行动。因此,研究硅谷公司,就必须关注它的公司文化。老K研究过硅谷非常有名的「奈飞文化手册」,下面我们来聊一聊以奈飞文化为代表的,硅谷工程师文化。

奈飞(Netfilx)文化的核心是“自由”与“责任”。它认为现代企业的核心就是“人管人”,跟传统公司领导管下属的方式不同,这里的人管人,前后两个人是同一个人,自由与责任的核心就是要将权力还给员工,让员工在自由环境中充分展现自己的能力,履行自己的责任。我们从奈飞文化的8个原则当中,能够窥探硅谷工程师的文化精髓:

1)我们只招成年人。奈飞不招巨婴,成年人能够自己管理好自己。

2)要让每个人都理解公司业务。尽量告知员工他所处环境中的所有信息,然后由他来判断怎样行动是最合理的,而不是只告诉他你认为他需要的信息,让他严格按照指令来行事。

3)绝对坦诚,才能获得真正高效的反馈。奈飞的文化支柱之一,是要开诚布公。如果某个人对另一名同事有意见,最好的方式就是当面沟通。

4)只有事实才能捍卫观点。在奈飞,员工可以有自己的意见,也可以为自己的意见辩护,但意见要始终以事实为依据。

5)现在就开始组建你未来需要的团队。要面向未来,思考自己需要什么样的团队成员,而不是眼下缺什么样的人,才去找什么样的人。

6)员工与岗位的关系,不是匹配而是高度匹配。招聘人才的责任不在HR,而是在用人经理上,要做好招聘就要找到与岗位完美匹配的人,奈飞看一个人是否合适这个岗位,主要是看应聘者解决问题的方式。

7)按照员工带来的价值付薪。按照员工给公司带来的真正价值确定薪酬,同时,要给得起钱,要尽可能保证每个人都处在人力市场薪酬水平的顶端。

8)离开时要好好说再见。绩效评估应该不仅仅是年度,而应该是季度+年度。

以上是工程效能提升系列文章的下篇,感兴趣的朋友可以回看上篇《“为什么你们开发这么慢?” 3页ppt讲透:帕金森定律,低效正在杀死你的团队!》,如果觉得本文对您有帮助,请点在看分享朋友圈,感谢您的支持!

作者简介K,知名电商公司技术老K级人物。武做过CTO,文出过畅销书,带你一起洞见技术新时代。

 -END- 

关注“技术领导力”公众号

用故事讲技术,有趣,有料!

想加入社区,跟100位互联网大咖学习?

添加群助理Emma,注明“加群”

技术领导力社群


大家在看:

1.海归技术大佬,讲透“奈飞文化”8个原则!

2.张一鸣:为什么 BAT 挖不走我们的人才?

3.迷信中台是一种病,得治

4.为何职场中的岗位,都被不能胜任的人占据?

5.阿里中台架构15篇干货,100页ppt精选

6.雷军、张一鸣,价值千亿的6个思维模式

喜欢就点在看!

发布了157 篇原创文章 · 获赞 852 · 访问量 25万+

猜你喜欢

转载自blog.csdn.net/yellowzf3/article/details/104744424