17611538698
webmaster@21cto.com

​尼克·科林蒂诺:如何有效的工程管理,平衡代码和团队?

领导力 0 190 2024-08-30 12:31:19

图片

尼克·科林蒂诺(Nick Cosentino)是一位首席软件工程经理,他拥有 12 年的团队管理经验和 14 年的软件开发专业经验。

本文中他为第一人称来讲述如何有效的管理工程,平衡代码与团队间的关系。

我是谁

各位好,我在制作软件工程教育和相关视频,重点介绍 C# 和 dotnet 作为编程示例。我还每周发布一份软件工程简报,根据我自己的职业生涯经验,为软件工程师分享切实可行的建议。

我热心于帮助软件工程师开启他们的职业生涯。我也喜欢分享我看到的在一家初创公司中行之有效的做法,这家初创公司从 8 名员工发展到全球数百名员工。

我尽量保持务实,因为我相信做事没有绝对正确的方法;只是根据具体情况有不同的方法,它们各有利弊。

我的职业生涯


我更接近“典型”的软件工程师。我从小就知道自己想从事计算机工作。我以优异成绩考入滑铁卢大学计算机工程专业,并因此获得了六份小公司实习机会,对公司产生了深远的影响。

2012 年我从学校毕业时,初创公司与小公司给了我一个绝佳的练习机会,让我可以发挥出自己的最佳水平。

在滑铁卢当地的一家小型数字取证公司(后来成为 Magnet Forensics)向我提出了一个令人兴奋的机会,让我加入他们的扩张型初创公司,这是我职业生涯的起点。

几个月后,我开始在这家初创公司管理其他工程师,但同时几乎每天都要编写 C# 代码——但我找到了自己喜欢做的事情。作为典型的工程经理,我很难在技术贡献和管理团队之间取得平衡,最终我创立了自己的 Dev Leader 品牌。

在 Magnet Forensics 任职期间,我参与开发了这家公司的大部分产品开发。在公司任职期间,我大部分时间都在各个团队之间奔波,为大家提供指导。

后来我转投大型科技公司,错过了他们的 IPO 以及随后的 20 亿美元私有化回购。

我在微软担任首席工程经理期间,有个机会到了Substrate项目工作,这是所有 Office365 服务使用的通用基础架构。它的存在是为了为服务提供一种标准化的方式来访问数据、进行身份验证、搜索等。Substrate 使服务所有者免于重新设计轮子,因此这些挑战可以作为一个平台以通用的方式解决。

在 Substrate Deployment 中,我管理了一些团队,负责为 Office 365 向全球数十万台机器部署数百种服务。最近,我转到了 Substrate 的路由和 DDOS 防护方面,并继续在这个有趣且充满挑战的环境中管理团队!

我领导多元化工程团队的方法是什么?


Magnet Forensics 的优秀人力资源主管很早就向我灌输了情境领导力、透明度和信任。我的理念是,作为一名工程经理,我的首要目标是让我的团队尽可能地发挥出最佳水平。

情境领导力至关重要,因为每个人都需要不同的策略来帮助他们成为最好的工程师。他们喜欢的反馈、职业目标、挑战、兴趣以及保持参与度的因素因人而异。虽然我没有遵循具体的框架,但我会尝试与每个人合作,了解他们独特的情况。之后,我会将我的管理和领导理念融入这些关系中,这样一切都从个人开始。我坚信,花时间了解你的团队对于成为一名有效的领导者至关重要。

我也坚信要尽可能保持透明。仍然有一些信息会被过滤,因为作为领导者,我们仍然有责任不让团队被可能分散注意力的信息淹没。不过,我会与领导层和管理同事合作,确保协调一致,为团队带来这种透明度。

最后,最重要的方面之一是信任。我通过承担责任并贯彻我的行动来与我的团队建立信任。我向我的团队成员表明我会帮助他们成长和成功,他们对我变得透明。这是一个积极的反馈循环,但需要情境领导力和透明度。

这些方法帮助我创建了一种团队环境,在那里,人们有心理安全感、有可以失败的安全场所,并且每个人都能在职业发展中感受到被重视和支持。

作为工程经理,我面临的最大挑战是什么?


最初,最大的挑战是平衡个人贡献和帮助团队工程师提升水平。我认为这是最难解决的问题之一,因为我们通常都是从高绩效的个人贡献者开始的,而我们衡量成功的标准就是我们的影响力。你需要意识到,通过专注于你的团队,你可以产生更大的整体影响力——这是一种真正的乘数效应。

我目前面临的最大挑战之一是平衡,但情况有所不同。我需要平衡和协调业务重点与团队成员的技能、兴趣和成长机会。并不是每天都能完美地协调这些,但确实需要定期沟通和对团队进行投资,以尝试优化这一点。

回到情境领导力,我试图为我的团队目前所处的位置以及他们在参与度、职业发展等方面的发展方向构建框架。当我考虑业务优先级时,我会考虑截止日期和时间框架,看看我们是否可以放慢脚步,因为这是一个员工学习或参与的机会。也许这意味着让其他人在某个领域拥有技能,以保持团队的连续性,或者提供一个在更大的项目上练习跨团队工作的机会,作为成长的机会。

其他时候,我们的时间安排非常紧凑,而完成任务至关重要。这时我会更多地依靠技能和经验来尽可能降低风险。当然,我们希望避免这种情况反复发生,而通过提高整个团队的技能并为他们提供成长机会,最终情况会变得更好。

最终,如果我们对团队成员进行投资并确保他们参与其中,他们将为业务的高影响力领域提供出色的成果。

未来五到十年工程经理的角色将如何演变?


这对我来说更像是一种希望,因为我觉得现在这种趋势已经出现了一段时间:工程经理是以人为本的角色。

从历史上看,许多公司都会提拔技术非常出色的个人贡献者担任管理职位。就好像对他们来说,“下一个级别”就是现在接管一个团队并管理其他人。

我的想法,这种思维过程是,如果你在某个领域表现出了卓越的技术,那么你就应该能够管理该领域的人员。

其实这是一种有缺陷的理念。首先这种模式优先考虑工程经理对技术方面的关注。相反地,我们应该寻找的是:曾经担任过优秀团队领导,或者对与人合作有浓厚兴趣的人才是我们前进的方向。

当然,也有一些公司更需要管理人员做出一些技术贡献。但我相信,共同的重点是“以人为本”。应该让那些喜欢与人打交道的人担任这些职位,我希望这种趋势能够持续下去。

图片


对那些渴望担任管理职务工程师的建议


这里我最大的建议是,作为一名技术个人贡献者,要明白软件工程管理是极其困难的——而且这个角色本身在期望方面,不同公司之间会有很大的差异。

总体而言,工程经理是一个非常以人为本的角色。如果你不喜欢花大量时间与人打交道、投入精力去了解他们、建立深厚的信任关系等……那么管理将面临一个严峻的考验。

如果您与管理角色相关,请关注非正式领导的机会。这可能是指导更多初级工程师,帮助我们的同事,努力成为团队领导……在不放弃技术关注的同时,更多地帮助他人,是证明自己正在为这样的角色做准备的好方法。

工程经理如何才能最好地支持其团队的专业和个人成长?


这绝对是情境领导力发挥作用的地方!我强烈建议每位工程经理每周抽出时间与团队成员一对一聊天。但这些一对一的重点才是最重要的!

我的理念是,一对一会议的议程应该由员工主导,而不是由经理决定。换句话说,这是一场让员工受益的会议,而不是为经理的利益服务的会议。经理可以根据需要联系员工,以获得他们需要的信息和更新,而无需进行一对一会议。

在一对一的谈话中,管理者应该为员工创造一个开放的空间,让他们讨论心中的想法。这可以通过在工作关系的早期建立信任、对员工谈论的内容表现出真正的兴趣以及表现出责任感来实现。你不要只是等待机会回应而不积极倾听。我发现,如果你表明你真正关心他们和他们的挑战,并致力于他们的职业发展,员工可以很快建立信任关系。

由于许多工程师在一对一会议中经常会诉诸于状态更新,因此请尝试引导他们分享影响,而不是分享细节。如果您最近没有进行过职业对话,请在即将到来的一对一会议上,建议您抽出时间讨论职业发展的协调性。

协调对于团队成员的职业发展至关重要。确保您的团队成员清楚地了解他们的进步情况、他们需要改进的领域以及他们最好的成长领域。这有助于减少晋升和奖励期间的意外,并让您和员工对他们成长中必不可少的东西有一个共同的基础。

您可以使用的一种工具是评估标准,根据贵公司的文化和所在组织,评估标准可能采用多种不同的形式。评估标准以矩阵形式组织了特征和特性,并提供了不同职业水平的预期行为示例。

我非常喜欢与员工进行对话,告诉他们我观察到的情况,让他们表达自己的感受,并就需要重点关注的重点领域达成一致。这有助于表明,作为一名经理,我的目标不是阻碍他们,而是帮助他们在职业生涯中取得进步。

可用于 Rubric 的级别和数据点的示例

图片


微软的工程师文化


微软非常重视多样性和包容性,这将来自不同背景、经历和观点的人们聚集在一起。这对于创新至关重要。多样性不仅仅是贴在海报上并发布在网上的东西——各个级别的领导都会讨论它。它甚至是我们绩效评估流程的一部分!

没有责备的工程师文化为突破界限提供了机会,人们还会听到 Satya 讨论“成长心态”。创建一个可以安全失败的环境有助于心理安全,再加上成长心态,鼓励工程师走出舒适区。

微软每年都会举办很多次“修复、破解、学习”周,在此期间,强烈鼓励工程团队研究标准交付成果之外的其他内容。这可能包括一起开发新原型或学习您一直想要的新技能或者技术堆栈。

作为工程经理,我们要了解员工的成长轨迹。无论是技术领域的成长还是其他领域的成长,我们都必须协调一致,为员工的成功做好准备。

微软优先采取哪些实践来确保高质量的软件开发?


我想强调我的团队中的三件重要的事情:无可指责的事后审查文化、安全的部署实践和一个微软观点。

在开发软件时,问题总是会出现,尤其是在实时服务中——我们只是凡人。

而且 Substrate 的事后审查文化非常棒,因为它是无指责的,所有团队都可以从回顾过程中受益。标准非常高,以确保修复项目对 Substrate 有益,并且没有人在其中受到指责。

当事件达到严重程度(对我们来说是 0 级和 1 级)时,团队必须完成导致缓解的事件时间表。他们还进行“ 5 个为什么”分析,以帮助找出事件的根本原因,这有助于说明这不仅仅是一个人做错事的结果。团队与合作伙伴团队合作解决这些问题的修复项目,然后在论坛上与其他团队分享经验并征求反馈。

安全的部署实践也有助于确保质量标准保持在较高水平。

Substrate 内部的部署团队确保变更逐步推出,以便监视器和探测器可以使用 Substrate 特有的技术识别任何回归。多个平台团队为服务所有者和其他团队所有者启用了这项技术,以确保安全变更。如果根据团队可以配置的监视器检测到错误信号,我们应该能够比前进更快地回滚,以纠正相关问题。

我们还鼓励团队在安全部署实践的基础上使用测试技术。我们使用更多的 Microsoft 技术进行测试,通常是配置更改,而安全部署通常更多地涉及二进制和代码更改。不过,概念是相似的,团队将在内部测试容量内较小的影响区域内启动测试。当他们验证了更改,并且监控技术正常运行时,他们可以将测试扩展到更广泛的容量范围。这有助于确保他们能够在问题发生时立即意识到问题,并通过禁用测试尽快关闭有问题的路径。

如果发生服务中断,我们将回顾事后审查流程。

最后,我想提一下“一个微软”理念,因为它至关重要。微软是一家大公司,类似计划在公司不同领域启动的可能性无疑大于零。因此,我们始终努力尝试在合理的技术上进行融合,以便我们能够将资源集中在一起,而不是并行工作。这种理念帮助我们思考在技术和计划上进行合作,因为这是为了微软的更大利益,而不仅仅是我们团队的本地优先事项。

图片


2014 年,萨蒂亚·纳德拉 (Satya Nadella) 出任首席执行官时,提出了“一个微软”的理念。


我对软件工程领域的哪些新兴趋势最兴奋?


可能就像现在大多数人一样,那就是:人工智能!许多人对人工智能对他们在软件工程中的角色意味着什么感到紧张,尤其是担心他们可能会被取代或被淘汰。

然而,人工智能就像任何其他具有重大影响的工具一样。它将取代我们部分工作并增强不同的部分。

但最终,它应该使我们在应对更大挑战时总体上更加有效率。

微软研发的独特优势在于,研发团队几乎所有的工具都内置了一些 Copilot AI 技术。比如我喜欢用 Copilot 做会议总结。我可以让 Copilot 在通话中帮我找到我没有记下来的重要内容。

当会议结束后,我可以与负责人一起获得一份行动项目清单,这样我就可以在会议上继续出席,而不必手忙脚乱地做笔记。

我们的团队在编写代码时会擅用人工智能,并构建工具和基础设施来帮助调试和排除现场故障。许多团队都有关于如何排除故障的记录,但识别场景并找到有用的文档可能具有挑战性;人工智能在这里可以提供很大的帮助。

我认为利用人工智能更好地分析趋势,这将成为团队能力的基础。

数据如此之多;作为软件工程师,如果你没有将数据用于特定目标,数据可能会很嘈杂。然而,我就很好奇人工智能是否能帮助我们发现数据集之间有趣的相关性,而这些相关性在我们看来可能像是噪音。即使在这个例子中,人工智能也有可能取代寻找趋势的工作,一旦软件工程师确定了趋势,我们就可以把注意力集中在有效地推动行动上。

随着大模型以及其他人工智能技术的发展,未来几年软件工程师的效率将大幅提高,这真是令人难以置信啊。

我感到兴奋,而不是恐惧。

图片

Microsoft Teams 会议中的 Copilot


如何在满足工作职责的同时,保持工作与生活的平衡?


近年来,我不得不优先考虑平衡这一点,因为我以前在这方面做得很糟糕。

在加入微软之前,我在一家初创公司工作了 8 年。在那里,没有人强迫我长时间工作,但我经常每周工作 60-80 小时,因为我喜欢工作,而且总是有工作。我多次收到反馈,说这开始给人一种“工作狂”的印象,即其他人认为我可能期望他们有同样的行为,但我从不期望任何人有这样的行为。

大约在同一时间,发生了两次重大转变,尽管世界上大部分地区都转向了远程工作,而我从创业公司转向了大型科技公司。这是两次巨大的工作范式转变,将影响工作与生活的平衡以及人们如何应对这一挑战。

首先,对于遍布全球不同地域与时区的团队来说,灵活性是至关重要的。

但是,如果我要晚点开会,我会尽量在另一天灵活安排开会/结束,避开午餐时间。我发现现在更容易平衡这一点,因为我会提醒团队,我希望他们做同样的事情,我需要以身作则。我非常欣赏他们的灵活性,如果我能以身作则,向他们表明我也这么做,他们会相信我是真心实意的。

其次,我知道在远程和混合工作中,生活中会出现一些情况。人们需要多跑很多腿,家里也会有这种情况。不管是什么,这些事情都会发生在我和我的员工身上——所以再说一遍,这一切都是为了以身作则,表明我们有这种灵活性。

在我的角色中,我仍然尝试专注于“仆人式领导”,我喜欢让我的团队知道他们可以随时向我寻求帮助。如果他们明白我并不总是随时待命,但我会在可以的时候做出回应,那么这将创造一种让我满意的平衡。

我希望尽可能多地为他们服务,但我不能一直盯着电脑。

哪些做法或习惯能帮助自己保持高效和专注?

我个人倾向于通过内容创作来掌握最新的技术问题。

作为一名工程经理,我希望一直确保自己保持技术优势,因为我以前曾同时编写代码与管理团队,这成为了我的优势之一。

对于工程管理和领导,我在LinkedIn上与其他工程领导者保持着联系,因此我几乎每天都可以阅读他们的见解。

我认为领导和管理团队没有唯一正确的方法,我听到的观点越多,我就越有机会在方法上发挥创造力。有时我会看到一些我不同意的东西,但作者提供了我以前从未考虑过的解释,结果是,现在我有了一个独特的观点,我可以在领导团队时将其融入其中。当然,在互联网上,我不会盲目地遵循所读到的一切;我会努力理解这些观点,看看我是否有办法真正应用它。

我喜欢在日历中使用时间段来获得不受干扰的时间来完成不同的事情。与此相关的是,如果我被邀请参加没有明确目标的会议,我喜欢向组织者询问意图和目标,因为如果不需要我,我就不会去。如果有必要,有人可以在会后不断向我汇报最新情况。

集中注意力可能很难,具体取决于环境。如果我在家办公,我会确保手机不会直接对着我的脸。即使只是工作通知,也会分散我对正在做的事情的注意力。

在办公室里,可能是人。与他人的互动是独一无二的,我很怀念过去几年完全远程办公的日子。但正因为如此,在深入交谈中很容易分心。这并不是说谈话没有价值;这只是意味着计划好的工作没有得到关注。

我试着意识到这一点,但这仍然是一种新的、独特的体验。

有什么资源可以推荐给有志于成为工程经理的同学吗?


作为一名工程经理,你能拥有的最好的资源之一就是与其他工程经理建立人脉,你可以与他们交流想法。

这虽然这不是一个正式的资源,但我认为它最有益。

因为你会听到并分享真实的挑战和情况。我通过微软的管理导师圈 (MMC)正式获得这些信息,在那里工程经理被分成小组相互学习。

另外,我在LinkedIn上也有一个工程经理人脉圈,我关注并与他们积极互动。

我认为,对于每位工程经理来说,一本必读的书是金·斯科特 (Kim Scott) 的《彻底坦诚》。我发现大多数经理都属于书中描述的四个类别中的两个。

一个类别被称为毁灭性同理心,工程经理通过大多采取被动态度并避免任何冲突或严厉的爱来帮助员工。但顾名思义,这是毁灭性的,因为它不会鼓励因自满而产生的成长。许多其他经理属于相反的象限,称为令人讨厌的攻击性。

然而,彻底坦诚允许经理给出批评性的直接反馈,因为他们已经与员工建立了牢固、信任的关系。

图片

金斯·斯科特的《彻底坦诚》

谢谢大家!

作者:尼克.科林蒂诺

编译:洛逸

评论