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 that your project has no bugs if it’s a rugpull, or you’re otherwise working on user-hostile software. It doesn’t matter that the language you use is memory-safe , if you didn’t design for correctness or have no process that will eventually lead you to fixing all bugs . It doesn’t matter that your software is a beautiful canopy of abstractions , if it’s unbearably slow or nobody is able to maintain it, let alone add new features.…