quality software
intro⌗
I’ve always found describing a software quality as rather obscure, since different programs use different metrics.
For example, video editing software quality is measured by how many features does it have. Games are measured by their graphics, and performance(but mostly the former(.
However all software has 5 generic metrics, by these metrics you can determine if your sofware is quality grade or not!
stableness⌗
If a program is in production and is not stable, then it’s automatically garbage. By far this is the most important trait of good software.
And thanks to modern programming languages and operating systems, this comes automatically free of charge.
ease of modification⌗
An ugly program deemed by the developer is a useless program. All programs need to be extensible, the path of adding more features(if necessary) should be relatively easy.
Bonus: Your software should encourage newcomers to contribute and improve upon it.
performant⌗
Your software should not disappoint in terms of performance, it should be as performant as other software in that field(or if possible improve upon them).
For example, take the game .kkrieger
. It’s a 3d first person shooter game that clocks in 96KB of space.
Released in 2004, this game easily out ranks other games in that time in terms of minimum space consumption.
The game does this by storing assets in their creation history rather than instead of a per-pixel basis. Without this method of storage the game’s size would be 300MB.
ease of deployment⌗
Good software needs to be easily deployable, both from a developer and user standpoint.
Languages that use cross platform compilation, single binary distribution make this metric easily achievable, as well as universal platforms such as the web.
When using authentication, try to make the process as accessible, and simple as possible.
ecosystem integration⌗
Integration is a critical part of good software, a text editor that cannot open/save files is rather useless.
Whenever possible your software should improve the ecosystem, and sometimes become its own ecosystem.
Software that becomes its own ecosystem, usually becomes vital to that field. Think about the adobe suite and how impactful it is to the digital artist, or outlook 360/google workspace and how necessary it is to businesses…
bonus: single purpose⌗
Computers were made to solve problems that mankind could not. Therefore quality software should solve a single specific problem very efficiently.
A single purpose helps the software creator know what features to keep and what features to remove.
Preferably, your software should set a new metric in how other software in that field is compared.