¿La ingeniería de software se ha convertido en una disciplina menos profesional?

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.

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.

Esto es un poco un sí y no una respuesta. Por un lado, realmente necesitamos desarrolladores profesionales para hacer software confiable en situaciones críticas o incluso en situaciones críticas de la vida. Entonces, en ese sentido, no, el software se usa con más frecuencia en estas situaciones, por lo que se ha convertido en una disciplina más profesional.

Por otro lado, todos pueden seguir algún curso de lenguaje de programación en línea y pueden llamarse a sí mismos ingenieros de software. No hay requisitos oficiales antes de que puedas llamarte así. Esto está permitido y es lo que sucede. Entonces, más programadores malos entran al campo fingiendo ser expertos. Entonces, en ese sentido, sí, la ingeniería de software se ha vuelto menos profesional debido a la gran cantidad de no profesionales que ingresan. Esto sucede menos en los campos donde necesita alguna forma oficial de aprobación.

Entonces, al final, es un poco de ambos.

Si y no. O tal vez, es difícil de decir.

La “ingeniería de software” es una disciplina divertida, ya que solo recientemente hemos visto programas de grado en ella. Hasta cierto punto, es fácil afirmar ser un ingeniero de software, ya sea que tenga o no una capacitación y experiencia en ingeniería serias.

Como una verdadera disciplina, la ingeniería de software es efectivamente el lado de ingeniería de la informática; que a su vez surgió en gran medida de la Ingeniería Eléctrica y las Matemáticas. (Como señaló Kurt Guntheroth).

El título de “Ingeniero de software” evolucionó bastante en industrias intensivas en software (especialmente defensa), aplicadas a ingenieros serios que construyeron (construyeron) sistemas de software. A menudo, el título se aplica a personas que se entrenaron en otra disciplina (p. Ej., Ingeniería aeronáutica) que escriben principalmente software (p. Ej., Un ingeniero aeronáutico, que ha aprendido algunas habilidades de software serias, que escribe software de aviónica). (Mientras tanto, hay muchos programadores y desarrolladores de software que se dan aires y se hacen llamar ingenieros de software, cuando no tienen ningún crédito de ingeniería).

En los campos que construyen sistemas críticos para la misión y la vida (p. Ej., Aviones, naves espaciales, dispositivos médicos, electrónica de automóviles, sistemas de armas, etc.), la ingeniería de software es un “proceso disciplinado y profesional” (gracias Aviad Ezra por esa caracterización ) – evolucionó a partir de prácticas de ingeniería en otros campos (p. Ej., Un proceso claro de análisis de requisitos, desarrollo y evaluación de diferentes conceptos de operaciones y conceptos de sistemas, especificaciones detalladas, modularidad, pruebas, documentación, validación y verificación, etc.). Y estas prácticas ciertamente pueden considerarse como “métodos de ingeniería de software” o un “cuerpo de conocimiento de ingeniería de software”.

Al mismo tiempo, hemos visto una tendencia que se aleja de la práctica rigurosa de ingeniería (por ejemplo, la metodología “Cascada” y tal), a métodos más bien ad hoc (es decir, “Ágil”) que se traducen en “construir primero”, luego probar y corregir , entonces tal vez hacer algo de diseño. No es muy profesional si me preguntas, y es bastante peligroso cuando se aplica a sistemas complejos, de misión / vida crítica.

En muchos sentidos, creo que la ingeniería de software se ha vuelto más profesional. En la mayoría de los campos profesionales, debe tener el título adecuado antes de poder hacer el trabajo profesionalmente. Cuando comencé mi carrera, pocos tenían títulos en informática. Algunos tenían títulos de TI, pero aquellos se centraron más en hardware. Uno de mis primeros proyectos de desarrollo fue dirigido por una persona que tenía una licenciatura en religión comparativa y trabajé con varios otros que tenían títulos de bellas artes. Incluso otros comenzaron sus carreras de ingeniería de software sin ningún título (a menudo terminaron obteniendo un título utilizando los beneficios de la compañía). Mi licenciatura es en economía y he tenido conciertos que solo obtendrías con una maestría o incluso un doctorado en informática en el mundo de hoy. Después de haber leído algunos de los planes de estudio en ese tipo de programas hoy, veo toda una serie de ideas sobre las que trabajamos hace 25 años. Por supuesto, gran parte de la ingeniería de software que se enseñaba en la universidad cuando estaba allí era algo sobre lo que la gente de mis padres e incluso los abuelos hablaban sobre las cervezas cuando eran jóvenes (bueno, suponíamos que éramos un poco geek). No teníamos un control real de la versión, solo los que se creaban si sentíamos la necesidad y teníamos el tiempo libre (ya que la mayoría de nosotros no podía pagar nuestra propia computadora, esto generalmente significaba quedarse hasta tarde en la oficina). A menudo construimos proyectos con un síndrome tan fuerte no inventado aquí que la persona que probablemente conozca que lo tiene ahora se vería como un gran defensor de las cosas de terceros. La gestión de proyectos era un asiento de su pantalón o un intento de emplear métodos de otro dominio. Los equipos de ventas de software casi siempre consistían en al menos una chica atractiva con la premisa de que a los nerds nos cegaría que una chica así nos hablara.

La ingeniería de software nunca tuvo la reputación de ser una disciplina profesional, y no espero que eso cambie.

A diferencia de otros campos de ingeniería como la ingeniería estructural, donde cada producto debe cumplir con los más altos estándares de calidad, la ingeniería de software es tan profesional y disciplinada como el producto lo necesita.

Si observa el proceso de ingeniería de software en una empresa que construye lanzadores de misiles, encontrará un sistema muy disciplinado. y proceso profesional . Si miras una empresa como Facebook, verás que se mueve rápido y rompe eslóganes por todas partes.

A2A. Esto es dificil de decir.

Por un lado, creo que hay más actividad en las universidades con respecto a la ingeniería de software que nunca antes.

Por otro lado, cualquiera que sepa cómo escribir código en uno de los muchos idiomas de programación disponibles puede crear una aplicación.

La ingeniería de software profesional tendrá enormes beneficios, especialmente para grandes organizaciones, y es necesaria en áreas complejas / de alto riesgo (como plantas nucleares, tecnología espacial, aviones, automóviles, equipos médicos, etc.).

Al final, creo que no es menos profesional, pero es difícil medirlo / determinarlo.

More Interesting

¿Cuáles son algunas habilidades comunes requeridas para un ingeniero informático / de software?

¿Cómo es ser un pasante de ingeniería de software en SoundCloud?

¿Por qué es difícil realizar ingeniería inversa en un software?

¿Los ingenieros de software son inferiores a los consultores?

¿Tengo un bajo rendimiento para ser un SDE de Microsoft en el nivel 60 a la edad de 26 años?

Como estudiante universitario de ciencias de la computación y aspirante a ingeniero de software, ¿vale la pena actualizar a un MacBook Pro?

¿Qué camino debe seguir un programador para convertirse en millonario?

¿Son los ingenieros de software en el banco más ricos que los ingenieros de software en las empresas de inicio y software?

¿Qué trabajo agregaría valor para un hombre dispuesto a seguir su maestría en un par de años: un SDET / QA en compañías como Amazon o Microsoft, o un SDE en compañías de productos medianos?

¿Están los ingenieros de software preocupados de que su jefe descubra que están trabajando para crear una startup?

¿Por qué algunos ingenieros de software no están dispuestos a aprender nuevas tecnologías y adaptarse?

¿Merece la pena mudarse a Holanda desde Ucrania si soy ingeniero de software?

Soy ingeniero de software, y mi equipo actualmente está luchando con la calidad del software que estamos lanzando. ¿Qué tipo de enfoque puedo adoptar yo / mi equipo para lograr una mejor calidad de software?

¿Hay demasiados desarrolladores / ingenieros de software en el campo?

Actualmente estoy trabajando en una empresa india de servicios tecnológicos, con casi 4 años de experiencia en tecnologías de Microsoft. Quiero ingresar a Amazon y para eso tengo 6-8 meses de tiempo. ¿Cómo debo planificar mis preparativos?