编程与软件工程chriskiehl.com
我改变看法的软件工程话题
Software engineering topics I changed my mind on
2021 — 2022,它一次次回到首页
黑点是上首页(≥ 50 分)的那次投稿,空心点是没冲上去的投稿,点越大分数越高。
导读
作者 Chris Kiehl 回顾自己六年来改变过的软件工程观点,逐条反思那些曾被奉为准则的做法与教条。文中涉及过度设计/可扩展性、关系型数据库与 NoSQL、微服务、代码清晰度、面试、静态分析和测试覆盖率等话题。
为什么经久不衰:它不灌鸡汤,而是用多年经验反思常见工程教条,帮助读者在真实约束下做取舍、避免过度工程。
HN 评论精选
整体赞同,但认为站会的价值是全员沟通协调,而非监督新人。
我从没这么赞同过一篇博客,几乎每个要点都打 10 分。不过有一点异议:说站会主要用来盯着新人并不公平。只要保持简短,站会对整个团队沟通都有用——比如某位资深工程师正在解决的问题,另一位同事上个月已经踩过坑,站会正好让信息互通;这跟资历无关,沟通、协调和知识共享对各个层级都重要。
aerovistae查看英文原文
Have never agreed with a blog post more. Every single bullet point, 10/10. Okay, okay, actually I have one qualm~ > Standups are actually useful for keeping an eye on the newbies. Unfair. Standups are useful for communication between a team in general, if kept brief. If senior engineer X is working on Y and other engineer M has already dealt with Y (unbeknowst to X), it's a great chance for X to say "I'm currently looking for a solution to Y" and for M to say "Oh I had to solve that same problem last month!" Seniority has nothing to do with this. Communication/coordination/knowledge-sharing matter at all levels.
批评客户在小型内部系统上盲目上 DynamoDB 和微服务,忽视关系型能力与复杂度成本。
“不需要时设计可扩展系统会让你成为糟糕的工程师”和“一般来说 RDBMS 优于 NoSQL”这两条让我感触很深。我是顾问,很多客户坚持所有东西都用 DynamoDB;我在做一个内部应用,用户可能也就几百人,却为了拆成“微服务”绕了无数弯路。谁还需要 join、关系完整性和灵活查询?“它只要能扩展就行!”
cbdumas查看英文原文
> Designing scalable systems when you don't need to makes you a bad engineer. > In general, RDBMS > NoSql These two bullet points resonate with me so much right now. I'm a consultant and a lot of my client absolutely insist on using DynamoDB for everything. I'm building an internal facing app that will have users numbering in the hundreds, maybe. The hoops we are jumping through to break this app up into "microservices" are absolutely astounding. Who needs joins? Who needs relational integrity? Who needs flexible query patterns? "It just has to scale"!
资深开发者补充:以简单干净为准绳、推荐招聘很有效、追求“够好”而非过度拔高。
我有近 20 年职业经验,完全同意这份清单,还想补充几点:衡量代码的标准是“简单干净”,不简单干净就改到简单干净;面试确实坏掉了,但如果一个靠谱开发者推荐共事过的人,几乎可以直接录用;另外常提醒自己“够好就是够好”——门槛有时低有时高,但总要达到,也不必远超。
koonsolo查看英文原文
Almost 20 years of professional experience here: I fully agree with this list. I even want to add a few things: > Clever code isn't usually good code. Clarity trumps all other concerns. My measurement is "simple and clean" code. Is it simple and clean? No? make it so! > After performing over 100 interviews: interviewing is thoroughly broken. I also have no idea how to actually make it better. If a good developer you know, recommends someone they worked with: It's almost an instant hire. But for the rest, yeah, it's incredibly tough. One last thing I like to remind myself: "Good enough is always good enough". Sometimes "good enough" has a low bar, sometimes high. You always need to reach it, but never want to go too far above it.
提醒不要用事后视角苛责旧代码,工程决策受当时约束,未必有唯一正确做法。
工作 15 年后,我不再评判过去的代码决策;早点明白这点能少很多痛苦。你不知道前一个人当时受什么约束,也就不可能知道自己会怎么做、“本应”怎么做。我提这点是因为文章仍有一种“写代码大致只有一种正确方式”的语气,我很怀疑。现在做好选择,但别苛责前人。
TameAntelope查看英文原文
After 15 years, I no longer judge past coding decisions, and I think you can save yourself a lot of grief by not waiting as long as I did to realize this. You don’t know the constraints the previous person was under, so you can’t possibly know what you really would have done or what “should” have been done. I mention this because there’s still a tone of, “there is approximately one right way to code” in this article, and I really doubt that. Make good choices now, but don’t be harsh to the folks who came before you.
历次讨论
同类还值得读
开源应用架构
The Architecture of Open Source Applications
《开源软件架构》(AOSA)是一本在线免费书,邀请知名开源项目的作者亲自剖析其内部设计,涵盖 SQLAlchemy、LLVM、Audacity、Apache、Bash 等系统。
编程与软件工程上首页 9 次 · 2011–2024aosabook.org编辑精选编程语言简史:简短、不完整且多半错误
A Brief, Incomplete, and Mostly Wrong History of Programming Languages
一篇以戏谑、故意不准确的方式回顾编程语言史的博客文章,用夸张轶事和讽刺定义串起 Lisp、C、C++、Java、JavaScript、PHP 等语言。
编程与软件工程上首页 8 次 · 2009–2021james-iry.blogspot.comSQLite 是如何测试的
How SQLite is tested
SQLite 官方文档页,系统介绍 SQLite 的测试体系:多种测试方法(TCL 测试、模糊测试、回归测试、静态分析等)和海量测试用例,展示了这个小型开源项目如何靠极致测试获得…
编程与软件工程上首页 8 次 · 2009–2025sqlite.org编辑精选高级编程语言(2009)
Advanced programming languages (2009)
Matt Might 的经典文章,按用途推荐“高级编程语言”:如果追求就业就选主流语言,如果追求表达力、学术研究或创业,则推荐 Haskell、OCaml、Scala 等函数式语…
编程与软件工程上首页 8 次 · 2009–2022matt.might.net我的 Forth 与栈机器经历
Yosefk - My history with Forth & stack machines
作者以亲身经历回顾了使用 Forth 语言和栈式机器的历程:既赞叹其简洁优雅、代码量小、可自举的优点,也坦率指出栈操作在实际编程中的痛苦,以及 Forth 社区文化中的问题。
编程与软件工程上首页 8 次 · 2010–2024yosefk.com编辑精选