我的软件北极星
摘要
作者提出了一套软件开发的优先级列表:对最终用户的有用性、正确性、可维护性和效率,认为所有工作都应致力于最大化用户效用。
<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)方法,作为软件开发中快速粗糙与过度工程之间的中间道路,提倡满足当前产品需求的简单性。
软件关乎人,而非代码(2020)
一篇论述软件成功更多取决于理解人及其需求,而非编写完美代码的文章,并以被遗弃的、未解决实际问题的代码库为例。