用了两年 Rails,我为什么回到 PHP
7 reasons I switched back to PHP after 2 years on Rails
这是导读,不是翻译。先用 5 分钟拿到这篇的核心,值得的话再去读 英文原文 →
核心观点
西弗斯回顾 CD Baby 用 Rails 全盘重写的失败:两年后连一半都没完成。他改用 PHP 独自从零重写,两个月就上线,还带上了从 Rails 学到的设计思想。他的结论是语言没那么重要,关键在实际需求与程序员本身。
要点
- 一次性推倒重来风险极高,渐进替换更稳妥
- 别让框架的偏好压过业务的真实需要
- 只保留必需的代码,小而快的系统最舒服
- 嫌旧代码丑,常常只是因为当年的你水平更低
"Is there anything Rails can do, that PHP can’t do?" —— Derek Sivers,查看原文 →
写作背景
写于 2007 年,他还在全职经营 CD Baby,公司有 85 名员工。这次重写是他当时最自豪的成就,但几个月后他发现,2008 年的计划没有一项让他兴奋,随即卖掉了公司。这篇因此成了他「程序员老板」时期的收官之作,也埋下他后来一贯的技术观:少依赖框架、贴近 SQL、逻辑放进数据库、只写必要代码。
对你意味着什么
这篇写于 2007 年,却仍适用于今天“要不要用新框架重写”的争论。重写前先问:新技术能做什么旧技术做不到的?如果答案是没有,就把新学到的思想用来改造旧系统,分批上线。
这周就能做
- 重写前写下新技术能做、旧技术做不到的事,列不出来就别重写。
- 把重写拆成可分批上线的模块,定出两周内上线的第一批范围。
- 回看一段一年前的代码,列出现在会改的三处,分清进步的是你还是工具。
局限与反方
他能两个月独自重写,是因为他本人最懂业务,又吸收了两年失败的全部教训,这份条件不可复制。「语言不重要」在个人项目里成立,在团队里却很难:招聘、生态、安全更新、他人接手都依赖主流框架,自研小框架可能变成只有作者能维护的孤岛。国内团队尤其看重可招人、可交接。
放在一起读
- 我是怎么知道该卖掉公司的 —— 重写完成几个月后,他决定卖掉公司
- 怎么学 JavaScript:先吃透原生,别急着上框架 —— 先吃透原生再上框架,同一技术观的延续
- 化繁为简:把代码搬进数据库函数 —— 把逻辑搬进数据库,他后来走得更远
- 永远活在明天 —— 反方:永远拥抱最新的东西,与过去切割