如何打造高绩效团队:来自技术管理者的经验分享

  如今,大多数软件开发组织都是围绕团队建立起来的,开发人员每天密切协作,共同交付软件。虽说团队最好是可以实现自我管理,但管理者仍然需要提供条件和指导,培养高效的团队。他们经常需要做的一件事情是平衡团队的自主权和责任,使软件团队和组织的其他部分保持一致。

  工程经理可以想办法促进团队的学习和自我提升,并帮助他们解决问题和扫除障碍。在这个虚拟小组讨论中,我们将讨论工程经理如何为团队提供支持、他们具备什么技能,以及他们如何在团队之间建立一致性并促进知识和经验共享。如果你想培养高效的团队,让开发人员能够发挥最佳工作状态,那么从工程经理的经验中学习将是一种非常好的途径。

  讨论小组成员

  • Dr. Olga Kubassova,IAG 总裁,图像分析组

  • Michael Gray,ClearBank 首席工程师

  • Hannah Foxwell,Snyk 产品总监

  InfoQ:作为技术管理者,你如何支持和指导不同类型的自治团队。每一个团队都有自己的工作方式,你又是如何确保组织各部门之间的对齐和协调?

  Dr. Olga Kubassova:定期(每年)确保所有人步调一致。确保所有团队都了解组织的核心价值观、使命和整体愿景。定期重复这个过程!这会建立一种团结感,并促进协作。信任至关重要,所以要在明确的边界内赋予团队决策权。这让他们能够独立工作,同时与战略框架保持一致。为团队负责人提供指导,提高他们的领导能力和有效管理团队的能力。打破信息孤岛也至关重要,但同时也要允许个人拥有成果。

  作为管理者,你应该在团队之间建立定期沟通和协作的通道。这可能涉及项目管理工具、组织定期会议等。对我们来说,非正式的社交活动(大小不一)效果不错。透明度可以建立信任,并帮助团队预见障碍或协作机会。

  当然,说起来容易做起来难,但为每个团队制定清晰可衡量的目标(这些目标有助于实现整体组织目标)是成功的领导力的基石。如果有机会,可以考虑建立中央协调团队或委员会。例如,一个负责表彰团队成员成就的表彰委员会。

  最有效的策略将取决于具体的团队、他们的工作风格和整体文化。我始终专注于赋予团队实现期望成果的能力,而不是对其进行微观管理。最后,庆祝通过努力协作所取得的成功,并制定奖励这种成功的政策。这加强了团队合作的价值,并激励团队之间进行进一步的合作。

  Hannah Foxwell:这是一个常见的问题,许多管理者倾向于认为标准化才是正确的道路……也许是因为这样可以让他们的工作稍微轻松一点?……也许是因为他们在其他地方看到这种方法取得了成功?但是,在我看来,如果团队无法发展、适应和改进自己的工作方式,我不认为他们真的是自治的团队。

  作为一个既做过工程负责人又做过产品负责人的人来说,我总会有一个总体的“计划”和规划过程。这在组织层面非常重要,可以确保团队在优先事项上保持一致,突出权衡的可见性,并就在投入方向上达成一致意见。无论团队在局部采用什么样的流程,都需要围绕这些高层计划进行对齐——为此,我建议保持规划轻量化、持续进行(而不是一年一次或两次),并向每个人传达其价值,让工程师明白为什么要求他们的计划要超出下一次迭代。

  Michael Gray:对于我们这样规模的组织,产品和技术共有约 300 人,拥有约 30 个自治团队,我们面临着平衡自治、对齐和可见性的挑战。为实现对齐,我们关注如何界定边界并启用约束。我们有一套标准的指标和报告,团队需要提供这些东西,我们有一个标准的“Sprint 评审”节奏,尽管我们并没有严格要求在团队内部使用 Scrum。只要团队能够提供指标和组织定期的评审会议,他们就有权自由发挥。

  在 ClearBank,我们的工作是按照季度来分阶段进行的,每个团队对他们将要交付或增强的能力下了重赌。所有这些都必须与我们的使命相关联,并与我们的总体产品战略保持一致。这些在我们的季度规划会议上进行沟通,当出现不一致时,有时会受到挑战。我们会进行总结和组织范围内的沟通。这使得组织能够对团队正在做的工作有足够的可见性,并有助于确保我们在最有价值的领域上投入,并与我们的使命保持对齐。

  InfoQ:在什么时候你会介入去解决团队问题,而不是引导团队自己找到解决方案?

  Dr. Olga Kubassova:有些情况需要管理的干预。例如,由于团队过去或最近做出的决定导致的危机。当团队在这些情况下出现士气低落时,对管理者来说就是一个信号。有效的介入可以在扭转局势方面产生重大影响。

  首先,我会诊断原因,了解问题的根源和采取行动的必要性。然后,我会提出目标和实现这些目标的时间表。我非常重视单独与团队成员和小组交谈,在了解情况后引导他们解决问题。

  Hannah Foxwell:决定介入并帮助团队可能会带来积极的结果,也可能会适得其反。如果团队最终认为你不信任他们,或者认为你在审查他们的工作,那对他们的自治感会造成很大伤害。你很可能陷入要解决所有问题的陷阱,从长远来看,这种方式无法帮助团队成长。如果团队请求你提供帮助,或者你们之间是那种可以偶尔让你参与进来的关系,那么这样可能还好,但要注意不要让团队变得依赖你。

  话虽如此,对于那些精疲力竭、失控或扰乱团队的人,有时候我还是不得不介入去处理。在这种情况下,采取行动是很重要的,因为你需要向团队的其他成员表明你是他们的后盾,同时也在为个人提供更多支持。

  Michael Gray: 这个问题很难回答,最简单的回答就是视情况而定。

  一个新组建的团队,他们正在进行磨合?——你最好站一边,让他们自己找到彼此之间的界限。在我看来,在这个时候干涉会导致负面结果。

  团队是否在努力找到自己的界限,导致消极的互动和行为?——这个时候当然可以介入,帮助团队划定一些边界,促进更健康的互动。

  他们是否在努力解决技术挑战?——这个时候可以提出一些引导性问题,帮助他们从不同角度进行思考,并提供新的视角,但最终要让团队自己解决技术挑战。

  InfoQ: 你在领导软件开发团队时面临了哪些挑战,你是如何应对这些挑战的?

  Dr. Olga Kubassova: 软件开发人员内向而专注,他们不愿向用户(甚至是早期采用者)展示他们的产品,这是一个挑战。

  解决方案是嵌入用户中心性(Embed User-Centricity)的:在整个开发生命周期尽早并经常性地融入用户反馈。

  • 用户测试:定期进行用户测试,收集有关可用性和设计的实时反馈。

  • 早期采用者计划:让早期采用者参与到实际使用场景中。

  • 用户研究:进行用户研究,了解用户需求、行为和痛点。

  Hannah Foxwell: 我认为管理者面临的最大挑战之一是应对持续的变化。永远不会有片刻的停留,总是有新的技术要学习,新的实践要采用,业务挑战和机遇要应对。适应这个不断变化的环境,同时为团队提供清晰的方向,这是成功的关键!

  Michael Gray: 我经常需要面临的一个挑战是团队或个人热衷于尝试新技术或应用新技术,但这些技术并无助于解决手头的问题。应对这个挑战的一个方法是确保他们清楚地了解他们要解决的问题,如果他们出现了偏离的迹象,我就问他们,“X 是否有助于我们达成 Y”(这里的 Y 是指我们要解决的问题,X 是)。有时候我的观点是错的,我已经学会了享受错误。如果新技术确实以我没有考虑到的方式解决了问题,那么这就是一个好的决定,但如果没有解决问题,我就问他们问题,让他们重新聚焦在手头的问题上,而不是向他们建议解决方案。

  InfoQ: 你如何支持团队的多样性和包容性,以及如何培养团队和组织的心理安全感?

  Dr. Olga Kubassova: 我们公开谈论我们所面临的挑战,并共同思考如何克服它们。作为女性管理者,我认为在团队和组织中倡导多样性和包容性以及培育心理安全感是至关重要的。我鼓励其他女性管理者树立榜样,即使是作为女性领导者的存在,也打破了刻板印象,为他人铺平了道路。当你展现自信和能力时,你就树立了最好的榜样。

  我们有许多不同国籍的员工,听到多元化的声音至关重要。我们积极寻求在会议、演示和头脑风暴会议中来自少数群体团队成员的见解。建立开放的沟通渠道,让每个人都能舒适地分享想法,即使这些想法与你的想法不同,这个很重要。当然,随着业务的发展,我们需要开始正式跟踪心理安全感指标,这样领导团队和组织就可以对进展负起责任。

  Hannah Foxwell: 总有更多的事情要做,但以下是一些可以产生重大影响的事情。

  在招聘时,确保来面试的人群是多样化的。这可能需要你在与潜在候选人初步接触时投入更多的精力。作为招聘经理,你发出的消息总会比招聘人员获得更多的响应。此外,注意岗位描述中的“必须具备”与“最好可以具备”的要求。放宽一些“必须具备”的要求,可以为不同背景的候选人打开大门。

  有一件事有助于消除招聘决策中的偏见,那就是确保面试过程对所有候选人都是一样的,并且你对面试的每个阶段都有预先商定的评分标准。承诺录用得分最高的候选人。但是,候选人的水平可能参差不齐,你可以为同一个职位面试一名高级工程师和一名资深工程师,然后相应地调整你的评分标准。

  要建立具有包容性的团队,确保每个人都有发言权,并且每个人的贡献都受到重视。成功值得庆祝,但也要鼓励团队成员相互庆祝。一个简单的做法是在团队会议上设定一个用于赞美和表扬的固定项目,然后看看会发生什么!

  失败也要庆祝!如果我们搞砸了一个东西,但最终解决了,然后从中总结经验并采取行动做出改进,那就是好事,而不是坏事。这有助于营造一个安全的冒险环境,当我们分享学习成果时,每个人都能进步!

  作为管理者,我希望每一个团队成员都有同等取得成功的机会。我最近在伦敦 QCon 大会上谈到过这个问题,并分享了我在整个职业生涯中犯过的一些错误。在我管理职业生涯的早期阶段,我尝试以相同的方式对待每个人,但并没有起作用。更好的做法是根据每个人的不同特点灵活地满足他们的需求。想一想个人是否需要辅导、指导或赞助,并认识到女性和少数民族在传统上总是被过度指导而缺少足够赞助。

  Michael Gray: 我们专注于建立一个灵活的工作环境,让人们可以在适合自己的时间和地点工作。我们有一个出色的内部多元化团队,负责帮助组织成员了解彼此的信仰、宗教、文化,让我们能够更好地理解彼此。

  我们的工程团队建立在信任的文化基础之上。他们拥有系统的能力,并与产品团队一起,被授权对他们所拥有的领域自主做出决策。更重要的是,他们可以失败,并不是每件事都要成功,失败一种是我们可以从中学习并做出更好决策的方式。

  InfoQ: 你在多年的工作中发展了哪些领导技能,以及如何将这些技能应用于日常工作中,帮助团队实现高绩效?

  Dr. Olga Kubassova: 我喜欢看到人们在自己的职业生涯中不断成长。当我看到有人如果得到适当的机会就能够取得更大的成就时,我会与他们合作,看看他们是否愿意接受挑战,并尝试在新岗位上施展技能。

  Hannah Foxwell: 作为一个管理者,你总有很多事情要做,所以你必须学会有效地安排优先事项。你需要渐渐适应委派任务、信任他人,有时甚至需要将工作推迟到以后再处理。决定不做哪些事情可能很难,但正如你的团队重视专注度和清晰度一样,你作为管理者,如果学会以正确的方式说“不”,将会产生更大的影响力。

  对于我的团队,我总是鼓励他们减少进行中(Work in progress)的工作,并在开始下一项任务之前完成当前的任务。与其让团队为实现不现实的截止日期而过度劳累,不如与他们一起制定一个现实可行的计划。

  Michael Gray: 在我职业生涯的早期,我曾经以我自己的方式来看待世界。多年来,我明白了并非每个人都像我一样看待世界,每个人都有他们自己的观点。对这些观点以及人们为何会有这些观点保持好奇心,这对于我和我领导能力的提升来说至关重要。保持好奇心让人们感到他们被倾听,并成为决策过程的一部分,最重要的是让他们感到自己参与到了整个过程中。

  我还学会了信任别人,并为他们留出空间。回顾我的职业生涯,我曾与一些出色的管理者合作,他们并没有为我所有的问题提供答案,但创造了一个安全的环境,让我可以尝试自己解决问题,即使失败也没关系。我现在尽量给予人们同样的机会,并为他们创造能够给他们带来心理安全感的环境和成长空间。

  回到我之前提到的观点,“并非每个人都以相同的方式看待世界”。所有的人和团队都是不一样的,了解他们喜欢如何工作、如何沟通和互动,以及他们期望 / 需要什么程度的支持。我非常清楚这些。有些团队需要更多的指导性沟通和明确的焦点,并且他们期望得到这些,而有些团队则更喜欢时不时地进行简短的交流,同时又可以自主推动进展。你需要了解这些需求,因此,如何与每一个团队成员沟通需求和协作就变得至关重要。

  InfoQ: 你如何帮助团队进行知识和经验分享,包括从失败中总结宝贵的经验教训,以及这对团队和整个组织带来的好处是什么?

  Dr. Olga Kubassova: 鼓励团队之间进行知识和经验分享,包括从失败中总结的经验教训,这对于提升创新能力、效率和整体组织成功来说至关重要。我们的团队紧密合作,不断分享知识。这可以在小组或团队范围的会议中进行。我发现拥有一个共享的知识库非常重要。我们将知识分为不同的领域,一个人不可能掌握所有知识。拥有一个共享的知识库肯定会有帮助!

  Hannah Foxwell: 这可能让人感觉有点太过正式,但定期举行全员会议可以很好地向更广泛的受众宣传成就。有时候这些会议可能是自上而下的,但如果其中包含了来自工程师的经验报告,比如他们遇到了哪些问题以及他们如何克服挑战解决了这些问题,那么对其他人来说,既可以激励他们,又可以让他们印象深刻。无论是新功能开发、处理事故、解决安全问题还是采用新技术,好故事总是会让更广泛的团队产生共鸣!

  鼓励团队将这些经验记录下来并与他人分享也是一个很好的做法。这样,它们就可以在你的内部维基中被搜索到,错过会议演示的人仍然可以从中受益。

  Michael Gray: 在 ClearBank,我们做了几件事。

  首先是我们如何处理严重事故。所幸的是,它们比以前要少,但偶尔仍会发生。在遇到严重事故时,我们会进行无责事后评审会议(PIR),讨论导致事故的所有因素,后续如何改进并采取行动来降低未来的风险。然后,我们在每周一上午 10 点的产品工程全员会上发布摘要,让产品工程团队的其他人能够理解导致事故的因素并从中学习。

  我们的架构咨询论坛在其中也发挥了作用。这是我们做出具有广泛影响决策的论坛。任何人都可以参加,他们可以看到我们为做出技术决策而进行的讨论。这是一种很好的方式,可以让整个团队的人了解在做出技术决策时应该问哪些问题,并帮助他们学习如何思考问题以及如何解决问题。

  我们有专注于特定领域的公会,例如我们的安全公会、QA 公会,他们聚在一起讨论最新的安全 /QA 发展趋势,这是一个开放的论坛。只要是与安全 /QA 有关的主题,任何人都可以在这些论坛上演讲或分享。我们还有其他的公会,有些是针对特定级别的,例如我们的工程经理,他们每月聚在一起讨论可能遇到的挑战,分享经验,相互支持。

  最后要提到的是我们每周五都会进行的“Teck it easy”活动。任何人都可以参与谈论话题,有时是与工作相的话题,有时只是品酒,有时是与 3D 打印或家庭自动化相关的话题。这是人们建立联系、结识他人的好机会。

  总结

  技术管理者必须确保整个组织的一致性和协调性。他们可以通过传达组织的核心价值观、使命和愿景来支持和指导不同类型的自治团队。管理者可以通过平衡自主性、一致性、可见性和信任来调整事项优先级,设置约束,在边界内赋予团队权力。标准化并不是最正确的做法,只有当团队能够发展、适应和改进自己的工作方式时,他们才能真正自治。

  管理者应该知道什么时候可以介入解决团队问题,知道什么时候需要引导团队自己找到解决方案。当一个新团队正在摸索方向或解决技术问题时,他们不应该干预。如果确实需要干预,要注意不要让团队变得依赖他们。

  管理者可以做很多事情来提升团队的多样性和包容性以及培养心理安全感。例如,积极寻求每个团队成员的观点,建立开放的沟通渠道,让每个人都能舒适地分享想法,灵活满足每个人的需求,确保每个人都有发言权,每个人的贡献都受到重视,允许人们失败并庆祝这些失败。

  工程经理可以通过委派、信任团队和保持好奇心来创造安全感,通过了解团队需要怎样的支持来来帮助团队实现高绩效。他们还应该能够将工作推迟到以后再做,学会以正确的方式说不。

  鼓励团队之间进行知识和经验分享,这有助于促进创新、提升效率和取得成功。全员会议可以很好地向更广泛的受众宣传成就。参加架构论坛可以帮助工程师了解在做出技术决策时应该提出怎样的问题,并学习如何思考问题和解决问题。