在大厂交付大型项目的策略

在大厂交付大型项目的策略

原始链接: writing.samsonhu.com/tactics-for...

六年前我刚加入 Pinterest 做后端工程师时,还带着以前在初创公司的工作习惯:追求速度、缩小范围、尽快交付。但这些在小团队很管用的招数,在大厂反而成了绊脚石。我必须重新学习。

在大公司,单打独斗行不通。这里不鼓励走捷径,正确性和安全性比速度更重要。我一度很不适应,甚至想回初创公司。但后来我坚持了下来,并总结出了一套新经验。本文将分享我这几年学到的如何交付大型项目(即跨多个团队、耗时一年以上的项目)。如果你是想提升自己、扩大影响力的资深工程师,这篇文章正适合你。这些经验都源于我一路上的不断试错。

前期:把风险降到最低

只要是在自己团队内部的项目都好办,只要你的主管支持,你想怎么做都行。但如果需要跨团队借调资源,难度就会成倍增加。离你自己的汇报线越远,你对项目进度和资源的把控力就越弱。

你自己必须非常了解现有系统和要解决的问题,同时还要能向其他团队解释清楚。面对缺乏背景知识和时间的同事,你的沟通越清晰,获得支持就越容易。我发现使用架构图(如 C4 模型、Mermaid)和用户故事(User Stories)能很好地描绘出项目完成后的愿景。

只有大家对问题达成共识,才能去谈资源配置。毕竟你是在占用其他团队原本可以做其他事的时间,或者要求他们增加人手。因此,多花点时间评估项目影响,并与合作团队的领导层搞好关系是非常值得的。你的项目必须在众多备选项目中"脱颖而出"。


接下来要明确每个团队的具体交付任务。这是项目最关键的阶段,前期准备越充分越好。跨团队项目中如果遗漏了需求,会严重拖延进度,因为你的合作伙伴还有别的任务,很难在中途为你腾出时间。

通常,很难分清哪些是"发布前必须解决的阻塞需求",哪些可以延后。你需要多花时间与用户及利益相关者沟通,明确这些界限并对外同步。

有时候需求比较模糊,解决方案可能依赖于你还不了解的底层系统。这时候也要尽量在前期搞清楚;如果实在搞不清,就明确标记为"未知风险",并在推进中尽早解决。

各团队确认需求后,就可以初步制定项目时间表了。与合作方一起,明确各团队在什么时间点需要交付什么关键里程碑,并理清依赖关系。虽然计划赶不上变化,但时间表能明确各方的基本承诺。

最后,需求和时间表敲定后,确保你的项目被写进了自己团队和合作团队的 OKR(目标与关键结果)里。你可以让双方的领导层开个会,把合作关系正式敲定下来。


大型项目的前期阶段至关重要。你必须争取到其他团队的承诺,并预判未来的任务。前期准备越充分,中途遇到的意外就越少。

执行:把控进度不跑偏

项目启动后,你可以通过以下几种方式来保障进度:

首先是跨团队定期同步会。邀请所有利益相关者,特别是能解决卡点问题的负责人。会议初期可以讨论技术方案,但后期的核心目标应该是排定需求优先级、跟踪时间表。必须适时从"讨论技术"转向"降低交付风险"。

其次是团队内部的 1v1 沟通。不要理所当然地认为只要分配了任务,进度就会按时推进。你的队友不仅要做这个项目,还有日常运维、其他项目和个人目标。1v1 的目的不是聊技术,而是深入了解他们的工作优先级,确保他们有足够的时间按时完成项目的里程碑。

利用 Sprint(敏捷冲刺) 来安排内部工作。你需要对团队负责,确保进度。让每个人把任务拆解成具体的子项目和个人里程碑,并在 Sprint 规划中进行追踪。小心一个陷阱:不要以为每个 Sprint 都有任务完成就是有进展,真正的衡量标准是关键里程碑是否按期达成

为了更好地关注里程碑,最好有一份汇总了整个项目时间表的单页文档,方便各方随时查阅。其目的是一旦发现延期苗头,就能及早预警并补救。

各方的交付成果可能会有偏差。可以通过两种方式解决:一是在前期设定好验收标准(如产品演示或跑通具体用例);二是一旦功能就绪,你自己要第一时间去"试驾"体验,这样能最真实地掌握进展。

此外,建立一个统一的沟通群组也很有用。鼓励大家在群里随时 @ 人解决问题,特别是在远程办公环境下。但要避免在聊天软件里长篇大论,如果问题很复杂,请直接写文档,否则信息很容易丢失,导致错误决策。

发布:平稳落地

到了发布阶段,大部分风险应该已经排除了。关于系统迁移的技术挑战,业界已有成熟的经验(参考:现实世界中的工程挑战),我个人的建议是尽量多做自动化迁移工具。

此时最大的风险是需求遗漏。因此在迁移或上线前,要通过主管指定的委员会或实验数据来全面验证发布的可靠性。

如果发布阶段突然冒出新需求,而合作团队来不及处理,项目就可能延期或被降级。这通常超出了你的权限,需要向上级汇报,争取高层支持来解决问题。

如果项目面向用户,且灰度实验结果不理想,你可能需要将排查工作分配给其他人。如果你能在前期把问题拆解得足够清晰,别人接手排查的效果就会更好。

应对挑战与向上汇报

在大型项目中,你主要会遇到两类问题。

第一类是设计和执行问题。比如漏了需求,或者团队被其他事分心导致进度落后。通过前期的风险排查和扎实的项目管理,你能尽早发现并解决这些问题。尽早沟通进度变化,有助于维持与其他团队的信任。如果缺乏透明度,信任很快就会崩塌。

第二类是你无法控制的问题。比如你的项目与别的团队核心目标冲突,或者合作方突然改变计划导致项目被推迟半年,再或者大客户拒绝使用导致业务目标落空。

面对这类不可控的路障,如果没有领导层的支持,项目注定会失败。你需要能够向上汇报(Escalate),并在总监(Director)或副总裁(VP)的帮助下跨越部门壁垒解决问题。


如何以及何时向上汇报?

首先,评估你是否有条件去推进:你的项目对公司或合作方的影响力够大吗?你的直属领导支持你吗?其次,确保你已经穷尽了和合作团队沟通的所有办法。如果依然无解,那就该向上汇报了。

你需要准备一份正式的汇报文档,并获得团队核心成员和主管的背书。在文档中说明背景,以及项目受阻会对公司用户或财务造成的具体影响。文档要简明扼要、实事求是,并准备好为你的每一个数据辩护。

文档经过评审后会层层上报。你的总监会去和对方的总监沟通,或者上升到 VP 级别。向上汇报的目的不是用职级压人,而是寻找在团队层面无法解决的方案。高层能做出的决策包括:允许你的项目破例绕过某些设计规范、调动人员填补空缺,或者根据你提供的数据重新向全公司强调该项目的重要性,从而让合作团队优先解决你的问题。

写在最后

在大厂挑战大型项目是我职业发展中很有趣的一环。它不仅锻炼了跨团队协作的软技能,还培养了我排除项目风险的直觉。在这个领域我也还在不断学习,希望我的这些经验能帮到面临类似情况的大家。

相关推荐
jonjia2 小时前
RFC 与设计文档
程序员
jonjia2 小时前
为什么你(或任何人)应该成为一名研发经理?
程序员
jonjia2 小时前
管理技术质量 (Manage Technical Quality)
程序员
jonjia2 小时前
大厂软件工程师职业发展路径
程序员
jonjia2 小时前
关于工程师与影响力
程序员
jonjia2 小时前
多层上下文 (Layers of Context)
程序员
jonjia2 小时前
工程师与管理者的职业钟摆
程序员
jonjia2 小时前
如何将代码发布到生产环境
程序员
jonjia2 小时前
在初创公司与大厂工作:利与弊对比
程序员