¿Cuáles son los principios de la buena ingeniería del software?

Aquí están algunos de los principios enjundiosos que creo y he encontrado útiles.

  1. Cuando ataques un nuevo problema, aprende cómo se ha resuelto antes. Casi todos los problemas nuevos son problemas antiguos disfrazados. Entender eso y revisar el arte previo puede acelerar y mejorar tu solución. No te creerías la cantidad de veces que he visto resolver un problema complejo sin entender el estado de la técnica, cometiendo todos los errores que el peor estado de la técnica cometió en SU primer intento. Pérdida de tiempo y energía, lo que resulta en un software de baja calidad.
  2. Si estás escribiendo tus propios protocolos de seguridad / criptografía, lo estás haciendo mal. Utiliza protocolos criptográficos y de seguridad existentes y bien estudiados. Nadie lo hace bien a la primera, y es muy probable que algo que hagas por tu cuenta tenga vulnerabilidades que no aparecerán hasta que sea demasiado tarde para solucionarlas.
  3. No te hagas el listo. Para el desarrollo de software comercial, lo más importante es que el código sea fácil de entender, depurar y mantener. Esto hace que sea menos probable que sea incorrecto, y hace que sea menos probable que sea desechado por la siguiente persona que tenga que trabajar en él.
  4. No optimice o module demasiado por adelantado. Optimizar antes de tiempo complica el código, y puede mejorar el tiempo de ejecución de manera intrascendente. Consiga un algoritmo claro y limpio y optimícelo más tarde. Del mismo modo, esforzarse por hacer el sistema modular y extensible es algo que debe hacerse con moderación. En cuatro de mis proyectos de varios años de duración, se dedicó más de un año (en cada uno) a crear un modelo de plug-in que pudiera ampliarse fácilmente. El único complemento que se escribió realmente en todos los casos fue el único ejemplo con el que empezó mi equipo, pero complicamos considerablemente el desarrollo y las pruebas al adoptar este enfoque. Espera a tener una necesidad, o te arriesgas a hacer las interfaces equivocadas y a perder tiempo y energía. Por último, he visto varios ejemplos de gente que se pasa de la raya con la POO y la encapsulación, complicando innecesariamente el código.
  5. Nunca "lo arreglarás después", así que hazlo bien. Otro error que he cometido muchas veces es lanzar algo con la intención de arreglarlo antes de enviarlo. Entonces surge un incendio tras otro, y el código se envía en una forma horrible. Escríbalo de la manera correcta la primera vez.
  6. Agregue un registro sensible. Asegúrese de que tiene una forma de registro / rastreo de la ejecución de su código. Asegúrate de que ese mecanismo es ligero, y tiene niveles de registro seleccionables (por ejemplo, informativo, advertencia, error) para permitirte controlar cuánto se registra.

Hay muchos más, pero estos son los más útiles para mí.