原文链接:我对软件开发的一些看法(英文)
作者总结在软件行业工作多年以后,哪些看法改变了,哪些看法没有改变。一共罗列出近 30 条观点,值得一看。
原标题:Software development topics I’ve changed my mind on after 6 years in the industry
发表日期: 2021-01-23
以下内容为我结合原文做的翻译:
Things I’ve changed my mind on:
(我改变想法的事情)
Things I now believe, which past me would’ve squabbled with:
我现在开始相信的事情,过去我可能还会争论:
- Typed languages are better when you’re working on a team of people with various experience levels 当你在一个由不同经验水平的人组成的团队中工作时,类型语言会更好
- Standups are actually useful for keeping an eye on the newbies. 支架实际上对于监视新手很有用
- Sprint retrospectives have their place so long as they’re for actual course correction (i.e. “holy shit, 斯普林特回顾只要是为了实际的路线修正(比如“我的天哪,that 那个 went poorly!”) and not some god awful ‘agile’ / ‘scum master’ driven waste of everyone’s time 而不是那些浪费大家时间的可怕的“机灵鬼”或者“渣滓老爷”
- Software architecture probably matters more than anything else. A shitty implementation of a good abstraction causes no net harm to the code base. A bad abstraction or missing layer causes everything to rot. 软件架构可能比其他任何东西都重要。一个好的抽象的劣质实现不会对代码基造成净损害。一个糟糕的抽象或缺失的层导致一切腐烂
- Java isn’t that terrible of a language. Java 并不是那么糟糕的语言
- Clever code isn’t usually good code. Clarity trumps all other concerns. 聪明的代码通常不是好的代码,清晰度胜过所有其他的问题
- Bad code can be written in any paradigm 糟糕的代码可以在任何范例中编写
- So called “best practices” are contextual and not broadly applicable. Blindly following them makes you an idiot 所谓的“最佳实践”是有前因后果的,而不是广泛适用的。盲目地追随它们会让你变成一个白痴
- Designing scalable systems when you don’t need to makes you a bad engineer 当你不需要设计可伸缩的系统时,设计可伸缩的系统会使你成为一个 糟糕的工程师.
- Static analysis is useful 静态分析是有用的
- DRY is about avoiding a specific problem, not an end goal unto itself. Don’t Repeat Yourself 是关于避免一个特定的问题,而不是自身的最终目标
- In general, RDBMS > NoSql 一般来说,关系型数据库管理系统 > 非关系型
Functional programming is another tool, not a panacea. 函数式编程是另一种工具,而不是万能药
Opinions I’ve picked up along the way
(一路走来,我总结出一些观点)
YAGNI, SOLID, DRY. In that order. You aren’t Going to Need It,,SOLID,DRY,按照这个顺序
- Pencil and paper are the best programming tools and vastly under used 铅笔和纸是最好的编程工具,但很少被使用
- Trading purity in exchange for practicality is usually a good call 用纯洁来交换实用性通常是个好主意
- Adding more technology is rarely a good call 增加更多的技术很少是一个好主意
- Talking directly to the customer always reveals more about the problem, in less time, and with higher accuracy 直接与客户交谈总是能在更短的时间内,以更高的准确性,揭示更多的问题
- 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 “ scalable”这个词在软件工程师的头脑中有一种神秘的、令人目瞪口呆的力量。它仅仅是一句话就能使他们陷入堕落的疯狂之中。用这个词来形容残酷的行为是合理的
- Despite being called “engineers,” most decision are pure cargo-cult with no backing analysis, data, or numbers 尽管被称为“工程师”,大多数决定是纯粹的货物崇拜,没有支持分析,数据,或数字
- 90% -maybe 93% – of project managers, could probably disappear tomorrow to either no effect or a net gain in efficiency. – 90%_也许_93% 的项目经理,可能明天就会消失,效率或净增加
After performing over 100 interviews: interviewing is thoroughly broken. I also have no idea how to actually make it better. 在进行了100多次面试之后: 面试彻底失败了,我也不知道如何让它变得更好
Old opinions unchanged:
(旧观点不变)
People who stress over code style, linting rules, or other minutia are insane weirdos 那些在代码风格、 linting 规则或者其他细节上过分强调的人都是疯狂的怪人
- Code coverage has absolutely nothing to do with code quality 代码覆盖率绝对与代码质量无关
- Monoliths are pretty good in most circumstances 在大多数情况下,整块石头都是相当好的
TDD purists are just the worst. Their frail little minds can’t process the existence of different workflows. TDD 纯粹主义者只是最糟糕的.他们脆弱的小头脑无法处理不同工作流程的存在
We’ll see which of these have flipped or changed at year 10.
我们将在第10年看到其中哪些发生了翻转或改变。