高效研发:硅谷研发效能方法与实践
上QQ阅读APP看书,第一时间看更新

第二部分 个人高效研发实践

  • 第4章 精准打击目标:通过提高准确性来提高投入产出比
  • 第5章 唯快不破:如何利用速度提高个人研发效能
  • 第6章 不仅是当下的成功:持续地提高个人研发效能
  • 第7章 高效选用工具提高研发速度
  • 第8章 工程师常见工作任务的系统性工具优化
  • 第9章 高效Git基本操作
  • 第10章 实现代码提交的原子性的Git工作流
  • 第11章 每个开发人员都应该学一些Vim
  • 第12章 高效学习Vim的实用技巧
  • 第13章 高效命令行环境选择和设置
  • 第14章 研发场景的有效命令行工具
  • 第15章 工具的高效集成

程序员界有一个说法是“10x程序员”,也就是“10倍程序员”,意思是一个好的程序员,其工作效率可以达到普通程序员的10倍。这听起来似乎有些夸张,但是却是客观存在的真实情况。

由于软件研发具有高度灵活性,针对一个相同的任务,往往会有多种不同的解决方案可供选择,同时,每个解决方案又各自有不同的具体实现方法。这些不同的方案方法之间的效率差距就造成了程序员之间的效率差距。当要解决的问题比较简单、规模比较小的时候,这种效率差距还不太明显。而一旦问题变得复杂之后,这些不同方案方法在设计复杂度、实现难度、可调试性、可维护性等方面的差距就会显著拉开,从而造成研发人员之间的巨大效率差异。即使是在Facebook,在大部分开发人员的能力都比较接近的情况下,还是有一些特别突出的开发人员的水平可以达到平均水平的三四倍。

在本书的第二部分,我们对个人效能提升进行详细、深入的讨论,介绍如何提高个人效能,帮助研发人员向“10倍程序员”靠拢。

前面介绍过,按照系统的模块划分,研发效能可以分为研发流程优化、团队高效研发实践、个人高效研发实践以及管理和文化四个模块。之所以首先讨论个人高效研发实践,是因为个人效能不仅决定了研发个体的效率,也极大程度上决定了团队的效率。团队的研发工作由每一个研发人员完成,个人效能的高低自然左右了团队总体效能的高低,这一点显而易见。

然而现实中有一个奇怪的现象,很多公司在开展提效工作时,会大量关注流程优化、团队高效研发实践而忽视个人效能的部分。这种片面的提效方式虽然引入了先进的流程和方法,却经常在很大程度上限制了研发人员的创造性,伤害了大家的工作积极性,最终导致提效工作效果差强人意,还常常会对团队研发氛围形成长期的伤害。

出现这种情况的根本原因在于管理者使用传统的管理手段而忽视了软件研发的特殊性。研发流程优化和团队高效研发实践的确是提高研发效能的重要办法,我们在后面的章节也会详细讨论,然而这些实践一旦脱离了对个人效能的关注而单独存在时,就会出现上面提到的负面效果。

所以我们希望通过深入探讨个人效能,达到以下两个目的:

1)给研发人员提供个人高效研发实践的原则、思路,以及一些具体的方法和工具,以帮助个人实现技术和能力的成长;

2)给团队管理者的效能提升工作提供参考,以确保流程、管理等方面的实践能够促进而不是阻碍个人效能的提高。

为了能够系统、全面地帮助个人提高研发效能,我们将从研发效能的准确性、速度、可持续这三个要素入手进行思考。从我的经验来看,在那些10x程序员中,只有极少数是凭借天赋,绝大部分都是依靠后天的持续学习和提高,逐步成为高效能程序员的。他们的提高有迹可循,可以复制。事实上,几乎所有的个人高效研发实践都以研发效能三要素为基础。所以,下面我们就围绕这三个基本要素对个人研发效能进行解读,给出系统的提高思路和具体的提高方法。

首先,我们针对单个要素进行讨论。

  • 准确性:如何在定义任务、寻找解决方案,以及实现方案的过程中聚焦最重要的任务。
  • 速度:个人研发工作中哪些部分最适合提速,又有哪些具体方法。
  • 可持续:如何在精力管理、软件开发原则以及日常工作中有意识地确保自己有充足的精力完成眼前的工作,并且不断进步,以面对将来的挑战。

除了这三个单项讨论,我们还会对工具的高效选用进行专项讨论。这是因为选好和用好工具,能够从速度和可持续这两个方面有效地帮助我们提高个人研发效能。

同时,在每部分的讲述过程中,我们会从管理者视角进行思考,简单讨论如何通过建设团队环境和氛围来帮助团队成员提高个人效能,实现个人和团队的双赢。