~/原则
工程原则
这些不是规则,而是多年构建(和搞坏)系统换来的信念——随时可能被下一个代码库或下一次失误改写。
- 01
默认选择成熟的技术
除非有真正的理由,否则就选那件久经考验的工具。新奇是一笔税,每一位未来的贡献者都得缴——包括未来的你自己。把兴奋留给真正要解决的问题。
- 02
清晰胜过炫技
代码被阅读的次数是编写次数的十倍。一行“魔法”就是未来的一个 bug——写出一目了然的版本,给变量起个好名字,把类型留着,然后继续往前走。
- 03
小步交付,频繁交付
大批量的改动会藏住大 bug。每天交付的改动,就是每天都在接受检验的改动。把流水线搭好,让一行的修复在午饭前就能上线到生产环境。
- 04
测试就是文档
测试向每一位读者说明代码应该如何运行。要写读起来像规格说明的测试,而不是对实现细节的断言。
- 05
删的代码比写的多
每一个死分支、每一个没人用的辅助函数、每一层包着包装器的包装器——统统删掉。我经手过最健康的拉取请求,代码行数都是净减少的。
- 06
系统也关乎人
每一个架构决策都在塑造团队的工作方式。选择那些能让新人快速上手、让归属清清楚楚、让周五下午风平浪静的抽象。
- 07
可观测性本身就是功能
如果你看不到它在运行,你就并不真正掌控它。日志、指标、链路追踪——从第一天起就接好,而不是在第一次事故之后才临时补上。
- 08
去读源码
Stack Overflow 是起点,不是终点。真相藏在库的源码里——读得越多,你解决之后每一个问题的速度就越快。
- 09
好奇心没得商量
我最敬佩的工程师总是忍不住去东戳戳、西探探。每天留出一段受保护的时间,去学一点项目并不严格需要的东西。
- 10
有时候——故意把东西搞坏
对一个不是你写的系统做渗透测试,教会你的关于自己代码的东西,比任何一次代码评审都多。周六用攻击者的思维,周一工程师的思维才会更敏锐。