My Software North Star
My Software North Star
我的软件北极星
When I make software, this is my sorted list of priorities: 当我开发软件时,这是我按优先级排序的准则:
Software should be useful to the end user and strive to become software you can love. 软件应当对终端用户有用,并努力成为用户所喜爱的软件。
Software should be correct, as malfunctioning software detracts from the utility users can derive from it. 软件应当是正确的,因为运行异常的软件会削弱用户从中获得的效用。
Software should be maintainable and efficient, in order to avoid wasting human and computational resources when trying to get more utility out of it. 软件应当易于维护且高效,以避免在试图挖掘更多效用时浪费人力和计算资源。
It doesn’t matter if your blockchain has no bugs, if it’s a rugpull. 如果你的区块链项目是个骗局(rugpull),那么它有没有 Bug 根本不重要。
It doesn’t matter if your language is memory-safe if you didn’t design for correctness and have no process that will eventually lead you to fixing all bugs. 如果你的编程语言在设计时未考虑正确性,且没有一套能最终修复所有 Bug 的流程,那么它是否内存安全也无关紧要。
It doesn’t matter if your software is a beautiful canopy of abstractions, if it runs like shit and nobody is able to maintain it, let alone add new features. 如果你的软件运行起来像坨屎,没人能维护它,更别提添加新功能了,那么它拥有多么华丽的抽象架构也毫无意义。
Sometimes I run out of steam, sometimes I go down the wrong path, and some other times I deliberately take detours, but nobody can trick me into mistaking lesser stars for my true destination: I do care about my own developer experience, but only in the exact measure that it helps me deliver more software you can love that I and others can enjoy. 有时我会精疲力竭,有时会误入歧途,有时也会故意绕道,但没人能诱导我将次要的目标误认为真正的终点:我确实在意自己的开发者体验,但前提是它必须能帮助我交付更多让大家喜爱、让我和他人都能享受的软件。
The ultimate goal is to maximize utility for the end user; everything else exists in service of it, and that’s my north star for making software. Or you’re otherwise working on user-hostile software. 最终目标是最大化终端用户的效用;其他一切都为此服务,这就是我开发软件的北极星。否则,你就是在开发对用户不友好的软件。