关键要点
- 表现优异的软件团队在一种鼓励创新的文化环境中才能蓬勃发展。在这种文化中,信任、学习精神、与客户的紧密合作,以及对失败采取非指责性的态度,能够让团队获得自主权并持续改进。
- 当平台工程将工程师视为客户,并消除那些重复性且缺乏区分度的任务时,它就会变得更加有效,这样团队就能专注于创造商业价值。
- 优秀的科技领导者通过优化系统、明确工作重点和优先级,以及通过有效的沟通、授权和支持学习来促进团队的发展,从而提升整体绩效。
- 通过使用标准化平台、提供快速反馈,并营造鼓励自主性和专业成长的环境,企业能够提高员工的积极性,减少内部摩擦,使团队能够更高效地实现更高品质的目标。
- 当平台工程、开发者体验与领导力三者相互协调时,团队就能更快地取得更高品质的成果,同时风险也会降低,团队的独立性也会得到增强。
引言
虽然“文化”常被视为一种软技能,但表现优异的组织深知,文化才是推动生产力与稳定性的关键因素。在本次线上讨论中,我们将探讨文化在软件开发中所扮演的关键角色——它既可能成就一个团队,也可能破坏它。一种强大的文化环境能够支持创新,帮助软件专业人士充分发挥他们的潜力。
有许多方法可以建立并维护一种高效运行的软件开发文化。在此次讨论中,我们将重点关注通过平台工程提升性能,以及改善开发者体验,从而提高生产力、质量及开发者的工作满意度等。同时,我们也会探讨科技领导力在推动文化变革和促进软件开发组织绩效提升方面所能发挥的作用。
讨论嘉宾:
- Patrick Kua——@Tech Lead Academy的CTO培训师
- Abby Bangser——@Syntasso的首席工程师
- Sarah Wells——@Sarah Wells Consulting Ltd的咨询专家兼作家
InfoQ:在构建高效运行的软件团队时,文化起着什么作用?
Patrick Kua:在讨论文化的作用之前,我想先明确一下我对“文化”这个词的理解。因为这个术语的含义往往比较模糊。在我看来,文化就是一套被组织所认可的行为规范——这些规范决定了组织会鼓励哪些行为,又会抑制哪些行为。虽然词语可以定义一个组织的文化,但最终决定文化本质的,还是那些具体的流程、奖励机制、惩罚措施以及被允许存在的行为方式。
事实上,某些文化因素既有可能帮助高效运行的软件团队取得成功,也有可能阻碍它们的发展。例如,那些鼓励团队与客户保持紧密联系的公司文化,确实能够帮助团队提升绩效。亚马逊对客户的极度重视就是一个很好的例子——因为这样的文化让团队能够清楚地看到自己工作的实际影响。他们不仅仅是在执行任务,还能在获得更多了解客户的机会后,想出各种创新的解决方案来解决问题。
另一个影响高效软件团队的重要因素是,一个组织是否愿意接受错误。DORA报告和《加速发展》一书都提到了“鼓励创新的文化”,其中的一个重要方面就是:公司是否会试图将责任推到某个人身上,从而导致其被解雇或替换;还是说,公司会鼓励人们从错误中学习并改进自己的工作方式。能够接受错误的存在,是构建高效软件团队的关键,但前提是团队必须能够从中吸取教训,并优化自身的工作流程。
Abby Bangser:我认同这样一种观点:一个表现优异的团队,一定是那种其整体表现能够超过各个成员单独作用之和的团队。正如Charity Majors在谈到高效团队时所说:“一个真正优秀的工程组织,应该是这样的:那些具备普通软件工程技能、拥有相当专业水平的工程师们,能够日复一日、周复一周地快速推进工作、交付代码、响应用户需求、理解自己所开发的系统,并推动业务不断发展。”正是这种共同的理念,以及不断优化的运作机制,才使得这样的价值创造成为可能。
几年前,我有机会从团队成立的最初阶段就加入其中。在从零开始建立团队并使其形成稳定的工作模式时,有太多事情需要处理。因此我们决定通过为期两周的集体编程活动,并同时搭建虚拟开发环境,来直接应对这些挑战。虽然这种高强度的工作方式让人疲惫不堪,但它确实深刻地影响了我们对于团队运作的认知。我们不仅对代码测试的方法、共享开发环境的重要性有了更深入的理解,也学会了如何在意见不一时进行有效的沟通与协作。这一切,都为我们的团队营造了一个充满信任的氛围,使每个人都能够超越以往的经验极限,共同创造出出色的成果。
Sarah Wells:我参与过的那些运作最为高效的团队,都具有高度的开放性,成员们都热衷于学习与分享知识,并且能够在情况发生变化时迅速作出反应。最重要的是,这些团队能够独立决策,自主开展各项工作。
只有在这种具有特定文化氛围的组织中,这样的团队运作方式才有可能实现。社会学家Ron Westrum将这种文化称为“生成型文化”,它强调信任、避免互相指责,以及重视学习和探索。在《金融时报》,我们正是拥有这种文化,才得以成功推动工程组织的工作模式发生重大变革。
InfoQ:平台工程如何帮助工程师们开展日常工作?
Patrick Kua:优秀的平台工程团队会将工程师视为自己的“客户”。正如工程师需要深入了解客户需求、明确自己的工作目标及面临的挑战一样,优秀的平台工程团队也会主动与工程师沟通,了解他们在工作中遇到的困难,并设法帮助他们克服这些障碍。
一个很好的判断标准是看工程师们把时间花在了哪里。如果他们花费了大量时间在基础设施搭建、重复性工作上,那么他们用于解决实际客户问题、创造价值的时间就会相应减少。优秀的平台工程团队会努力提高工程师们能够投入到真正有价值的工作中的时间比例。
Abby Bangser:软件开发需要使用许多工具,才能将工程成果转化为可用的产品。从用于运行的服务器,到用于测试和观察最终产品的各种软件,这些工具都是必不可少的。然而,软件工程师能够直接购买到的工具,往往与他们在特定组织中遇到的实际需求之间存在差距。有时这种差距仅仅体现在一些简单的配置问题上,而有时则意味着需要大规模的投资。
平台工程通过帮助软件工程师找出哪些环节可以避免重复劳动,从而降低从市场采购现有工具到开发符合自身需求的专用工具之间的成本,为他们提供支持。发现这些优化机会本身就是一种“产品探索”过程,而这种探索对日常工作的实际影响,则是衡量其价值的关键标准。当然,最终的目标是让这些平台产品能够帮助组织在规模经济方面获得更大的收益,通过提供可供多个团队共享的集中式服务,从而降低解决问题的总体成本。
Sarah Wells:我们不希望每个工程团队都去解决相同的问题,尤其是当这些问题对业务发展并非至关重要的时候。因此,就需要设立专门的平台团队,让他们运用软件技能和产品思维来解决基础设施及运营方面遇到的挑战。
优秀的平台团队会与工程团队紧密合作,致力于消除那些阻碍团队工作效率的因素。他们会只开发真正需要的功能,并通过迭代的方式不断改进产品,而不是花费数月时间去打造一个完整的“解决方案”——因为这样他们才能在实践中学习并调整方向。
InfoQ:你们采用了哪些领导方式来激发技术人员的潜能?
Patrick Kua:这个话题本身就可以写成一篇文章。但简而言之,优秀的领导者会思考如何提升个体的工作效率。他们的重点不在于管理人员,而在于优化整个工作体系,让每个人都能发挥出最大的作用。
通常来说,这意味着要明确当前对企业或客户而言最重要的事情是什么(比如确定优先级)。此外,领导者还需要学会有效地分配工作任务,让员工在承担更多责任的同时能够不断学习和成长;同时也要提供必要的支持,确保他们能够取得成功,或者在他们犯错时,这些错误不会造成严重的后果,反而能成为促进他们学习的契机。
Sarah Wells:我发现工程团队非常重视公平性和一致性,但组织环境总是在不断变化,因此几乎总会遇到一些特殊情况。
我会首先努力确保信息传达的清晰度。要明确战略目标、计划采取的行动以及这样做的原因。有些人可能只关心如何解决眼前的问题,但那些具有全局视野的人往往能提供重要的反馈意见,帮助我调整策略,找到更好的解决方法。
另外,我也非常注重与团队进行充分的沟通。需要用不同的方式反复传达信息(比如通过Slack、电子邮件、海报或会议等方式),直到所有人都理解了这些内容为止。不过,在科技行业,仍然有很多人花费数月时间来制定战略或开发工具,然后只发一封邮件就认为任务完成了——这种做法简直是在浪费精力。作为领导者,其实也需要具备销售和营销的意识!
InfoQ:如何通过重视开发者的体验来提升工作效率与产品质量?
Patrick Kua:我刚刚解释过,重视开发者的体验能够让工程团队将更多时间投入到面向客户的工作中,从而提高工作效率。然而,平台工程团队在解决常见的基础设施问题方面往往能发挥更大的作用;如果这些工作能够妥善完成,就能为整个组织带来显著效益。例如,各个团队不必各自开发不同的服务部署和监控机制,而是可以共享标准的解决方案。一旦这种机制得到改进,所有团队都会立即受益。
Abby Bangser:在探讨为什么投资于开发者体验能提升工作效率与产品质量之前,我们有必要回顾Daniel Pink提出的观点:自主性、精通感以及工作目标才是决定工作满意度的关键因素,而非聚会或福利待遇。这一观点也决定了我们今天应该在哪些方面进行投资。
当你为自己坚信的使命而工作时,优质的工作体验所带来的影响会变得尤为明显。在我参与开发帮助求职者的工具时,我发现一个有趣的现象:没有人抱怨过团队建设活动或办公室里的娱乐设施。大家真正感到不满的是无法获得用户反馈,以及由于繁琐的审批流程导致服务部署速度缓慢。当这些问题通过政策调整得到改善后,团队的工作质量和工作积极性都明显提高了。
创造一种鼓励深入思考、快速反馈以及低阻力实验的环境,能够帮助工程师们专注于高价值的工作,更深入地了解他们所从事的领域,进而为用户提供更好的产品体验。
Sarah Wells:正如Kathy Korevec指出的那样,当你为其他开发者开发工具时,你其实是在“为其他厨师烹饪”。这意味着你需要关注这些工具的使用体验,因为“开发者能够远远提前发现其中存在的问题、反模式以及障碍”。另一方面,如果你愿意倾听他们的反馈,他们也会成为你的优秀合作伙伴。
优秀的平台工程工具应该是那些能解决大多数工程师面临的实际问题、并能引导他们按照正确的方向进行开发的工具。这样,一致性、更高的质量以及更高效的业务价值流就会成为你投资这些工具后获得的回报。
InfoQ:在平台工程、开发者体验以及技术领导力方面,你们取得了哪些成效?
Patrick Kua:在这些领域进行适当的投资,本质上是为了帮助团队取得更好的成果。对于某些团队来说,这意味着他们能够产出更多的成果;而对于其他团队而言,则意味着他们可以专注于提供质量更高的产品。
Sarah Wells:如果你的平台工程团队专注于提升开发人员的体验,并将自身的职责视为帮助其他团队实现业务价值,你可能会认为自己只是在努力加快工程团队的工作效率。但实际上,通过标准化以及运用自己的专业知识来解决特定问题,你也能够在降低风险和成本方面发挥重要作用。
在我看来,有效的技术领导力是另一个需要考虑的因素。无论是在产品工程团队还是平台工程团队中,这种领导力都是必不可少的。
优秀的领导者能为团队指明明确的方向。如果你能做好这一点,就会发现团队可以在没有你的参与下独立做出决策。我在《金融时报》工作期间,年度目标规划会议是在工作日进行的(他们甚至改变了会议日期!),但我的团队并没有向我寻求帮助,而是自己完成了所有目标的制定工作。当我回来后,既感到自豪,又有些担心——他们在工作中是否真的不再需要我了?不过那些目标确实涵盖了我们所有的战略方向。
结论
企业文化是通过那些被鼓励或被容忍的日常行为来塑造高性能软件团队的,而不是通过一些宣言或口号。我们应该营造一种重视与客户建立紧密联系、强调信任以及鼓励学习的文化,在这种文化中,错误会被视为提升自我的机会。
利用平台工程来提高团队的工作效率,减少日常工作中出现的各种障碍。通过标准化和集中管理基础设施及工具,平台工程团队可以帮助工程师们摆脱重复性任务,让他们能够更加专注于为客户创造价值,尤其是在与产品团队进行迭代合作时。
要提升开发人员的体验并增强他们的领导能力,就需要确保反馈机制的畅通、实验活动的有序进行以及工作结果的一致性。作为一位有效的领导者,你应该能为团队指明方向、频繁地与他们沟通,并不断优化各种系统,这样团队才能以更快的速度、更高的效率取得更好的成果。