看到不错的文章 翻译分享一下
原文:
https://chriskiehl.com/article/thoughts-after-6-years
翻译:
软件开发六年后我改变想法的事情:
- 如果你的队友经验参差不齐,Typed languages 是比较好的选择
- Standups 会议以注意新人来说是有用的
- Sprint retrospectives 如果拿来做真正的流程修正(course correction)是有用的;
而不是一些敏捷/scum master 拿来浪费大家时间的
- 软件架构比啥都重要。有好的抽象再烂的实作都不太会弄脏 code base;烂抽象或
missing layer 可以让 code base 变成一坨屎。
- java 没那么烂
- Clever code 通常不是什么好 code;清晰好读(Clarity)的 code 最重要
- 烂 code 可以被以任何方式写出来 (in any paradigm)
- 所谓的 best practices 是要看上下文,并非通用解。盲目追求会让你看起来像白痴
- 在你不需要时硬去设计一个 scalable system,你就是烂工程师
- Static analysis 有用
- DRY(dont repeat yourself) 是为了避免特定问题,并不是最终追求目标。
- 一般来说 RDBMS > NoSql
- Functional programming 是另一个工具,不是万用解/灵丹
一路走来坚持的观念
- YAGNI, SOLID, DRY 请按造这个顺序
- YAGNI:You aren't gonna need it
- SOLID: 某个 OO 原则(单一功能、开闭原则、里氏替换、接口隔离、依赖反转)
- DRY: dont repeat yourself
- 纸笔是最好的开发工具但很少人用
- 用干净/可读(purity)为代价换取实用性是个好方法
- 狂导入额外的技术不是好方向
- 直接跟客户/需求端理解需求会比较快又精确
- "scalable"这个词在码农中有股神秘的力量,仅仅这个字可以让他们陷入疯狂,然后仅
仅为了这个字可以做出疯狂的设计
有点难翻XD 原文:
The word "scalable" has a mystical and stupefying power
over the mind of the software engineer.
Its mere utterance can whip them into a depraved frenzy.
Grim actions have been justified using this word.
- 虽然叫工程师,但其实很多决策都是跟风(cargo-cult),并不是有严谨的分析、资料数
据佐证
- 大概九成的 PM 明天消失对你都没影响,甚至效率还会变好
- 当我做了一百场面试后: 面试方法彻底崩坏,我也不知道怎么做更好
没变的观念
- 会刁 code style, linting rules 或枝微末节的都怪咖
- Code coverage 跟 code 品质完全没差
- Monoliths (大概指微服务的反面)系统在大部分情境都是很好的
- TDD 主义者(purists)是最糟糕的存在,他们的脑不能理解现实中存在不同的 workflows