Es la ingeniería de software una disciplina de ingeniería o no?

Sí. Y no.

El software ciertamente puede ser diseñado e implementado usando principios de ingeniería. Yo diría que la gente que puede hacer esto se ha ganado de hecho el título de ingeniero de software.

Pero hay mucho software malo. Incluso el software popular puede ser bastante malo desde el punto de vista del diseño de ingeniería.

Quora es patético. NextDoor es vergonzoso. Slack parece que apenas funciona. La aplicación de Facebook es ridículamente enorme y difícil de manejar para lo que hace; el mero hecho de tenerla instalada en tu teléfono ralentiza tu teléfono, incluso cuando no lo estás usando.

Nada de lo anterior califica como ingeniería. Sin embargo, todas ellas tienen éxito.

Cualquiera de las empresas mencionadas podría ahorrar millones de dólares al año en costes de alojamiento (por no hablar de los millones de toneladas de emisiones de CO2 como resultado de la electricidad desperdiciada), y estar mucho mejor protegidas de los exploits, utilizando la ingeniería de software real.

El hecho de que no lo hagan se utiliza a menudo como excusa para ignorar los principios de la ingeniería de software. Pero no todas las empresas son unicornios respaldados por capital de riesgo. Especialmente cuando se tiene una startup de arranque, no siempre se puede gastar millones de dólares en honorarios de alojamiento y desarrollo de emergencia hasta que se pueda encontrar la manera de reducir sus costos hasta el punto en que sea rentable.

Pero el hecho es que muchas empresas no se preocupan realmente por la ingeniería de software. Incluso si sus tarjetas de visita dicen «ingeniero de software».

Heck, Facebook tenía el lema «muévete rápido y rompe cosas». Eso es más o menos lo contrario de la ingeniería.

Pero la NASA acaba de poner un módulo de aterrizaje en Marte, utilizando la IA para elegir dinámicamente un lugar de aterrizaje, volar una grúa aérea hasta él, bajar el módulo de aterrizaje al suelo, y luego volar a una distancia segura. Eso es ingeniería de software. Y también es verdadera ingeniería; me da igual lo que diga cualquier snob del término.

Y hay mucho espacio entre «moverse rápido y romper cosas» y la NASA. No sé exactamente dónde trazar la línea, para ser sincero. Sé que, al menos, sé cómo hacer ingeniería. Y sé que los presupuestos no siempre permiten el tratamiento completo de la ingeniería.

Pero empezar con una mentalidad de ingeniería en lugar de un enfoque de «tirar basura y esperar que funcione» te llevará mucho más lejos, mucho más rápido. Y las personas que tienden a la mentalidad de ingeniería terminan con un mejor software.