PinnedPinnedPrivate
herbcaudill.com

老项目是否应该推倒重写?

不一定,老项目最不该因为代码难看就推倒重写。网景在浏览器大战中选择重写,三年后交付缓慢又多漏洞的新版本,市场份额已经被 IE 吃光;技术上后来孕育了 Gecko 和 Firefox,商业上却等同自毁。Basecamp 的相反经验说明,重写能成功的前提不是复制旧系统,而是承认问题、用户和产品判断已经变了。Basecamp 2 删除旧功能、放弃完全兼容,把它当成新产品;同时不强迫老客户迁移,继续维护 Classic。真正的判断标准是:重写是否带来新的产品自由,是否能在有限时间交付,是否尊重既有用户的工作流。否则,重写只会把公司拖进漫长的暂停,既丢掉未来,也消耗现在。代码债只是线索,不是理由;产品债和用户迁移成本才是关键。

PinnedPinnedPrivate
medium.com

6个软件重写故事的教训

软件重写不能被简单判成禁忌,也不能被当成摆脱遗留代码的万能出口。网景的失败说明,从头重写会吞掉多年时间,让产品停滞、竞争对手追上来,还可能丢掉旧代码里积累的边界案例和用户习惯。Basecamp的成功则说明,有些重写并非因为代码腐烂,而是因为既有用户和既有产品形态把团队锁住,任何改动都会伤害现有工作流,导致产品逐渐只服务过去的客户,不再吸引未来客户。真正的问题不是“要不要重写”,而是现有系统的限制来自哪里:技术债、架构错位、过时平台、招聘困难、产品方向冻结,还是用户迁移成本。可选路径也不只有渐进重构和完全推倒重来,还包括并行新版本、分模块替换、保留旧产品服务老用户、用新产品验证新市场。重写应当服务清晰的业务目标,并承认迁移、功能缺失和时间窗口的代价。若只是厌恶旧代码,重写多半会失败;若旧产品已经阻止公司面向未来,干净的新起点可能反而更诚实。