¿Cuál es la diferencia entre software bueno y malo?

¿Quieres decir en términos de comentarios? Varios aspectos necesitan ser satisfechos.
Cuando reviso, tiendo a dar a cada uno de los siguientes aspectos un puntaje de 1 a 5, y la calificación promedio final me dice si es “bueno” o “malo”.

Funcionalidad: ¿hace el software lo que se espera de él?
Eficiencia: ¿lo hace de manera eficiente, desperdiciando cantidades mínimas de recursos del sistema y el tiempo del usuario?
Estética: ¿lo hace siendo intuitivo y agradable a la vista?
Estabilidad: ¿hace lo que se espera de él de manera confiable, sin fallar o fallar?

Veamos un ejemplo.

Oficina abierta
Funcionalidad 4/5
– hace la mayoría de lo que los usuarios esperan que haga sin fallas, con problemas menores de compatibilidad con Microsoft Office, a pesar de que se anuncia la compatibilidad total.

Eficiencia 1/5
– funciona con JVM y, como tal, es un cerdo de memoria que tarda años en iniciarse. Además, se ralentiza hasta detenerse después de varias horas de uso, y con frecuencia debe reiniciarse. Los disparadores de eventos son lentos, los clics tienen retrasos y otras aplicaciones que usan JVM a veces pueden contribuir a una desaceleración de OO. Si bien esto puede ser un error de una implementación particular de JVM, el hecho de que OO se ejecute no lo justifica. 1/5

Estética 3/5
– No es ni aquí ni allá. Por un lado, el diseño de la interfaz de usuario es mucho mejor que el de la caótica MS Office 2010. Por otro lado, la interfaz de usuario de estilo de los años 90 es francamente fea.

Estabilidad: 2/5
– al ejecutarse en JVM, con frecuencia se bloquea y se congela, como suelen hacer las aplicaciones Java. Si bien no es crítico, es perjudicial para la experiencia del usuario. Cuando se producen errores, rara vez son útiles o se manejan con gracia; en cambio, la aplicación implosiona y colapsa sobre sí misma.

Grado total: 2.5
Conclusión: Open Office es un mal software (si consideramos que un buen software es 4.0 y superior).

Naturalmente, el sesgo se vuelve obvio, y es posible que tenga criterios diferentes. Por ejemplo, un aspecto podría ser la calidad del código, que solo se puede determinar cuando alguien que sabe leer y escribir en el idioma en que se escribió el programa revisa el código y juzga si está lo suficientemente limpio, comentado correctamente, etc.

Si no quiso decir la pregunta con respecto a las revisiones, también puede verla desde una perspectiva puramente personal, como en cómo se comporta el software de acuerdo con * sus * expectativas solo, sin tener en cuenta las necesidades de los demás. Por ejemplo, podría usar un aspecto específico de un programa descuidando extensa y completamente otro. Por lo tanto, si ese aspecto se hace bien, el software es sorprendente a mis ojos, y viceversa, mientras que otra persona puede tener una perspectiva completamente diferente.

Para responder a su pregunta, es principalmente una cuestión de preferencia personal. Ser objetivo es muy difícil en casos de software no malo y los usuarios finales tenderán a notar un software malo más fácilmente que un buen software. Después de todo, si algo salió bien, a menudo pasa desapercibido y los errores siempre son más aparentes que las cosas bien hechas, lo que damos por sentado.

Manejo de errores

En mi opinión, el manejo de errores define la calidad de una pieza de software. El software mal escrito corromperá y eliminará datos, perderá memoria y se detendrá, bloqueará el sistema operativo, mostrará mensajes de error incomprensibles y encontrará muchas formas de enfurecer al usuario.

El buen software saldrá con gracia y mostrará un mensaje de error útil.