He trabajado como desarrollador durante unos 40 años. La disciplina de la ingeniería de software se ha vuelto más profesional. Sin embargo, la práctica de la ingeniería de software es mucho menos profesional que en cualquier otro momento de mi carrera.
Las herramientas que usamos (y el sentido subyacente para usarlas) han progresado constantemente hacia la calidad. Mirando hacia atrás a 1977, el control de versiones se realizó manualmente. Los lenguajes de programación en uso eran simples, y sus compiladores eran cosas simples escritas por desarrolladores individuales. No existe un IDE o una base de datos relacional. El seminario del mes mítico del hombre mítico de Fred Brooks, que prácticamente encapsula la ingeniería de software en mi humilde opinión, acababa de publicarse. El modelo Waterfall gobernó el desarrollo de software, al menos en parte porque las herramientas primitivas no eran lo suficientemente productivas para soportar la entrega continua.
Pero las personas que desarrollaban software eran diferentes a las actuales. En su mayoría eran matemáticos e ingenieros eléctricos que habían aprendido programación. Hubo menos de 20,000 de ellos en los Estados Unidos, y su coeficiente intelectual probablemente promedió alrededor de 130. El IEEE publicó un gran libro sobre qué documentación debería escribirse para planificar un producto de software, y los profesionales del software hicieron todo lo posible para seguirlo, intentando para producir software en una única versión inicial perfecta, ciertamente, con versiones de seguimiento para corregir errores.
- Como ingeniero de software en el Área de la Bahía con un muy buen trabajo, ¿cómo me veré afectado con la administración Trump y cómo puedo prepararme mejor para ello?
- Cómo aprender al máximo de un ingeniero de software senior como un novato
- Cómo acercarse a colegas al cambiar su código
- ¿Qué es bueno para un ingeniero de software, un trabajo estable del gobierno o para trabajar en empresas privadas y crecer?
- Después de pasar la clase 10, ¿cuánto tiempo lleva ser ingeniero de software?
Hoy tenemos herramientas y metodologías mucho más productivas, pero los 2 millones de personas que persiguen el desarrollo de software como carrera tienen un coeficiente intelectual colectivo mucho más cercano a 100. Realizamos el desarrollo iterativo, pero la mayoría de los equipos no utilizan los comentarios del último sprint para mejorar el el proximo. Nos resistimos a aprender lenguajes de programación potentes pero complejos, y los llamamos “demasiado difíciles” sin evidencia y sin crear algo mejor. Aceptamos densidades de defectos impactantes en grandes programas, incluso en proyectos críticos como el F-35.
Lo peor de todo es que los gerentes reducen deliberadamente la calidad para lograr una versión anterior. Recompensan el desarrollo rápido y con errores en un proceso más lento y profesional. Que los desarrolladores permitan que esto suceda es la señal más segura de que hemos perdido cualquier pretensión de profesionalismo como disciplina colectiva. El desarrollo de software se ha convertido en cualquier otro trabajo de fabricación de cuello azul, y ahora se puede cultivar en países del tercer mundo donde la mano de obra es barata y abundante.
En mi humilde opinión, estamos avanzando hacia la muerte del desarrollo de software como una carrera atractiva para personas brillantes y geek, y la muerte del desarrollo de software como un trabajo bien remunerado en los Estados Unidos. La única forma en que los desarrolladores de EE. UU., Con nuestros altos costos de nómina, pueden competir con el tercer mundo, es desarrollando software de manera más profesional, con densidades de defectos más bajas, con procesos más rápidos / mejores / más baratos, que los que se usan en países de bajos salarios.