¿Por qué es tan complicado y difícil construir software?

Suelo escuchar esta pregunta cuando converso con profesionales de cualquier especialidad que participan o participaron en la construcción, mantenimiento o migración de un software. Algunas veces preguntan con la esperanza de identificar algo que solucione los problemas que viven, y en otros casos con la resignación de que no hay nada que lo evite.
Lamentablemente, los números confirman que los proyectos de tecnología son muy complicados y que a todos les pasa lo mismo. Por ejemplo, en el año 2014 se evaluaron 175,000 proyectos de tecnología en Estados Unidos y los resultados mostraron que solo el 16.2% terminó en tiempo y costo. No incluyeron en ese porcentaje la calidad del producto o alcance del proyecto, porque si lo hubieran hecho, el resultado era prácticamente 0%.
"La humanidad todavía no encuentra la mejor manera de desarrollar software"
Por lo tanto, si todos sufren al construir software entonces la causa debe aplicar a todo el mundo. Por eso, la mejor respuesta que he escuchado hasta ahora es la siguiente: "la humanidad todavía no encuentra la mejor manera de desarrollar software, todavía seguimos experimentando y aprendiendo de nuestros errores". La humanidad lleva construyendo casas por siglos y aún hay errores pero no tantos. En cambio, la humanidad lleva construyendo software tan solo por 70 años aproximadamente y es entendible que los errores sean el pan de cada día.
Entonces, ¿qué pueden hacer? Aprender a vivir con la incertidumbre y complejidad del software, no solo en los proyectos sino también en las estrategias de negocio que dependen del software. Los marcos de trabajo ágiles van en ese sentido, son la mejor alternativa a la que hemos llegado por el momento, pero no es la solución a todos los problemas. Todavía hay mucho por descubrir, no se olviden de eso cuando inicien un proyecto de tecnología.