工程师思维是"承认现实、量化代价、做可逆的决策"。
它跟科学家思维(追求真理)和艺术家思维(追求表达)不一样,工程师永远在 "在给定条件下,造出一个够用、能活、可演进的东西"。
1. 把模糊变成可定义的
遇到问题先不急着动手,先问:"到底要解决什么?成功长什么样?" 把一句抽象的抱怨("这东西不好用")拆成可验证的条件。没有定义清楚的问题,是无解的。
2. 约束优先,而不是方案优先
工程师不追求"最好的方案",而是追求 "在这些约束下的最优解" ——时间、成本、人力、性能、可维护性。任何脱离约束谈的"最佳实践"都是耍流氓。
3. 权衡(trade-off)是常态
没有免费的午餐。加了缓存就要处理一致性,抽象层多了就损失性能,灵活性高了维护成本就高。工程师不找"完美解",找 "我能接受的代价"。
4. 可验证、可回退、可观测
- 怎么知道它对?(测试)
- 出事了怎么办?(回滚、降级)
- 线上发生了什么?(日志、监控)
不能验证的东西,等于没做;不能回退的改动,等于赌博。
5. 把成本分摊到未来
短期省事 vs 长期债务,工程师要有 "复利感" ——重复三次以上的事要自动化,会再看的代码要写注释,会被再读的决策要留文档。
6. 谦卑 + 怀疑
- 代码八成是错的,直到它被测通过
- 自己的假设八成是错的,直到数据证明
- 别人的系统不是傻逼设计的,看不懂先假设是自己没理解到位
7. 奥卡姆 + YAGNI
能简单就别复杂,能不写就别写。今天还用不到的灵活性,就是明天的维护负担。