What Makes Software Good

2024

Developers paying attention

Design is in the details. Does text have enough contrast? Do animations run at 60fps? Are colors consistent? Are interface elements properly labeled for accessibility?

Having thoughtfully answered questions like these puts an application into a different tier.

Developing with intention

It's easy to build features. It's hard to take them away.

Quality software knows when to stop adding features. It knows when something works well. It isn't afraid to remove things that no longer serve the broader vision.

Animation, iconography, and color should be used with intent—not because it looks nice, but because it communicates something meaningful.

Respecting people's attention

People are busy. Software is usually a means to an end, not the end itself.

Quality software:

  • Is fast. Data is cached. First paint feels instant.
  • Makes optimistic guesses to pre-fetch and pre-render
  • Communicates status when it can't be fast
  • Uses sensors and heuristics to improve the experience
  • Respects privacy and uses minimum necessary data

Understanding people's intentions

Quality software considers context. Are they walking? Distracted? Hands-free? Do they have a fast connection?

It provides prominent, conveniently-placed actions for users on the go. It uses clear typographical hierarchy. It adapts to any input mechanism: touch, keyboard, voice, pointer, screen reader.

Quality software is forgiving. Destructive actions are easily undoable. Errors provide clear reasons and never dead ends. Invalid inputs are highlighted. Failed requests are retried.

I know it when I see it

Like a smudge on the wall, we notice quality more by the presence of imperfections than by their absence. For this reason, it's hard to articulate why something is high quality. We feel it.

Where is the high quality software?

It can be disenchanting to look at the current landscape. Computers get better hardware, we build more resource-hungry software, and things never actually get faster.

But I predict a shift: more creators moving away from must-scale-to-billions mentality toward building for thousands of people in a deeply personal, high-quality way.

A healthy income and a happy life can exist with a thousand customers, not a billion.


Quality internal software often correlates with high quality user experience. We should strive for both.