有时候,我为我们的招聘团队感到遗憾。他们花了几年时间寻找摇滚明星开发者,才意识到他们本来应该寻找的开发者实际上是忍者。当他们终于找到忍者开发者居住的地方,并学会说忍者语言时,目标又再次转移。现在,他们需要狩猎的东西称为10倍工程师。但是10倍工程师究竟是什么?您如何识别一个?
从另一个方向来看,作为软件工程师,如果有那么多的雇主正在寻找10倍的工程师,而有些人愿意付给他们5倍甚至更多的薪水,我很自然地会尽我所能成为一名。但是究竟需要什么呢?是否有一套技能或某种“ 10倍标准”?
如果您问猎头公司10倍工程师的意思,他们可能会说“生产力! 10x是可以更快完成任务10倍的工程师。”这听起来不错,但是在支付5倍的薪水之前,我只想问两个简单的问题:
当我们说“快10倍”时,我们的基准线是什么?与谁比较?
对于我们团队执行的任何任务还是仅针对特定任务,速度快“十倍”吗?
现在,不要误会我的意思。我确实相信会有软件工程师能够对我们的产品,我们的团队以及最终对我们的业务产生巨大影响。在某些情况下,只有一个独特的才华横溢的工程师才能胜出。我已经看到了这种情况,我将在本文中分享两个示例。我也可以分享一下,作为一名工程经理带领一个相当大的团队(目前在WalkMe,我们有200多名工程师),我将大量的时间用于寻找有才华的工程师,并帮助他们做出最佳职业决策,加入我们的团队。但是我并不是在寻找能够将任何任务快十倍完成任务的工程师。我正在寻找另一种魔法。
我的看法是,有两种类型的10x工程师。我将解释我的理论,并更深入地研究这两种类型,包括与我一起工作的人和我领导的团队的具体示例。
首先,我要说两种10x类型都很有价值,在大多数工程组织中,您都需要它们。我还要声称,在两种类型的10x工程师中通常都可以找到几种个性属性和行为模式。但是就他们带来的卓越表现而言,它们彼此完全不同。
我想带您回到2012年。我曾在HP工作,领导研发小组UCMDB产品。该产品的主要价值支柱是为Ops人员提供他们正在操作的基础架构和应用程序拓扑的近乎实时的图像。
我们正在收集和存储的数据非常有价值,唯一的问题是,为了能够实际使用此数据,用户必须既是图论专家,又要对我们专有的数据模型有深入的了解。实际上,学习曲线是如此陡峭,以至于我们的大多数客户最多只能有3个人能够查询数据。所有其他潜在的数据使用者都必须“提交请求以获取UCMDB视图”,并等待这3位尊敬的管理员为他们做准备。这不是一种使用实时数据的非常有效的方法。
在简化查询语言的几次尝试失败后,加上一系列外观精美的UI更改,这些更改最终使更多的用户无法使用非常高级的应用程序,但不幸的是,我们决定采取不同的方向:
与其使用只能在强大的台式机上运行的笨重的旧应用程序(巨大的Java applet),我们不希望使用一种现代且轻巧的Web应用程序,该应用程序可以在包括平板电脑和智能手机在内的任何设备上运行。
我们希望获得一种基于自然语言搜索的简单查询创建体验,而不是基于有向图上的模式匹配的超复杂查询创建体验。
代替具有多个选项卡和庞大的结果表的老式查询结果使用界面,我们希望使用一种现代界面,该界面仅显示重要数据点,然后帮助用户导航和提取更多信息。
而不是我们缓慢的发布周期(每6个月一个版本),我们希望能够持续发布新功能并缩短反馈周期。
但是,你是怎么做的?我们的目标是向市场推出不仅是增量产品,而且是改变游戏规则的功能,使我们的产品与新的用例和新的角色相关。显然,要使这样的计划取得成功,我们不能使用我们在产品其他领域中使用的技术堆栈,体系结构和开发方法。我们需要完全不同的东西。
这是“宽而浅”的10倍工程师大放异彩的地方。在组建一个功能强大的团队之前,我们指定了构建新应用程序框架的任务。现在我知道这听起来有些奇怪。一个人如何成为这么多领域的专家?但是实际上,大约4周后,我们有了一个不错的应用程序框架,其中包含一个搜索引擎,可以将自然语言搜索词转换为现有的拓扑查询,其简单的后端公开了RESTful API,并且使用基本的Web前端(用GWT实施,这在当时是一件很重要的事情。所有这些都包裹着良好的CI / CD管道和测试框架(单元,组件,E2E),该框架基于适合于满足我们持续交付要求的思想和工具。
由10x工程师创建的此应用框架尚未投入生产。不应该这样。但这为整个功能团队提供了一个很好的起点。创造骨架的10倍工程师不仅会将其扔到团队的篱笆上。相反,他正在成为团队的一部分。在这一点上,他的任务是增加他选择的技术体系和架构上的不同团队成员,使他们成为专家和产品所有者。通常最好根据一对一团队成员的领域专业知识和技能来进行1:1会话,以达到最佳效果。
在UCMDB的情况下,这非常有效。团队迅速成长起来。他们包含了应用程序框架中使用的许多想法和指导,同时也改变了一些。对于某些团队成员而言,这是学习新技术的机会,而由一位经验丰富且才华横溢的工程师进行指导更为重要。经过由8名工程师组成的团队3个月的重点工作,我们向市场发布了一款名为UCMDB Browser的新产品。无论是从业务角度还是从工程角度来看,这都是巨大的成功。
在许多致力于成功产品和快速发展业务的工程团队中,我一直看到一种普遍的模式。这种模式很难解释,但是通常情况是,产品中曾经是您的优势之一,甚至是与竞争对手不同的核心特征的区域逐渐变得难以支持和维护。在很多情况下,要确定模式并承认这种情况对您来说并不容易,尤其是对于已经加入团队很长时间的人而言。但是,当您分析如何分配资源时,您会意识到团队中的很大一部分(开发人员,支持工程师,专业服务工程师)正在花费大部分时间来保持过去曾经是核心产品优势的力量。
在我目前在WalkMe的团队中,这种常见模式也发生在我们身上。我们平台的优势之一就是能够以高效,可靠的方式在托管应用程序(运行WalkMe的应用程序)中识别GUI元素。我们有一个可行的解决方案,该解决方案建于公司成立之初(约9年前),此后一直在不断扩展和改进。从某种意义上说,它能够(而且现在仍然是)比其他供应商(包括我们所有竞争对手)更好的解决方案,因为它能够识别更多的GUI元素,速度更快,并且资源消耗(CPU,内存)的开销很小。托管应用程序。
成功与规模有关。更多的客户,更多的数据,更多的用例。在GUI元素标识领域,增加复杂性的因素是支持新UI技术(单页面应用程序,Shadow DOM等)的要求以及支持高度个性化的应用程序的要求,其中向每个用户显示GUI根据她的角色,地理位置或只是她的用户偏好,可能会有所不同。我们的“查找元素”模块足够灵活,可以满足这些要求(通常通过添加特定UI技术和平台的插件),但是保持该机器运行所需的工作量正在逐渐(但不断)增加。
识别模式是很好的,但是对此做些真正的事情。我们了解到,我们需要构建下一代的GUI元素标识解决方案。主要目标是提高元素识别的准确性和鲁棒性。最重要的是,我们需要一种解决方案,该解决方案不仅可以识别单个UI元素,还可以理解上下文并发现应用程序中的用户流。就像在“宽而浅”的示例中一样,很明显,这并不是对现有产品的增量添加,而是对我们产品中的核心引擎之一的完全替代。
但是,当汽车全速行驶时,如何更换发动机?这是10倍的工程师可以发挥巨大作用的地方。实际上,在我们的案例中,是2个10倍的工程师。一切始于对一家名为DeepUI的小公司的战略收购。被收购的公司并没有专注于构建WalkMe所需的确切东西,但是创建DeepUI的2位工程师是使用机器学习进行GUI理解的顶级专家。
下一阶段是研究。您想分析现有解决方案,并了解其在不同用例下的性能。这是新解决方案的“最低要求”定义,可能需要几个月的时间,具体取决于系统的复杂性。只有这样,您才能设计新的解决方案并构建初始原型。与所有“替换引擎”项目一样,能够在生产环境和实际数据上与现有解决方案一起运行新解决方案具有巨大价值。这是验证新解决方案的优点和缺点的最佳方法。显然,这并不容易构建,但这正是您需要10倍工程师的原因。
然后是真正棘手的部分。您已经成功验证了新解决方案,现在您希望将其产品化并开始将客户从旧解决方案迁移到新解决方案。为此,您必须建立一个团队。突然,十倍的工程师需要从成为研究人员和开发人员转变为成为领导者。不仅是普通领导人,而且是超级领导人。在工程组织可能参与的所有类型的项目中,这是最复杂和风险最高的类型。更换产品的核心引擎?检查。引入新的范例(ML)?检查。对公司中多个团队(研发,支持,服务)的日常工作有影响吗?检查。
您如何进行切换并建立这样的团队?我不认为只有一种配方,找到能够做到这一点的人真的很少。运作良好的一件事是,将负责旧解决方案的团队中的人员提供给正在构建新解决方案的新团队。之所以运作良好,是因为这些人都是领域专家,而且他们了解新解决方案的巨大价值。他们也最清楚从旧解决方案迁移到新解决方案需要什么。最后,对于他们个人而言,这是与非常强大的工程师合作并学习新技术的机会。归根结底,这一切都与人和领导力有关。仅当他们设法组建一支能够确保新解决方案大规模生产的强大团队时,真正开始成为该项目的工程师才是10倍工程师。
在我们的案例中,它工作得非常好,现在我们有一个由30名工程师组成的团队在DeepUI上工作。该解决方案已投入生产,我们已经在努力利用其潜力开发其他用例。
尽管两种类型的10x工程师在做得特别出色方面有很大的不同,但是他们有一个共同点:两种类型的10x工程师对团队中的其他人都具有巨大的影响。他们的做法如下:
榜样:其他工程师都希望像他们一样。它从他们拥有的补偿方案开始,然后进一步发展到它们对正在制定的技术决策的影响。他们的存在证明了存在技术职业道路,这意味着作为一名优秀工程师,您不必成为经理就可以晋升。
标准:由于其他工程师希望像他们一样,他们将尝试复制自己的专业知识并遵守设定的技术标准。您会发现人们实际上是在跟随他们的领导,阅读他们的代码,使用他们所使用的相同设计模式,以相同的方式编写测试,记录并像他们一样展示他们的工作等。
指导:认识一个人需要一个。 10x工程师非常善于发现具有成长潜力和成为专家的初级工程师。只需轻轻一推,每个10x工程师就可以成为至少一个才华横溢的初级开发人员的出色导师。
现实中确实存在10倍的工程师。作为经理,寻找对您的团队有十倍影响的工程师需要时间和精力,但这是值得的投资。一个超级才华的工程师可以使整个团队变得更好10倍,这就像一个超级才华的组织者将平均加上一支橄榄球队一路夺冠一样。
作为工程师,有可能变成10倍。您可以采用“宽而浅”的路径,也可以采用“窄而深”的路径。在这两种情况下,这都是一段漫长的历程,因此请选择一个您真正喜欢的领域。最后但并非最不重要的一点是,请始终记住,这不仅是关于您拥有多少知识,还是作为开发人员的执行技能如何。 10倍是您领导其他工程师并使他们变得更好的能力。