¿Cuál es la mejor explicación que has escuchado para explicar por qué se necesita “tanto tiempo” para producir un excelente software?

Esta es una pregunta difícil porque hay muchas variables indefinidas. Para algunos proyectos, el software puede codificarse rápidamente, y para otros, el software en cuestión puede que nunca se complete.

El primer elemento a considerar es el equipo. ¿Los programadores se llevan bien profesionalmente? ¿Y pueden comunicarse bien juntos? Si pueden, entonces podrán mantenerse entre sí (emocionalmente cuando las cosas se ponen difíciles y el agotamiento levanta su cabeza fea) y ayudarse mutuamente cuando tienen problemas. Luego considere la gestión. ¿Apoyan a los programadores? ¿Toman en serio los consejos de los programadores? ¿O los están tratando como robots sin sentido cuyo trabajo es hacer el trabajo y no pensar por sí mismos? Un programador que no cree que están siendo tomados en serio perderá la fe en el proyecto, y eso hará que dejen de preocuparse por la programación rápidamente o con buena calidad.

¿Qué tal la planificación? ¿Se incluyeron los programadores en la fase de planificación del proyecto? ¿O les entregaron los requisitos después del hecho y les dijeron que lo hicieran? Muchas veces los programadores tienen una idea de hacia dónde se dirige el proyecto y pueden ayudar a planificar obstáculos pasados ​​que se enfrentarían si supieran todos los requisitos con anticipación.

¿Se cambian las características durante el proyecto? Algunas características pueden parecer una implementación rápida, pero de hecho podrían llevar días o semanas para que funcionen correctamente. Esto se puede resolver con una buena comunicación entre la administración y los programadores, de modo que los programadores puedan explicar exactamente por qué esa pequeña característica tardará unos días en implementarse cuando el cliente considera que solo deberían ser unos minutos.

Por último, un buen software es bueno porque se toma tiempo para asegurarse de que se hayan encontrado tantos errores que se puedan encontrar. Apresurarse a través del proyecto puede conducir a un software incompleto o un software inutilizable que se implementará para los usuarios. Muchas compañías han cambiado a una metodología ágil donde no tienen fechas difíciles para el software, sino que se centran en adiciones de funciones y corrección de errores. Lanzan el software cuando está listo, no cuando se ha cumplido una fecha.

El problema que veo es que hay muchas maneras de escribir software. Desde multiplataforma hasta programas integrados. Los diferentes sistemas operativos son la mayor dificultad. Luego, una vez que lo ensamblas, debes depurarlo, todo lleva mucho tiempo.