Когда я делаю софт, у меня чёткая иерархия приоритетов. Первое — программа должна быть полезна конечному пользователю и стремиться стать тем, что можно полюбить. Второе — корректность: баги отнимают пользу, которую люди могли бы получить. Третье — поддерживаемость и эффективность: нерационально тратить человеческие или вычислительные ресурсы, пытаясь выжать из программы больше пользы.
При этом не имеет значения, что в проекте нет багов, если это обман пользователей или откровенно враждебный софт. Не имеет значения, что ты используешь memory-safe язык, если не проектировал код с расчётом на корректность и у тебя нет процесса, который рано или поздно приведёт к исправлению всех дефектов. Не имеет значения, что твоя кодовая база — красивейший canopy of abstractions, если она невыносимо медленная или никто не в состоянии её поддерживать, не говоря уже о добавлении новых фич.
Иногда я выдыхаюсь, иногда сворачиваю не туда, иногда специально делаю крюк. Но никто не собьёт меня с пути: да, мне важно, чтобы разработка приносила удовольствие, но ровно настолько, насколько это помогает создавать больше программ, которые ты полюбишь, и которыми я и другие с радостью будем пользоваться. Конечная цель — максимизировать полезность для конечного пользователя. Всё остальное работает на эту задачу. Это моя путеводная звезда.