Three principles to live by:
Humans come first. Software exists to serve humans, not the other way around. Design software for your end user, because they are holy and nothing else is sacred.
Pragmatism over purism. Consider for whom you’re optimizing, not for what ideal. Software ideals are false gods when they don’t serve the humans they’re meant to reflect. Choose the most pragmatic implementation over the most correct one.
Simplicity over complexity. The elegance of complex systems is a dangerous mirage. Complex systems are more difficult to maintain over time, more difficult for new people to understand, and more likely to succumb to entropy. Only choose complexity when it yields significant, durable advantages.