CTO保持技术敏感的六个技巧 - Shopify


在我的工程生涯中,我做出了一个选择,离开了个人贡献者(IC)的轨道,转而担任技术领导职务。当时,我觉得自己已经在一些工程学科上取得了知识和技术深度,想尝试一下领导力。像很多人一样,我做出这样的选择是出于各种我认为很明显的原因:获得更多的权力、更多的声望、更多的报酬,以及在整个组织内更大的影响力。

但正如我和其他许多人在进入领导层后发现的那样,事情并不完全是这样的。

IC也有很大的影响力和权力--至少在我工作过的公司是这样。集成电路和技术领导的轨道往往是相互映衬的,一路向上。集成电路轨道通常包括工程师、高级工程师、职员工程师、高级职员工程师、首席工程师和杰出工程师。同时,工程经理、高级经理、董事、副总裁和首席技术官(CTO)通常在技术领导轨道上。我逐渐了解到,这两个轨道都有相同的声望和权力--有时,我实际上认为集成电路比我们这些担任领导职务的人更有权力。

由于我再次成为一个大型组织的首席技术官,跟上所有的事情并保持技术性是一个相当大的挑战。但是,我认为这是伟大的工程领导的当务之急,因为这有助于保持技术决策能力,并有助于建立整个组织的信任。

然而,当你到了领导层,人的问题会占用时间。你必须做绩效评估,你必须做一对一的工作,你必须做员工会议,你必须花时间建立组织内和组织间的联系。你必须写博客、电子邮件和信息。你必须发展职业阶梯,建立工程的工艺。事实是,如果你选择了领导岗位,你的技术水平就会下降--这是没有办法回避的现实。

这就是为什么选择进入领导层必须是有意的。你必须喜欢管理人。你不能一觉醒来就认为自己在领导岗位上的技术水平会比你在IC时更高--日程表上没有足够的时间来保持同样的技术深度和管理一个大型组织。

还需要考虑人事方面的动态。例如,你必须考虑到在你进入领导层之前是朋友和同行的人。尽管你很努力,但关系是不同的。你可能需要改变他们的职业,调动他们的角色,甚至把他们管理出去。作为一个领导者,意味着能够以一种专业的方式做到这一点,尊重他们的技术能力,并尊重他们作为人类。在我进入领导层之前,我想过这些情况--我问过那些向我咨询转入领导层的IC,问他们会如何处理这些情况。

但是,这才是我作为一个技术领导者真正要考虑的问题:我怎样才能获得团队中那些真正聪明的人的信任,他们的技术和细节远远超过我,以便领导他们?我曾经在大型复杂的项目中编码。我在全球多个国家配置了网络。我配置过很多复杂和高技术含量的系统。但是,我现在领导的团队不知道我的背景,也不知道我的技术深度。如果我保持一定的技术可信度,我的团队就会理解并尊重我,愿意遵循我想带领他们走向的战略、愿景和轨道。

我已经做出了自己的选择。同时,我想尽可能地成为一名技术性的CTO,既能帮助做出技术决策,又能在技术上对我的团队具有可信度。当然,我也需要平衡这种愿望和成为一个伟大的人的领导者所需的时间。这并不容易,但以下是我一路走来学会的几件事,以保持技术上的优势。

1. 做一个贪婪的读者
在任何时候,我的办公桌旁都有一摞书,还有许多打开的浏览器标签,上面有我想读的博客文章。如果你不喜欢阅读,CTO的工作将是一条艰难的道路。但如果你没有时间阅读,有一个黑客:以1.5-2倍的速度听播客。无论哪种方式,你都需要能够在会议之外消费数据,而且你必须学会快速吸收信息。对某件事情在组织中如何运作有疑问?去读代码。去阅读文档。我花了很多时间在Github上阅读。我阅读提交,阅读文档,查看测试结果,并查看我们是否在正确的时间发布了东西。你不仅在学习你需要学习的东西,你会看到整个团队的编码和文档模式,并能够分享你对最佳实践的想法。最重要的是,你将会在你的代码库中保持最新的最佳编码实践。

一个额外的提示:向你的同行询问你每个月应该阅读的一到两件事情。总有一些新的东西需要学习,有新的信息来源需要发现。

2. 把编码作为一种爱好
我不想打断你,但是当你爬上CTO的梯子时,你不会经常把新的代码推向生产,如果有的话。如果你的公司足够小,你可能会非常亲力亲为。但相信我,一个大公司不会希望CTO持续不断地把新代码推到生产中去。作为一个CTO,我可以修复bug并深入到repos中,但如果我定期向生产推送新的代码,对公司来说可能不是一个好日子。正如我在上面所说的,当你升到领导层时,你需要花时间处理人的问题,这就不允许你像你所希望的那样持续地在代码中。但作为一个领导者,你需要知道如何编码,并保持开发工具的最新状态。

在Shopify,我们转向了基于云的开发环境,我们称之为Spin的工具。那是什么意思?为了编写代码和进入Github repo,你打开一个终端,然后输入spin up shopify。这将在我们的云中提供一个实例,检查我们最大的仓库,并设置运行时权限。通过适当的Github令牌,我们连接到仓库,并让你的开发实例启动和运行。这大约需要30秒。你输入的下一个命令是spin code,它就会弹出VS Code(或你选择的代码编辑器),让你直接进入版本库,然后你就可以马上进行编码了。

作为一种爱好,我经常经历这个过程。我还使用我们基于云的环境,使自己了解我们团队正在使用的工具。我在那些不一定会出现在Shopify生产版本中的辅助项目上编码。作为一个技术领导者,你需要让编码成为你乐趣的一部分,成为你了解开发者工具集的一部分,成为你了解持续集成(CI)测试如何运行,持续部署(CD)如何运行,以及你如何推送到生产的一部分。你需要了解你的工程师所看到的开发环境,因为这能让你深入了解他们的日常工作,同时让你保持技术。


3. 参加黑客马拉松
我参加了Shopify内部和公司外部的黑客活动。我最近参加了一个名为Technovation的活动,它是由Shopify在北美地区赞助的。这是一个针对女孩和年轻女性(8-18岁)的项目,她们以团队的形式聚集在一起,建立解决现实世界问题的应用程序。今年,我报名参加了审查代码,并作为评委为项目打分。得分最高的项目将进入一系列全球季后赛,直到选出决赛选手和地区冠军。Technovation是一个伟大的项目,我喜欢支持世界各地对STEM教育感兴趣的女孩和年轻女性。

我们在Shopify内部做了多天的黑客活动,叫做Hack Days。我不经常动手写代码,但我加入了各种项目,并与团队合作,试图找出我们如何为我们的商家建立最好的产品和创新。我还参与审查几十个项目,评出顶级项目,并向整个组织的团队提供反馈。有了黑客日,我们都在一起,成为这个项目的一部分是另一个黑客(双关语),以保持技术和对未来创新的了解。

4. 良好的招聘
管理一个团队需要大量的时间。如果你让错误的人担任错误的角色,那么领导就需要更多的时间。作为一个领导者,你将不得不处理组织中的人事变动和领导空白。你可能很想迅速填补这些空缺,你可能想走捷径,因为招聘需要时间和精力。但是,你需要花时间去好好地招聘。当你招聘得好,并与你的团队有良好的一致性,那么你会发现,他们会专注于他们那部分组织的正确目标。

我是否每次都能正确招聘?没有。但是,我花时间用心去招聘。如果你雇错了,你的新员工可能不会专注于正确的技术,他们可能不会专注于正确的扩展,也可能不了解企业的优先事项。如果发生这种情况,你猜你没有在做什么?你不是在读博客或听播客。你没有在边上写代码或参加黑客马拉松。相反,你在做绩效评估,并与人力资源部门安排会议,以确保你给予适当的反馈。然而,如果他们的目标正确,那么你就不需要花时间去做这个目标--这意味着你可以花更多时间保持技术。

良好的招聘和保持技术的目标还有另一个好处--好的技术人员可以比你读到的东西更快教会你。当我招聘时,我寻找那些超级技术的人。例如,Shopify在WebAssembly上下了很大的赌注,WebAssembly是一种用于基于堆栈的虚拟机的二进制指令格式,所以我们聘请了那些精通该技术的工程师。我们也有几个Rails核心团队的成员和提交者在Shopify工作。当我需要了解这些技术(以及我们这里使用的其他数百种技术)的更多细节时,我可以阅读Slack频道,加入技术评论,审查技术项目简报,或者只是花几分钟时间与比我技术更强的人讨论这个话题,并迅速了解技术细节。你的团队中优秀的技术成员喜欢谈论他们的项目并分享技术细节。

5. 创建一个技术顾问团队
我发现拥有一个技术顾问团队是非常有用的。这是我作为首席技术官保持技术性的另一种方式--基本上是对技术主题进行有限的众包。虽然在内部招聘优秀人才并利用这些人是很有用的,但在技术发展方向上拥有更广泛的视角是非常宝贵的。

我有一个私人的Slack频道,里面有大约20个Shopify内部和外部的高级工程领导人。我使用这个频道来问问题,对我不知道的事情保持冷静,并获得特定行业的指导。这是一个我可以问任何问题的地方,并尝试快速掌握技术。在这个Slack频道中,我可能会问到我从我的团队那里听到的一项新技术,问到一项在行业中似乎很热门的即将到来的技术,或者有时问到一些非常具体的关于大规模使用某一特定技术的问题。这个非正式团队的参与规则非常简单--提出问题,提供帮助,并分享。

6. 清理错误和积压的工作
作为一个技术领导者,你还必须管理运营问题。停机、中断、错误和积压会扼杀你最好的计划。所有这些事情都会让你陷入运行事件的战术杂草中,通过补救行动项目,并让团队负责,以避免相同的运营问题重复发生。作为首席技术官,我试图确保各团队定期(至少每周)梳理他们的积压工作。我确保自己了解最新事件中的补救行动项目,并积极寻求未决问题的解决方案。我确保我推动的团队既能创新又不会被技术债务所困。

如果你驾驶的是一个技术团队,而且你正准备推出一个产品,你没有技术债务,那么你就可以专注于创新。但是,一旦你推出你的产品、新功能或服务,你就不可避免地会遇到运营问题。那么你需要思考,"我如何平衡运营问题和创新?" 如果你忽视了运营问题,它们将开始耗费越来越多的时间。你不再是一个技术领导者,你正在成为一个战术消防员。

领先于积压的错误和补救项目,然后为团队分配时间来处理创新和技术债务,这对于让你专注于成为一个伟大的技术领导者是绝对关键的。