Software quality it is not only a thing you can see like beautiful user interface or things you can measure like response time, number of incidents, recovery time, throughput, tests coverage or unavailability (sometimes called SLA) etc.
High-quality software is more than that:
- architecture tailored to technical and business needs
- common understanding of architecture – what problem solves, advantages and disadvantages
- key decisions in the project written down and justified
- proper code architecture
- code that is easy to read and understand
- code that reflects the intention and business requirements
- constantly adjusting architecture and code to new and changing requirements
- tests that give you confidence (if we break something, the tests will detect it)
- tests covering business rules
- appropriate domain division into subdomains and functionalities
- teams responsible for individual subdomains/functionalities/business processes
- autonomous teams with all the required competences (skills and knowledge, in particular domain knowledge)
- defined and documented responsibilities of microservices / modules
- documented business rules and processes
- documented, simple and clear procedures and processes of software building
- organizational culture supporting the care of high quality
- sharing knowledge, experience and problems, especially within the project
- good working atmosphere – mutual help and psychological safety – talking without fear of problems and failures
- when people say: I like working here
Wow so many things, but it’s still not a complete list. At least you have some feeling what quality means in the IT world.
You can use the above points as a starting point for best practices to help you create high-quality software.