写点什么

再谈 10x 程序员

  • 2017-06-19
  • 本文字数:2253 字

    阅读完需:约 7 分钟

在之前的一篇文章中,Redis 之父 Salvatore Sanfilippo 列出了 10x 程序员应该具备的 9 种素质。Salesforce 的首席工程师 Rudy Rigot 从另一个角度解读 10x 程序员。以下内容翻译自作者的博文。

最近,我一直在为一个矛盾的想法感到烦恼:我感觉某一天的工作效率高得离谱,但我也发现我花在工作上的时间并没有减少。而这又催生了另一个矛盾的想法:我看到一些成功的软件公司追捧神奇的 10x 程序员,同时也鼓励那些花很多时间在个人事情上从而避免被掏空的员工。

这些悖论让我感到相当疑惑,我绞尽脑汁,最后得出一个结论,这个结论很好地解释了这些看起来似乎是对立面的现象。

我之所以用“似乎”这个词,是因为我认为它们其实并不算是真正的对立面。简单地说,虽然我们使用相同的词汇描述程序员的效率,但其实我们讨论的是两种非常不同的效率。

  • 一方面,效率是指在最短的时间内交付最多的产出。这个可以通过代码量(提交次数、代码行数等)或与开发相关的工作量(文档页数、其他可交付的东西等)来衡量。工作时间越长就意味着更多的产出。
  • 另一方面,效率是指使用最短的时间和最少的投入产出最多的业务价值。这个可以通过程序员的工作能够为利益相关者(客户、同事等)带来多少真正的利益来衡量。我一直认为,程序员的职责不在于解决技术问题,而是通过技术手段解决业务问题。

之所以会出现混淆,是因为大多数工作的投入和产出在一定程度上是呈线性关系的。最简单的例子:如果你在工厂上班,那么你工作时间越长,你就会生产出越多的产品。更多的时间等于更多的价值。但在软件开发工作中,时间和价值不一定划等号,而且我敢说,有时候它们甚至是相互对立的。

时间和价值之间不能完全划等号,有很多原因。有时候一个问题把你卡住了,你抓狂了整整一个礼拜,感觉一事无成,直到最后找出问题的根源,并在 10 分钟内解决了问题。你可能花一个小时来自动化一个流程,虽然你因此搁置了其他的一些工作,却为其他团队每周节省了数个小时的时间。你可能突然冒出一个想法,为公司的结账通道引入了一个新的变化,从而提升转化率,哪怕是 1% 的转化率也可能意味着数百万的利润。

有时候,时间和价值是相互对立的(更多的工作时间意味着更少的价值产出),因为如果以“业务价值”KPI 为前提,那么你的产出将取决于很多难以掌控的未知因素。你可能花了一整天尝试解决某些问题,然后回家休息了一个晚上,第二天早上回来继续工作,居然在 5 分钟之内把问题解决了,或许你会因此认为充分的休息更为重要。

“10x 程序员”和“快速进展”

现在让我们回到“10x 程序员”的话题上来。作为一个“老油条”,我认为 10x 程序员只是神一般的存在,或许你们也是这么认为的。不过,如果是以业务价值作为 KPI,那么 10x 程序员是可能存在的。我可以告诉你们的是,现今有很少工程师能够真正给他们的公司带来业务价值。他们解决技术问题,只是因为它们很有趣或者很有挑战性,他们缺乏这方面的经验,而且不是以价值为驱动,所以他们容易跑偏,而他们的领导也不懂得如何更好地调整他们的工作优先级。如果是以价值作为 KPI,那么那些正在创造业务价值的工程师就有可能是 Nx 程序员!

如果是以这样的 KPI 为前提,那么“快速进展并突破”可以理解为“在最短的时间内提升创造业务价值的能力,不要太过满足于已经创造的价值,它们仍然有提升的空间”。如果“提升创造业务价值的能力”意味着减少工作量并获得充足的休息以便产出高能的价值,那么“快速进展并突破”也并不会给你带来任何压力或投入更多的工作时间。

行业现状

当然,并不是所有的公司都会同意我的观点。有些公司是一个极端,比如 Uber、Apple 等,他们希望顶级的工程师能够全力以赴,最大化他们的产出,以便达成他们想要的业务价值。而另一个极端,比如 Facebook、Salesforce 等,他们坚持认为工程师应该知道自己应该在什么时候放慢脚步,在必要的时候减少工作时间,以更聪明更周全的方式工作,因为他们相信他们的工程师因此能够在更少的时间里以更少的投入产出更多的价值。

当然,也有同时持有两种观点的公司,他们也很成功,所以我不认为它们哪个会比哪个更正确。我的观点的核心在于:

  • 后者并不是悖论,对于这些公司的员工来说,这样做也并非缺乏职业素养。因为软件工作的特殊性,在某些有利条件下产出高能价值是有可能的。
  • 作为软件行业的工程师,你有在这两种文化(以及它们的折中)中做出选择的权利,与其他行业的从业人员相比,我们真的算幸运的。

结论

或许你会问:“10x 程序员都会经常打盹吗”?实际上并不全是,可能是刚好让你给撞上了。不过我所看到的很多“业务价值 10x”的程序员反而经常这样,因为他们很清楚自己的极限,他们知道什么时候该做一些与工作无关的事情,在得到充分休息之后继续回来工作,然后产出高能的业务价值。他们当中有些人会选择打盹,长时间的打盹,而对于你来说,你需要找到适合你自己的方式(在适当的时候出去散步、通过玩游戏放空你的脑袋、和你的小孩一起玩……)。

那么接下来该怎么做?如果你不清楚该怎么在实际工作当中应用这些想法,可以参考这些必杀技:注意观察当你使用少量的代码解决了一个很重要的业务问题时都发生了什么;注意观察日常工作中是什么让你的产能倍增;不断地了解你自己的极限,改进你的健康状况和精神状态,提升你的效率;遵循你找到的这些模式。

查看英文原文 10x engineers take long naps


感谢郭蕾对本文的审校。

给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ @丁晓昀),微信(微信号: InfoQChina )关注我们。

2017-06-19 19:003584
用户头像

发布了 322 篇内容, 共 141.5 次阅读, 收获喜欢 146 次。

关注

评论 1 条评论

发布
用户头像
不要再卷了
2021-08-31 17:54
回复
没有更多了
发现更多内容

在线HTML压缩工具

入门小站

工具

DiDi Kafka-Manager安装和简单使用

云原生

kafka spring kafka manager

【研讨会报名截止最后一天】全程参会,还有惊喜奖品等你拿!

龙智—DevSecOps解决方案

CI/CD 在线研讨会

一文读懂并发与并行

潘大壮

并发编程 多线程 并行 并发’ #java

Hoo虎符研究院|区块链简报 20220328期

区块链前沿News

虎符 Hoo 虎符交易所

java高级用法之:在JNA中使用类型映射

程序那些事

Java 程序那些事 3月月更 JNA

【ELT.ZIP】OpenHarmony啃论文俱乐部——轻翻那些永垂不朽的诗篇

ELT.ZIP

OpenHarmony 数据压缩 ELT.ZIP

[Day2]-[回溯] N皇后问题

方勇(gopher)

LeetCode 动态规划 数据结构算法

性能测试中的LongAdder

FunTester

性能测试 FunTester

架构实战营6&微信业务架构&学生管理系统方案

唐诗宋词

React Router 6 (React路由) 最详细教程

蒋川

React react rout

阿里巴巴代码规约检测&Java 代码规约扫描

阿里云云效

阿里巴巴 阿里云 代码扫描 #java 代码规约检测

面试题笔记

Clarke

架构实战营-第6期 模块一课后作业

乐邦

「架构实战营」

个全中文注释的迷你Spring!

程序员阿杜

Java spring springboot

分布式事务详解:分段提交与最终一致性

分布式事务 可靠消息最终一致 TCC 构架 最终一致性

JavaScript 引擎是如何实现 async/await 的

CRMEB

什么是404页面?

源字节1号

404

在线常用crontab表达式大全验证解析

入门小站

工具

赋能创新,深开鸿重磅发布面向金融行业KaihongOS发行版

科技汇

微信业务架构图&学生管理系统架构设计

高山觅流水

架构实战营 「架构实战营」

企业如何实现在线客服功能?

小炮

在线客服

TDesign 更新周报(2022年3月第4周)

TDesign

直播预告|FeatureStore Meetup V2

星策开源社区

人工智能 大数据 开源 特征平台 MLOps

Petal Maps的美学钥匙,解锁AITO问界M5的硬核浪漫

脑极体

Linux之time命令

入门小站

Linux

如何建立高效的质量保障机制

老张

软件测试 质量保障 交付能力

解决报错:SSL certificate problem: certificate has expired

liuzhen007

git

智能家居开放平台技术建设新思路

Speedoooo

物联网 智慧社区 智慧家居 智能终端 应用平台

Video.js 使用教程 - 手把手教你基于 Vue 搭建 HTML 5 视频播放器

蒋川

Vue video.js

车联网数据安全新挑战的技术应对方案

Speedoooo

车联网 物联网 数据安全 容器安全

再谈10x程序员_语言 & 开发_Rudy Rigot_InfoQ精选文章