My Software North Star
When I make sofware, 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 rugpull1.
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.
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.
1