本文目录导读:

- 核心争议:重构 vs. 缝缝补补(技术债的清算)
- 次核心争议:PHP版本与扩展的“升级阵痛”
- 隐性争议:开发环境统一性的“内耗”
- 最尖锐的“人祸”争议(往往不摆在明面上)
- 总结:项目复盘中真正达成的共识(如果有的话)
在PHP项目的复盘中,“最大争议”通常不是某个单一的技术问题,而是技术路线选择”与“历史债务”之间的激烈冲突。
根据大量真实项目的复盘报告(尤其是中小型企业和外包项目),最大的争议往往集中在以下三个核心矛盾点,其中第一点通常是导火索:
核心争议:重构 vs. 缝缝补补(技术债的清算)
这是最普遍、最激烈的争议。
- 争论焦点:面对运行了3-5年的老PHP项目(如ThinkPHP 3.x -> ThinkPHP 6.x,或CodeIgniter 2.x -> Laravel),是停下来花2个月全面重构(升级框架、引入Composer、改MVC架构),还是继续在原架构上打补丁(加字段、改SQL、写新接口)?
- 矛盾点:
- 产品/业务方:强烈反对重构,理由是“业务连续性第一”、“重构期间没新功能,竞争对手会赶超”、“重构工期不确定,成本太高”。
- 技术/开发方:坚决要求重构,理由是“老代码像‘屎山’,改一行崩三行”、“没有人能看懂那3000行的
index.php”、“技术债利息已经压垮了开发效率”。
- 复盘结论:通常以“渐进式重构”作为妥协结果,但争议的阴影(谁该为最初的草率架构负责)往往贯穿整个项目周期。
次核心争议:PHP版本与扩展的“升级阵痛”
- 争论焦点:是否必须升级到 PHP 7.4/8.0+ 并启用 JIT?
- 矛盾点:
- 保守派:认为现有 PHP 5.6 跑得好好的,升级后老插件的兼容性问题(如 Redis 扩展、老的加密库)会带来未知风险,且服务器内存占用变大。
- 激进派:认为不升级就无法使用
match语法、强类型声明和性能倍增(PHP 7 比 5 快 2-3 倍),且安全漏洞(如已知的CVE)会对线上数据造成威胁。
- 复盘无奈:很多时候,项目卡壳不是因为写不出代码,而是因为“升级依赖库导致业务流程某个边缘功能突然不可用”,这种问题最耗费时间,也最容易引发复盘时的互相指责。
隐性争议:开发环境统一性的“内耗”
- 争论焦点:为什么“在我电脑上运行得好好的,上传到服务器就报500错误”?
- 矛盾点:
- 老员工:习惯用 Win + phpStudy(Windows本地联调)。
- 新员工/主力:坚持用 Docker + Homestead/Laradock(Linux容器化环境)。
- 复盘结果:这种争议实际上暴露了“项目初始化时的标准化缺失”,由于没有统一的CI/CD流程和
env配置管理,导致环境配置差异成为开发效率的隐形杀手。
最尖锐的“人祸”争议(往往不摆在明面上)
在复盘的“责任归属”部分,最大的暗雷是滥用全局变量和魔法函数。
- 比如某老PHP项目中,
mysql_connect到处都是,且没有连接池概念。 - 当高并发来袭时,数据库连接被打爆,复盘时,技术老大会指责“架构设计时没有考虑高可用”,而具体开发会反驳“当初业务量就那么点,是后来业务乱扩张才这样”。
项目复盘中真正达成的共识(如果有的话)
无论争议多激烈,成功的复盘最终都会指向一个终极结论:
“最大的问题不是技术选型,而是没有在项目初期明确《技术规范》并严格执行。”
- 如果当初强制要求使用 Composer 管理依赖,就不会有现在复杂的
vendor目录冲突。 - 如果当初强制要求写单元测试和接口文档,就不会出现后期“动一个类方法导致两个页面崩溃”的惨剧。
抢答一下: 如果你正在写这个复盘,建议你写“对扩展性预估不足”作为争议点,因为这是对所有不愉快最温柔的背锅侠,且极易让管理层共情。