一、出师报告:王姐的 14 个"为什么"
技术部年会上,小陈站在白板前,给全组讲《我们踩过的坑》。王姐坐在第一排,笑眯眯地抛出了她的"灵魂拷问清单"。
麻烦 1:为什么你们俩写代码的时候好好的,六个人就乱了?
"因为个人开发靠默契,团队开发靠管理。管理的第一课就是:把'默契'变成'约定'——模块负责人、完成的定义、改代码先打招呼。这是整棵管理树的根。"
麻烦 2:为什么我一句话,你们要做一个月,做出来还不是我要的?
"因为'想法'不是'需求'。我们没把您的想法写成'用户故事 + 验收标准',就闷头开干——需求没对齐,返工是必然。现在每个需求都有三句话:作为谁、想要什么、以便什么,加上'测过什么标准才算完'。"
麻烦 3:为什么你们总有"最终版2""最终版真的不改了"这种文件?
"因为没有版本控制。现在用 Git:每次改动有记录、有原因,各人各分支,互不覆盖,合并有节奏。再也不需要靠文件名表达绝望了。"
麻烦 4:为什么改一个功能,能崩三个地方?
"两个原因:测试没兜底 + 架构没边界。现在有单元测试/集成测试当安全网,改完跑一遍就知道崩没崩;架构上按领域划边界,改库存不该碰结算。"
麻烦 5:为什么发布总是选在周四,还总是出事?
"因为以前发布是人肉操作、靠运气。现在有 CI/CD 流水线:自动构建、自动测试、自动部署到各环境,一键上线、一键回滚,机器比人可靠。"
麻烦 6:为什么你们总说"下周上线",但从来没兑现过?
"因为没有项目管理节奏。现在用 Scrum:两周一个冲刺,计划会定范围、站会同步进度、评审会交付成果——'下周上线'从口号变成了排期表上的事实。"
麻烦 7:为什么每次开会,开完就忘了开过?
"因为没记录的会=白开。现在每次会议 5 分钟出纪要:结论、待办、负责人;重大决策写 ADR 存档。知识沉淀进 Wiki,人走了经验不走。"
麻烦 8:为什么阿杰一离职,会员模块就没人能动了?
"这是巴士因子=1 的代价。现在要求关键模块至少两个人懂:交叉评审、结对编程、定期轮岗。团队不能绑在一个人身上。"
麻烦 9:为什么大促前那么赶,大促后这么多坑?
"因为借了技术债。赶工借的债,利息就是线上事故。现在有技术债清单,每个冲刺留 20% 时间还债——借钱要记账,欠债要还。"
麻烦 10:为什么你们总说"感觉快多了",但我看不出数据?
"因为感觉不可靠,数据才可靠。现在我们每周看 DORA 四指标:部署频率、变更前置时间、变更失败率、故障恢复时间。快不快、稳不稳,用数字说话。"
麻烦 11:为什么同样的错,犯了又犯?
"因为没有复盘机制。现在每次事故都开复盘会:对事不对人,挖根因,出改进项,设截止日。优秀团队不是不犯错,是同样的错不犯第二次。"
麻烦 12:为什么代码库越来越大,但越来越难改?
"因为架构在悄悄烂掉,变成了大泥球。现在有架构治理:分层、划领域边界、依赖检查进 CI、演进式小步重构。不搞推倒重写,一堵墙一堵墙地改。"
麻烦 13:AI 写代码这么快,你们会不会被替代?
"AI 替代的是'只会写代码的人',替代不了'对结果负责的人'。 AI 会写,但不知道要什么、不知道对不对、不知道团队怎么协作。这些判断和责任,还是人的。"
麻烦 14:那你觉得,这一年最大的收获是什么?
小陈放下笔,看着满白板的地图,轻轻说:"我最大的收获,是明白了一个道理——软件工程里所有高级的东西,都是在回答一个朴素的问题:怎么让一群人,安心地、稳定地、高效地,一起把事情做成。"
二、完整对照表:麻烦 → 管理实践
| 你遇到的麻烦 | 对应的管理实践 | 云间书店的落地 |
|---|---|---|
| 两个人好好的,六个人就乱 | 团队协作约定(根) | 模块负责人、DoD 定义、改前打招呼 |
| 需求没说清,做出来不是要的 | 需求管理(第一层) | 用户故事 + 验收标准 + MoSCoW 优先级 |
| "最终版2""最终版真的不改了" | 版本控制(第二层) | Git:提交规范、分支策略、代码评审 |
| 改一个功能崩三个地方 | 代码质量 + 测试(第三、四层) | 规范、静态分析、测试金字塔、TDD |
| 发布靠运气,周四必出事 | CI/CD + 运维(第五、六层) | 流水线、环境分层、一键回滚、监控告警 |
| "下周上线"永远不兑现 | 项目管理(第七层) | Scrum 冲刺、站会、看板、WIP 限制 |
| 开会开完就忘 | 团队协作(第八层) | 会议纪要、ADR、Wiki 知识库、结对 |
| 一个人离职,模块就瘫 | 巴士因子管理(第八层) | 交叉评审、结对、轮岗 |
| 赶工一时爽,事后火葬场 | 技术债管理(第九层) | 技术债清单、20% 还债时间 |
| 感觉快,但说不出数据 | 度量(第十层) | DORA 四指标、覆盖率 |
| 同样的错犯两次 | 复盘(第十层) | 事故复盘五问、回顾会 |
| 代码越来越多越来越难改 | 架构治理(第十一层) | 分层、DDD 边界、依赖检查进 CI |
| AI 来了怎么办 | AI 时代工程实践(第十二层) | AI 生成人工审、平台工程、责任到人 |
三、最后一课:为什么会有这棵树
年会结束,老周和小陈坐在书店二楼的窗边。楼下,新来的实习生正在向老员工请教 Git 的用法。
"师傅,一年前您给我画这棵树的时候,我觉得管理就是'管人'。"小陈说,"现在我觉得,管理其实是……"
"是什么?"
"是信任的工程。"小陈慢慢说,"版本控制,是相信别人不会乱改,所以给每个人一条车道;测试,是相信'人都会犯错',所以给错误兜底;复盘,是相信'说出问题不会被惩罚',所以大家才敢说实话;留 20% 还技术债,是相信'短期牺牲一点进度,换长期的速度'。管理的所有工具,最后都是在经营一种东西——让团队每个人都能安心地把后背交给队友。"
老周笑了,从口袋里掏出一张叠得整整齐齐的纸——他一年前画的那棵树的复印件。他在纸的最下面添了一行字,递给小陈:
软件工程的所有管理实践,都是"人类协作 + 防错"的产物。 越往上,管的越不是代码,而是人和过程——从管代码,到管流程,到管团队,到管组织。
"记住这句话,你就拿到了管理的'地图'。"老周说,"以后不管遇到什么新框架、新流程、新工具——先问两个问题:它帮团队协作解决了什么麻烦?它帮团队防了什么错? 答案清楚了,它在你眼里就再也不神秘了。"
楼下传来实习生的声音:"陈哥!陈哥!帮我看看我这个 commit 为什么 push 不上去!"
小陈站起来,笑着下楼:"来了——来,我先教你一个词,叫'分支'……"
窗外,云间书店的灯还亮着。那块白板上的管理家族树,映着夜色,像一棵真正在生长的树。
全系列完。