写点什么

什么是真正的 10x 工程师?

2019 年 9 月 15 日

什么是真正的10x工程师?

不久以前,有一条 Twitter 引起轰动,它谈及到初创团队应该招聘“10x 程序员”并列举出寻找的 11 个方法。



10x 程序员

初创人员,如果你曾遇到过这类稀有的工程师,吸纳他们。如果有一个 10x 程序员成为你的第一批少数工程师的一员,那么创业的成功概率会极大的增加。

问题是:怎么标识出 10x 程序员呢?

— Shekhar Kirani (@skirani) 2019年7月11日


有“10x 工程师”和怎样找到他们,这两者是不同的。针对这两点,我需要指出,评估开发人员的表现非常困难,但我相信的确有“10x 工程师”。也就是说, 这篇 Twitter 后面提到的评估准则几乎都没有实用性。


那么,什么是“10x 工程师”呢?


Kirani 在 Twitter 上没有确切给出定义。我们假定 10x 工程师的生产率是普通工程师的 10 倍。


在大家吐槽这个定义之前,我要澄清一下。


我把输出作为开发组或团队的输出来进行测量,而不是作为个人的输出。因此,我对“10x 工程师”的定义是: 想较于公司雇用的其他人,10x 工程师能让团队的输出增加 10 倍。


从 Twitter 上给出评估列表后,标识“10x 工程师”的方法发生了很大的变化。


我用来标识 "10x 工程师"的 11 个方法如下。


10x 工程师是优秀的沟通者


我弟弟和表弟在大学学计算科学。他们都问我,什么样的技能对开发人员来说最重要。我想他们是期望我能提及到算法或技术。我近年来对此的回答是“和他人一起工作的能力”。


有时候,我们会看到一个开发人员能独立完成原型或简单的应用程序。这和 Sekhar Kirani 的 Twitter 中的观点是一致的。他认为一个 10x 的开发人员可以在 3 天开发出一个原型。但他忽略了,从长远来看,这段代码会发展成大规模的应用程序,该编程人员需要向其他 n 个工程师进行代码解释。


不过,考虑到应用程序有不同的复杂度,我们很可能需要更多的编程人员来构建应用程序,而不是靠单打独斗。


问题的沟通、通过集成自己构建的 API 来教会别人怎么使用、或帮助别人解决困难,这些能力是至关重要的。而且,如果你能解决足够的棘手问题,就能使其他人的工作效率加倍,即使他们还在做着这些工作,你也成为了 2x 工程师。


10x 工程师是持续学习者


在我职业生涯中遇到的所有人中,我认为的“10x 工程师”都热爱编码。他们一直期待学习新事物,并探索用更好的方法来构建软件。


如 Ruby Rogues 所注意到的,Devchat.tv 的规模在很多方面都在扩大。我们有自己的团体,通过参加会议、写博客或播客而相互认识。我们彼此学习,并开始为该社群提供各项帮助。


如果你正在寻找“10x 工程师”,可以问他们已经学过什么,在业余时间都做些什么。大部分人会提及到一本书、视频课程、会议实录或感兴趣并花时间充电的播客系列。


这点和 Twitter 上的第 8 条一致:



译:10x 工程师总是超前于公司其他人在学习新的框架,语言。他们不惧任何新鲜事物。如果有全新的事物出现(如区块链),他们会在别人介入前,如饥似渴的学习,试验。— Shekhar Kirani (@skirani) 2019 年 7 月 11 日


10x 工程师的代码易懂


有头脑的软件开发人员意识到,其部分工作效率会在以后得到体现。他们知道其代码很可能会有变动,如需要添加新功能,或是条件变化引起问题,需要有不同的解决方案。


可维护的代码通常易懂。如果读完整个代码,能很快知道每件事在做什么,以及知道在哪里找到其实现,这样就能进行代码修改,并有信心是正确的位置做了正确的修改。


换而言之,有时候 10x 体现在,其他人在改写该代码时可以节省 1 天或两天,因为代码很好懂。在此之前,你的“10x 工程师”可能看起来只是个 8x 工程师。


这点和 Kirani 列表中的第 4 点基本是矛盾的:



译:10x 工程师对进入生产环节的每行代码都很了解。如果 QA 或支持部门人员提出问题,他们能确切知道问题在哪里,并在数小时或数天内解决该问题。 — Shekhar Kirani (@skirani) 2019 年 7 月 11 日


10x 工程师写测试代码


你听说过 explode?继续阅读……


如第三点阐明的,一个“10x 工程师”知道哪块代码需要修改。在小项目中,你可以在头脑中记住很多具体的实现细节。这样,如果持续在该代码基线中工作,你可以记住大部分的代码。


但是,一旦你的项目变得更大更复杂的时候,你开始假设系统的其他部分怎样进行工作。大多数时间,你能了解应用程序大体框架、记得你花费了很多时间所做的实现细节或最近进行的工作。然而,要验证关于代码所做的工作,以及在哪里被正确使用的假设,更简单的方法是:运行代码来确认。


而且,即使你可以记住所做过的任何工作,如果你有队友,他们不会知道你所做的每个细节,所以测试有助于缓解这个问题。


这和 Kirani 列出的第四点也是矛盾的。


10x 工程师善于使用 Google


我只遇到过一个对编程语言或框架有全方位的了解的人。James Edward Gray II 看起来知道所有 Ruby 边边角角的知识。很多次,当有人在播客中提到什么事的时候,James 就会含蓄的告诉他们,他们一起想搞定的已经内嵌在该语言中了。


其他我共事过或知道的“10x 工程师”,都很善于找寻答案。大多数时间,这是一个相互融合的过程,即知道在 Google 中敲入什么术语,然后能快速识别出栈溢出的 post、库或 github 的 repositories 来接近最后的答案。


他们了解很多解决问题的常用方法,不过这更像是熟能生巧。当需要解决用电问题时,你就会查看 Youtube 上的视频,而不像其他家庭修理工一样先打开插座盖子。


这点直接和 Kirani 的第 7 点矛盾



译:10x 工程师几乎不查看类或方法的帮助文档。他们记忆在心,并随时调出来使用。 他们写代码就像写英语一样简单。没有休息和停顿,只是不停的输入。— Shekhar Kirani (@skirani) 2019 年 7 月 11 日


10x 工程师善于抓住时机并利用它**你招聘“10x 工程师”的原因是他们在某方面擅长。而招聘 1x-3x 工程师则是因为他们具有成为 10x 工程师的潜质。


软件变得复杂,经常需要我们有不同类型的专家来构建应用程序。不管是有一个自定义后端的移动应用程序,还是一个依赖于数据和托管云服务的单页面应用程序,都需要不同的人才。


你会需要一个全才或全栈开发人员来让工作就绪。


你想要招聘的“10x 工程师”知道他/她所擅长解决的问题,并花时间提高技能,很快就可以识别出他们是否能胜任其工作。


很多“10x 工程师”在某个特定的框架、技术或技能集方面是专家。


这点和 Kirani 列出的第 5 点矛盾。



译:大部分 10x 工程师是全栈开发工程师。对于他们而言,代码就是代码,他们不关心它是前端、后端、API、数据库、无服务等等。我几乎没有见到过他们做 UI 工作。 — Shekhar Kirani (@skirani 2019 年 7 月 11 日


10x 工程师是很好的导师


离开队友的相互促进,没有工程师能达到 10x。当然,有 25 年编程经验的开发人员的工作效率可能是刚开始编程的人员的 10 倍。但是和编程人员平均水平相比,他们还算不上是 10x,除非他们使团队其他成员得到 4x 的提升。


人们会谈论这些孤独的天才编程人员,但每次我所看到的是,团队里有他们或和他们一起工作时,团队剩余的人员需要根据每个人的产出来对他们和成本进行补偿。换而言之,他们的产出是 10 倍,同时成本是团队其余人的 12 倍。


“10 倍”工程师意识到,给团队带来能力和提高团队士气会产生更好的工作环境,让团队总体输出更好。


这并不是说他们不会独自工作,而是说要意识到和团队其余成员之间的平衡带来的价值。


这点和 Kirani 的第 9 点矛盾:



译:10x 工程师不大擅长当导师,因为他们不会教别人怎么去做或怎样打包工作?他们通常会想“教别人或和别人讨论要花太长时间,我情愿自己来做” 。他们也不是很好的面试官。— Shekhar Kirani (@skirani) 2019 年 7 月 11 日


10x 工程师和公司的使命,愿景,价值和文化保持一致


这是否意味着不同的公司里,由不同的人担当组织中的“10x 工程师”?


是的!


大部分人在做内心信任的事情时,都积极向上,能做的更好。如果能轻松进入或退出自己或公司中其他人的工作流,他们也能工作的更好。


这会带来两个结论。


第一,认同公司及其原则和实践的人在这种环境下可以快速成长。他们在工作中,能激发出 2 倍的能力提升。


第二,不适应这种方式的人会用不恰当的方式打断别人的工作流。.


这并不是说第二种情况下的人所做的每件事都是错误的。它意味着如果他们找到一个更符合其本性的组织,可能会做的更好,这样对公司也会更好。


10x 工程师用业余时间编写代码


和我一起工作过的大部分开发人员都是顶级的工程师,他们写开源代码或在业余时间写试验代码。他们情不自禁的这样做。他们仍不住想试试新的东西,看看它们是怎样工作的。


和我一起工作过的,也有少部分人由于个人条件限制不能这样做,但他们希望能这样做。


他们富有激情,虽然大部分时间里,他们工作在一个或两个不那么重要的项目。你可以在 Github 查找这些项目,或者问问他们,在业余时间做什么。


对于这个问题,我经常会得到有趣的答案。


这点和 Twitter 上的第 8 点吻合。



译:10x 工程师总是超前于公司其他人在学习新的框架,语言。他们不惧任何新鲜事物。如果有全新的事物出现(如区块链),他们会在别人介入前,如饥似渴的学习,试验。— Shekhar Kirani (@skirani) 2019 年 7 月 20 日


10x 工程师喜欢和同水平工程师一起工作


和我一起工作过的顶尖工程师都是很棒的导师,不过他们也希望被同级别的人所推动。他们喜欢向与他们经验不同的人们学习。在很多情况下,他们会参加或在在会议上演讲,以此来拓展交往面。他们也会在用户群里和其他高级别工程师进行交往,聚会等。如果你想招聘一些“10x 工程师”,找一个让他们都向往的工作。然后问他们谁可能是要寻找的人。他们知道谁能提出商业问题的解决方案。


10x 工程师识别问题,提出方案


绝大部分开发人员能沉下心来写代码并完成工作。和我一起共事过的编程人员,对于公司和团队来说,最大的区别是有的人能意识到团队工作的方式、代码基线或公司的问题,并努力去缓解这些问题。


正是他们,强烈建议采纳重要的自动化工具,尝试新的组间交互技术,过程中使用后台工作方式来节省时间并实现更多功能。


“10x 工程师”认为,编程远不止是写代码这么简单。


2019 年 9 月 15 日 20:482084

评论

发布
暂无评论
发现更多内容

分布式柔性事务的TCC方案

古月木易

分布式

软件设计原则

superman

设计原则

东哥

极客大学架构师训练营

第二周作业

南宫煌

极客大学架构师训练营

江帅帅:精通 Spring Boot 系列 03

奈学教育

springboot

GitHub 热榜:适合初学者学习的 Prometheus 监控系统

JackTian

GitHub 运维 Prometheus 开源项目 监控系统

软件设计原则 - 第二周作业

孙志平

Centos6 内核升级

唯爱

架构师训练营 第2周作业

Lingjun

极客大学架构师训练营

架构师训练营 第 2 周总结

Lingjun

极客大学架构师训练营

分布式柔性事务的TCC方案

奈学教育

分布式

江帅帅:精通 Spring Boot 系列 03

古月木易

Spring Boot

架构师训练营-02作业

ashuai1106

架构师 极客大学架构师训练营 架构设计原则

程序员买买买,纸书半价,电子书55折,抢券叠加使用更划算

图灵社区

图灵教育 活动专区

centos7升级内核

唯爱

架构师训练营 week2

devfan

设计模式

「架构师训练营」第 2 周作业 - 设计原则

森林

「架构师训练营」第 2 周作业 - 总结

森林

第二周课程作业

Geek_a327d3

作业

江帅帅:精通 Spring Boot 系列 04

古月木易

Spring Boot

在野望中奔跑:镜头前"摆摊"的联想来酷总裁们

Geek_116789

依赖倒置原则联想

极客大学架构师训练营

架构师训练营-第二周命题作业

牛牛

极客大学架构师训练营 命题作业

程序设计原则

南宫煌

极客大学架构师训练营

江帅帅:精通 Spring Boot 系列 04

奈学教育

Spring Boot

产品周刊 | 第 19 期(20200614)

Herbert

产品 设计 产品经理 产品开发

架构师训练营第二周作业

东哥

极客大学架构师训练营

第二周作业

戴维斯

架构是训练营

构架师训练营-第二周总结

Dawn

极客大学架构师训练营

软件设计原则-第二周总结

孙志平

我写了10年博客,却被人说“不火”?我是这样怼回去的!

王磊

Java 程序人生 「Java 25周年」

什么是真正的10x工程师?-InfoQ