I build software for a living. A critical part of my job is understanding what quality software looks like. In my experience, great software always has these qualities: functionality, reliability, security, and usability.

Functionality

This is the gateway to your product: a promise of improvement. Your software should serve some function for your user or customer. Does your product do what it’s supposed to? Does it function as advertised? Is it better than the competition?

Reliability

Bugs and downtime are the a hallmarks of a poorly built product. Reliability can make or break your reputation. Does your software work consistently? Does it have bugs? Can it be quickly and easily maintained?

Security

We expect software to be secure and respect our privacy. We expect companies to seek out and address security vulnerabilities. How does your product keep data safe? Does your business model rely on selling data? Who has access to the data? How can users report vulnerabilities they discover?

Usability

You can nail the other qualities and ruin your product with a thoughtless user experience. Software ought to be intuitive and well documented. Consider the experience for new and seasoned users. Is your product usable? How does it feel to use? Are its features discoverable? Does it fit into your customer’s workflow or lifestyle?