修复所有 bug 并不能解决所有问题

原文:jeffpsherman - 2024.04.08 在软件领域,如同在制造业,有些问题是由于 bug 或“特殊原因”引发的,而有些则是“常见原因”,这是由于系统设计和实现的性质所导致的。修复 bug 就是移除特殊原因,消除 bug 可以极大地提升软件质量,但它并不会影响“常见原因”问题。 我遇到的一些“常见原因”导致软件的性能问题,包括: 软件……

阅读全文

理想的 PR 长度为 50 行

原文:Greg Foster - 2023.07.25 大多数工程师都有一种直觉,那就是小的代码更改总是比大的更好。逻辑论证也很简单——小的 pull requests 更容易 review,出现错误的可能性更小,从构思到部署的速度也更快。 关于这个问题,我很喜欢几篇论文 - 如果想进一步阅读,可以参考: Small patches get in! Do small code changes merge faster? A multi-language empirical investigation 但是,什么样的更改才算小呢?PR 会不……

阅读全文

加入新团队时,为什么你需要一个“WTF 笔记本”

原文:Nat Bennett - 2021.09.04 我有一个子弹日记。我并不是你在 Pinterest 上看到的那种用精美排版的人——大部分只使用黑色墨水,标准设置,偶尔会有自定义的集合。 每当我加入新的团队,都会翻到下一页,然后在那一页的顶部写上:“WTF——[团队名称]”。然后,每当遇到让我感到“WTF”的事情,或者我想要改变的事情,就添加一项。 前两……

阅读全文

大型组织的"死海效应" - 有才华的人可能会优先离去

原文:Bruce F. Webster - 2008.04.11 大型组织(无论是公共组织还是私营组织),都会在信息技术(IT)发展中遇到种种问题。我在这里和这里讨论过的一个问题,是如何找到并聘请最优秀的工程师。然而,即使找到并聘用了优秀的 IT 工程师,真正的问题是:你能留住他们吗? 在大型组织中,我注意到了一种反模式,并称之为“死海效应”。死海……

阅读全文

代码整洁?我后悔重构了代码

原文:Dan Abramov - 2020.01.11 那是一个深夜。 我的同事刚刚提交了他们一周编写的代码。我们正在开发一个图形编辑器的画布,他们实现了通过拖动边缘的小手柄,来调整形状(如矩形和椭圆)的大小的功能。 代码是有效的。 但是,它有些重复。每种形状(如矩形或椭圆)都有一组不同的手柄,每个手柄在不同的方向上拖动,会以不同的方式影响形……

阅读全文

XZ 被植入后门前发生了什么 - 开源项目互动的缩影

XZ Utils: 使用 LZMA 算法的开源数据压缩工具,被许多 Unix-like 系统(如 Linux、FreeBSD 等)和各种软件项目广泛采用。 事件: 微软工程师在 3 月 29 日发现,XZ 软件包含有恶意代码,用于供应链攻击。攻击者名为“Jia Tan”,是黑客团伙虚构的开发者,作为“间谍”,从两年前就积极为 XZ 项目做贡献,并逐渐取得了信任。 原文:Ro……

阅读全文

脚本应使用项目的主要语言编写

原文:João Freitas - 2024.03.24 这是我长时间以来的一个深感赞同的观点。 我参与过的几乎所有项目,都有我们编写的用于自动化重复性过程的脚本。然而,大多数脚本在几周后变得过时且难以维护,因为我们要么不再需要它们,要么它们变得过于复杂以至于难以理解。后来,这些脚本要么被重构,要么永远留在脚本墓地。 (永远别忘记向我们遗弃……

阅读全文

软件开发小故事 - 减少 2000 行代码

原文:Andy Hertzfeld - 1982.02 1982 年初,Lisa 软件团队正努力为接下来的六个月内,发布软件做大规模的准备。一些管理者认为,跟踪每个工程师每周写的代码量以衡量他们的进步是个好主意。他们设计了一种表格,工程师每周五都需要提交,其中一项是该周编写的代码行数。 Bill Atkinson,Quickdraw 的作者和主要用户界面设……

阅读全文

Redis 更新开源许可证 - 不再支持云供应商提供商业化的 Redis

原文:Rowan Trollope - 2024.03.20 未来的 Redis 版本将继续在 RSALv2 和 SSPLv1 双许可证下提供源代码的免费和宽松使用;这些版本将整合先前仅在 Redis Stack 中可用的高级数据类型和处理引擎。 从今天开始,所有未来的 Redis 版本都将以开源许可证发布。从 Redis 7.4 版本开始,Redis 将采用 Redis Source Available License (RSALv2) 和 Server Side Public License (SSPLv1) 双许可证。因此,Redis 将不再按照三条款版本的伯克……

阅读全文

Go 1.22 - 更加强大的 Go 执行跟踪

原文:Michael Knyszek - 2024.03.14 runtime/trace 包含了一款强大的工具,用于理解和排查 Go 程序。这个功能可以生成一段时间内每个 goroutine 的执行追踪。然后,你可以使用 go tool trace 命令(或者优秀的开源工具 gotraceui)来可视化和探索这些追踪数据。 追踪的魔力在于,它可以轻易地揭示出程序中那些难以通过其他方式看到的信息。例如,一个并发瓶颈……

阅读全文

最近文章

分类

标签

其它