我的软件北极星
摘要
作者提出了一套软件开发的优先级列表:对最终用户的有用性、正确性、可维护性和效率,认为所有工作都应致力于最大化用户效用。
<p><a href="https://lobste.rs/s/g6lkw1/my_software_north_star">评论</a></p>
查看缓存全文
缓存时间: 2026/06/03 21:49
# 我的软件北极星
来源:https://kristoff.it/blog/north-star/
在我制作软件时,这是我的优先级排序列表:
1. **软件应对最终用户有用**,并努力成为**你能够爱上的软件**(https://softwareyoucan.love/)。
2. **软件应具有正确性**,因为故障软件会削弱用户能从中获得的实用性。
3. **软件应具备可维护性和高效性**,以免在试图从中获取更多价值时浪费人力和计算资源。
如果你的区块链没有漏洞,但它是一场“抽地毯”骗局¹(https://kristoff.it/blog/north-star/#fn-1),那也无济于事。
如果你的语言是**内存安全**的(https://joshlf.com/posts/memory-safety-life-and-death/),但你并未**为正确性而设计**(https://tigerstyle.dev/),也没有一个能最终**修复所有漏洞**的过程(https://kristoff.it/blog/fix-your-asserts/),那也毫无意义。
如果你的软件是一个**美丽的抽象层华盖**(https://www.youtube.com/watch?v=wo84LFzx5nI),但运行起来像坨屎,且无人能维护,更别提添加新功能了,那同样毫无意义。
*有时我会力竭,有时会走错路,有时还会故意绕道而行,但没人能骗我把次要的星星误认为真正的目的地:我确实关心自己的开发者体验,但仅仅局限于它帮助我交付更多你能够爱上、我和他人也能享受的软件这一精确范围内。*
最终目标是最大化对最终用户的实用性;其他一切的存在都是为了服务这一目标,而这正是我制作软件的北极星。
相似文章
快速软件,最佳软件
一篇论述快速软件对用户信任与满意度至关重要的文章,通过nvALT和Ulysses等示例,阐明了速度的优势以及缓慢的弊端。
迈向可理解的软件
本文批判了当前的编程实践和对大语言模型的依赖,反而主张通过更好的抽象、文档和软件栈来使代码更易于理解和维护。
当前最佳简单系统
Dan North 提出了“当前最佳简单系统”(BSSN)方法,作为软件开发中快速粗糙与过度工程之间的中间道路,提倡满足当前产品需求的简单性。
@dabit3:小而美的参考:56 条软件工程法则,对新人尤其友好(建议收藏),我也学到不少…
为初级开发者精选的 56 条软件工程法则,详见 lawsofsoftwareengineering.com。
软件质量笔记
一篇关于软件质量的博客文章,探讨其定义、通用信号、益处及常见误解,认为质量是一个光谱,并且随着规模扩大而变得更加困难。