在真实的项目工作中,我们经常会遇到一些“非预期的挑战”:比如一个你完全不熟悉的需求突然由你负责推进,原负责人已经离开或调岗,留下一些零散的文档与未完结的代码;更难的是,这次还需要你带一个工作经验仅 3 年的新人共同推进。
这篇文章分享我在一次浏览器底层开发项目中,接手一个中途交接的大需求后,是如何逐步把混乱变成可控,把陌生变成清晰的。我会从以下几个方面讲述:
一、快速掌握上下文:搞清楚“我要解决的核心问题”
1. 明确背景目标
接手前我第一时间做的是:找产品/Leader 开个 30 分钟会议,让他把“需求来源+最终目标+已经推进到哪一步”清晰说一遍。我重点问了:
-
为什么要做这个需求?(业务背景)
-
成功交付的标准是什么?(关键交付物、性能指标、是否用户可见)
-
当前哪些模块是做完的?哪些是卡住的?
2. 收集已有材料
常见有用信息:
-
代码仓 + 历史提交 + 分支命名
-
流程图、技术文档(看是否有流程邮件、会议纪要)
-
产品需求文档(PRD)、排期表
然后我自己画了一张信息地图,把需求拆成以下几个维度:
-
功能流程:输入、处理、输出
-
涉及模块:网络层?UI 层?渲染层?
-
依赖关系:调用链上是否依赖第三方库或其他项目组?
二、模块化拆解:让复杂问题具体可行
1. 拆功能模块
我将需求拆成 4 大模块,每个模块继续细化成功能点,例如:
-
A 模块(负责地址栏解析):关键逻辑是什么?流程里是否有异步操作?
-
B 模块(渲染转发):是否涉及进程间通信(IPC)?
2. 把不熟的模块拉出重点调研
以“高风险 + 影响广 + 无文档”为判断标准。
然后通过:
-
阅读代码入口、类定义、主流程函数名
-
查看单测、断点调试主流程
-
阅读对应模块的 issue 或历史 commit
最终形成了一个表格:每个模块的熟悉程度 + 剩余开发任务。
三、精准排期:控制变量 + 保留 buffer
1. 如何估时间
我用的是“三点估计”模型:
-
乐观时间:假设顺利推进
-
悲观时间:中间踩坑,或模块对接失败
-
合理预估时间:中间值 + 30% buffer
另外会特别考虑:
-
需要学习的时间(新人熟悉模块 + 自己了解旧代码)
-
Review + 提测 + BugFix 的打点
2. 周期划分
我按周为单位做了如下划分:
-
Week 1:熟悉代码 + 搭建环境 + 拆模块
-
Week 2:自己开发高优模块 + 新人进入辅助开发
-
Week 3-4:联调阶段 + 修复问题 + 测试同步
四、带新人成长式协作
1. 任任务不是“甩锅”,是“陪伴式协作”
我会:
-
给他模块背景 + 清楚的目标
-
明确截止时间
-
每 2 天做一次短会:同步进展 + 解决卡点
2. 日常代码指导方式
-
代码 PR review 不只是看结果,而是教思路:为什么这样设计、这段逻辑放哪更合理
-
引导他自己提问题,而不是“你来问我我再想”
-
鼓励他去查资料、改完写下总结笔记
五、复盘:关键经验 & 通用方法
最值得的地方:
-
前期梳理上下文很值,省了后期无头苍蝇的混乱
-
模块拆解图 + 任务清单,大幅降低协作成本
后续可以优化的:
-
提前引导新人做文档沉淀(帮助后人)
-
和产品、测试多做同步,避免阶段性目标误差
通用建议:
接手中途复杂项目,先别急着写代码,而是先让自己变成“这件事最懂的人”——哪怕开始你是一点都不懂。
这就是我在一个浏览器内核相关大模块迁移开发中,从混乱接手到稳定推进的全过程。希望你下次遇到类似情境时,也能胸有成竹地拆解、推进、交付。

1858

被折叠的 条评论
为什么被折叠?



