不久以前,有一条 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 工程师”认为,编程远不止是写代码这么简单。
评论