Honestamente, la mayor parte del desarrollo de software ya está automatizado. Érase una vez, la programación en sistemas como la computadora Colossus se describió como:
Mi visión de Coloso era la de programador de criptoanalistas. Le dije a la máquina que hiciera ciertos cálculos y cuentas, y después de estudiar los resultados, le dije que hiciera otro trabajo. No recordaba el resultado anterior, ni podría haber actuado si lo hubiera hecho. Coloso y yo alternamos en una interacción que a veces logró un análisis de un sistema de cifrado alemán inusual, llamado “Geheimschreiber” por los alemanes, y “Pez” por los criptoanalistas.
Este proceso incluyó (además de un grupo de técnicos e ingenieros de pie para hacer reparaciones) perforar bucles de cinta de papel y especificar cada instrucción que la máquina necesitaba ejecutar para resolver el problema en cuestión.
- ¿Cuáles son las preocupaciones de los desarrolladores de software sobre la privacidad?
- Soy un desarrollador de software que también está interesado en el análisis de negocios, ¿qué perfil en la industria del software puede obtener el trabajo que me interesa hacer?
- ¿Qué todas las certificaciones importantes debe tener una empresa de desarrollo de software?
- Si un desarrollador de software no trabaja más de dos años en trabajos, ¿se ve mal en un currículum? ¿Cuánto tiempo debe permanecer en un trabajo?
- Como desarrollador de software, ¿alguna vez te has sentido desesperado y frustrado porque hay innumerables habilidades técnicas que no conoces?
De alguna manera, el ENIAC era aún más extraño, básicamente era una colección fija de solucionadores de problemas complejos que eran más o menos instrucciones únicas en un proceso.
¿Hoy, sin embargo? Puedo escribir algunas descripciones de alto nivel de lo que quiero (en algunos casos, incluso puedo especificar el problema y confiar en que surgirá una solución), con un editor que detectará muchos de mis errores y hará sugerencias para mejorar lo que escribo, probablemente aprovechando los marcos que generan mucho del código más aburrido y descubriendo qué bibliotecas voy a necesitar para que las cosas funcionen, compílelo en segundos (sin que necesite saber nada sobre la computadora subyacente) , luego envíe todo a un clúster de computadoras escalado dinámicamente.
Incluso en los veinte años que llevo programando profesionalmente, la diferencia entre cómo trabajé entonces y cómo trabajo hoy es de día y de noche. El punto es que, entre el momento en que empiezo a trabajar en el código y el usuario final obtiene acceso al software, me sorprendería que yo hiciera una quinta parte del trabajo. La cantidad de automatización es impactante, cuando se llega al final, y solo va a mejorar.
¿Qué podría significar esto? Probablemente más oportunidades, si la historia es alguna indicación. A medida que el lado automatizado del trabajo gana funcionalidad, las personas tienen más ideas sobre lo que podemos hacer con él. No hace mucho tiempo que nunca hubiéramos considerado enviar llamadas telefónicas a través de redes de computadoras, pero hoy, ese es el valor predeterminado.
Sin embargo, los trabajos cambiarán, como siempre lo hacen. Hace años, solía trabajar con personas que tenían títulos como “Build Engineer”, personas cuyo trabajo real era asegurarse de que los compiladores se configuraron y los paquetes de instalación se generaron correctamente. Hoy, eso es principalmente un problema resuelto, y los desarrolladores trabajan casi exclusivamente para traducir los requisitos del usuario en soluciones. Esa tendencia ciertamente continuará.
Pero la programación no desaparecerá. No importa cuál sea la tecnología (COBOL, ingeniería de software asistida por computadora, lo que sea) promete que siempre tendremos un “software sin programación”, porque alguien necesita cerrar la brecha entre la traducción de lo que la gente dice al tipo específico e inequívoco. explicación que maximiza las posibilidades de que las personas obtengan lo que quieren. Y esa persona es programadora, incluso está hablando conversacionalmente con algún tipo de inteligencia artificial.