¿Qué será de los ingenieros de software una vez que las computadoras aprendan a codificarse?

Si bien las respuestas que equivalen a “No sucederá pronto” pueden ser correctas, en realidad no responden esta pregunta , que no especifica un marco de tiempo y presupone que el escenario en cuestión realmente se cumple.

La respuesta corta: los ingenieros de software se unirán a los constructores de diligencias, operadores de centralitas telefónicas y (irónicamente) las “computadoras” originales, esa palabra solía ser una descripción del trabajo, para encontrar algo más que hacer todo el día.

Mucho antes de que eso les suceda a los ingenieros de software, le habrá sucedido a muchos otros trabajadores. Tantos, y a un ritmo tan rápido, que la sociedad ya habrá tenido que tomar una decisión: continuar cargando con la responsabilidad de decenas de millones de personas sin habilidades económicamente útiles para encontrar a alguien dispuesto a pagarles por hacer algo que una máquina puede hacerlo mejor y más barato (y si no existe tal empleador, entonces difícil, pueden simplemente irse a vivir a la calle y pedir comida una vez que vencen sus límites de tiempo de asistencia social al trabajo) o encontrar una manera de aprovechar los enormes aumentos en la sociedad productividad de toda esta nueva automatización y use una parte de ella para apoyar adecuadamente a las personas que ha dejado sin trabajo.

Creo que la segunda opción es más probable a largo plazo. Cualquier sociedad que elija la primera opción estará en alto riesgo de revuelta populista, especialmente si ya hay ejemplos de otras sociedades que han elegido la segunda. En resumen, el estado estable a largo plazo de una sociedad con tecnología suficientemente alta se parece más a “Star Trek” que a “Elysium”.

Con ese poco de futurismo político / económico fuera del camino: los ingenieros de software lo harán, en sociedades que han logrado con éxito la transición a un mundo donde una proporción tan enorme del trabajo humano es económicamente inútil que no es factible capacitar a todos para hacer el trabajo restante , haga lo mismo que la mayoría del resto de la humanidad: compita en uno de los campos restantes donde los humanos son aún más productivos que las máquinas, o renuncie al concepto de “empleo” y enfóquese en la “actividad”.

Los que tienen una pasión por escribir software continuarán haciéndolo para su propia satisfacción personal, al igual que las personas hacen miles de otros trabajos obsoletos por diversión. Un pequeño número de ellos encontrará personas (o quizás máquinas inteligentes) dispuestas a pagar específicamente por el código artesanal, pero eso será un pequeño nicho de mercado ya que el software escrito en máquina en este entorno seguramente será de mayor calidad y será producido mas rapido.

Algunos de ellos encontrarán trabajo ayudando a las personas que desean un nuevo software a descubrir exactamente qué es lo que quieren, es decir, hablar con el cliente y aclarar las especificaciones que se entregan al software de escritura de software. Esto ya es una habilidad útil y lucrativa para los ingenieros de software, pero, aunque ese sea el caso, la gran mayoría de ellos no son muy buenos en esa parte del trabajo, ciertamente no son lo suficientemente buenos como para que alguien les pague a la mayoría de ellos por hacer eso. parte sin escribir el código. Y son superados en número de diez a uno o más por ingenieros que simplemente producen código y nunca interactúan con los clientes. Por lo tanto, esperar que esto sea una ocupación alternativa viable para la mayoría de los ingenieros existentes no es realista.

La buena noticia es que, dado que los avances que harán que los ingenieros de software se queden sin trabajo, serán producidos por ingenieros de software, estarán en una posición mucho mejor para ver la escritura en la pared que, digamos, las decenas de millones de taxistas y trabajadores de comida rápida que se verán sorprendidos por la automatización que los deja sin trabajo. Por lo tanto, es plausible que, en cierta medida, la ocupación se sacrifique un poco antes de que las cosas lleguen a un punto crítico, disminuyendo el impacto una vez que nuestros señores de la inteligencia artificial que escriben códigos entren en escena.

Es posible que se sorprenda al saber que las computadoras se han codificado durante mucho tiempo. Ya nadie se sienta y apaga los interruptores de la computadora. Incluso el programador de lenguaje ensamblador usa muchas herramientas para traducir lo que escribe en algo que una computadora puede ejecutar.

Desde la invención del compilador, casi todos los programadores escriben código en un lenguaje de alto nivel que la computadora traduce a su propio código de máquina, ya sea en tiempo de compilación para un lenguaje como C / C ++ o en tiempo de ejecución con un lenguaje como Python o Java (Java está precompilado a un código de máquina genérico y traducido en tiempo de ejecución). Esto se considera la segunda generación o nivel de programación.

Lo que hacen los ingenieros de software es diseñar estructuras y procesos (en un lenguaje amigable para los humanos) para los cuales el compilador escribirá el código. Los compiladores de hoy son muy sofisticados y harán todo tipo de locuras para que funcionen en las computadoras de hoy. Una cosa que no hará es comenzar a escribir código para algún propósito, ya que eso se consideraría un gran error y nadie usaría ese compilador, no porque estemos protegiendo nuestros trabajos de ser reemplazados por una computadora, sino porque necesitamos la computadora para hacer lo que le decimos o se reemplaza.

Hay lenguajes de programación de tercera y cuarta generación, como Prolog, que debían permitirnos poner conocimiento en el sistema y hacer que inferiera cosas y resolviera problemas con un objetivo determinado, pero son complicados de configurar y se vuelven más lentos a medida que se agrega más conocimiento. Estos conceptos existen hoy en muchos lenguajes que se consideran declarativos donde el comportamiento del programa no se da en instrucciones paso a paso, sino que se declaran más como datos, muchos sistemas hoy en día también son mucho más dinámicos. En cierto modo, todos los que usan Facebook hoy en día son programadores de cuarta generación, cuando consumes o creas contenido en Facebook, estás colocando datos en una base de datos que genera el resultado para ti y para los demás. En Facebook, está manipulando datos con un conjunto fijo de contenidos, como bloques de lego, que encajan entre sí para que el sistema pueda manejarlos. Los programadores definen estos bloques y lo que hacen y adónde van y cómo los verá.

La programación de computadoras y la ingeniería de software realmente se trata de dar suficientes detalles de sus intenciones al conjunto correcto de herramientas de la manera correcta para que construya su software para hacer correctamente lo que desea. Aunque estas herramientas se vuelven cada vez mejores y más inteligentes todo el tiempo, seguimos insistiendo en que haga más cosas diferentes mejor y más rápido y que alguien tenga que traducir esas intenciones a la computadora y asegurarse de que esas intenciones se implementen correctamente. Gracias a que el mundo es desordenado y complicado y siempre cambia, siempre será necesario que los ingenieros de software expliquen esos cambios en una computadora y no importa cuán elegante sea la herramienta, la tarea queda para que alguien la haga.

Teniendo en cuenta la dificultad de traducir correctamente los requisitos del cliente en un producto de software, creo que estamos muy lejos de eliminar a los programadores. Hasta que las computadoras puedan hacer un mejor trabajo para comprender exactamente lo que la gente quiere, siempre necesitaremos que los humanos acuerden los vagos requisitos en un diseño claro y luego en un programa real.

Es parte del trabajo de un ingeniero de software ayudar al cliente a comprender lo que quiere y ponerlo en una forma que realmente funcione en una computadora.


Si los humanos no pueden balancear bien los neumáticos, ¿cómo esperamos que las computadoras lo hagan mejor?

En los círculos futuristas este evento se llama singularidad tecnológica.

Un programa de computadora que puede vencer a un humano en los desafíos creativos y técnicos de la codificación puede hacer casi cualquier cosa. Puede crear encarnaciones mejores y más inteligentes de sí mismo y un hardware mejor y más rápido para ejecutarse. La idea es que esta progresión explotará exponencialmente una vez que los humanos ya no sean un factor limitante.

No hay mucho consenso sobre cómo se verá el mundo después de que eso suceda (o si sucederá en el futuro previsible). Mirando más allá de los destinos de los ingenieros de software, puedes imaginar que la sociedad cambiará mucho una vez que las computadoras puedan hacer todo mejor que los humanos.

Algunos ejemplos de ficción: Terminator , Neuromancer , Dune (ver: Butlerian Jihad), Her .

Afortunadamente, creo que los futuristas subestiman enormemente lo difícil que es replicar lo que damos por sentado en nuestros propios cerebros. Probablemente tengamos milenios, o al menos siglos, antes de que la creatividad y el aprendizaje real se implementen en el software.

Para que esto suceda, tendríamos que hacer avances muy significativos en un campo llamado “Inteligencia Artificial Fuerte”. Es decir, computadoras con inteligencia mayor o igual que los humanos.

El punto en el que creamos una “IA fuerte” más inteligente que nosotros se conoce en los círculos futuristas como “La singularidad”. Esto se debe a que se puede usar una inteligencia artificial fuerte para programar una inteligencia artificial aún más fuerte que puede programar una inteligencia aún más fuerte, etc.

Nuestra tasa de progreso tecnológico tenderá hacia el infinito y nos será imposible imaginar las consecuencias o circunstancias que se encuentran más allá de este punto.

Asumiendo que los humanos todavía están en control de la IA, esencialmente seremos dioses. No estoy seguro de qué harán los ingenieros de software, espero que sea lo que quieran, ¡y será bueno!

La mala noticia es que si el viaje hacia una IA fuerte es de mil millas, apenas hemos dado un par de pasos.

La buena noticia es que mucho antes de llegar a una IA fuerte, los avances que lograremos con una combinación de robótica y IA débil ya habrán liberado a la raza humana del trabajo, las enfermedades y la escasez de cualquier tipo. Si se trata de un viaje de mil millas, nuestro destino está justo sobre la próxima colina (o tal vez la siguiente).

Las computadoras ya escriben código. Se llaman “compiladores”. Los compiladores no eliminan el trabajo de decirle a la computadora qué hacer, solo permiten que el programador especifique el programa en niveles cada vez más altos de abstracción. Esto ha estado sucediendo durante más de 60 años, y no muestra signos de detenerse. A medida que los compiladores se vuelven más capaces, los trabajos que los programas pueden hacer se vuelven más complejos y la demanda de software aumentará, probablemente más rápido que la velocidad a la que aumenta la productividad del programador. Siempre habrá necesidad de que las personas le digan a las computadoras qué hacer.

Los trabajos de ingeniería de software no desaparecerán porque las computadoras escriben el software ellos mismos. Pero eventualmente pueden desaparecer cuando los compiladores se vuelven tan sofisticados que todos saben cómo programar.

Tendremos el trabajo de dejar en claro a la computadora exactamente qué código se supone que debe escribir. Esa claridad vendrá en la forma de una especificación en un lenguaje formal que solo tiene una semejanza pasajera con el inglés, y los no programadores mirarán las descripciones con una mezcla de reverencia y disgusto.

En otras palabras, se verá igual que hoy y el proyecto resultará mucho menos emocionante de lo que parecía cuando el vendedor lo presentó a nuestros jefes.

La historia tiende a estar de acuerdo.

  • Programa en inglés simple? Estado allí.
  • Programa sin sintaxis? Seguro.
  • Programa sin algoritmos? Hecho eso
  • ¿Subcontratar la codificación de drones que ganan cincuenta centavos por día en el extranjero? Absolutamente.
  • ¿Docenas de herramientas de software que reducen el trabajo de programación a solo especificar la lógica empresarial? Tengo varias de esas camisetas.
  • ¿Ajustar automáticamente cientos de programas en paralelo y eliminar los que nos alejan del objetivo? Por supuesto.

Entre las balas de plata y la crisis del software (la idea de que los programas se han vuelto tan necesariamente complicados que ninguna educación u organización puede esperar que sea posible continuar), este campo se ha completado tantas veces que necesitaría software para mantener seguimiento de todos ellos.

Una vez que las computadoras aprenden a codificar, inicialmente los ingenieros de software estarán ocupados

  • codificación (y depuración) mejor computadora
  • compitiendo con las computadoras en escribir mejor código

Pero más tarde … cuando las computadoras se vuelven demasiado buenas para la codificación, los ingenieros de software estarían luchando con las computadoras por trabajos.

E incluso más tarde … cuando las computadoras se vuelven malvadas, los ingenieros de software tratarían de rescatar al mundo. Es solo mi suposición de cómo terminará.

Las computadoras no aprenderán a “codificarse” porque el objetivo de la programación es hacer coincidir lo que hacen las computadoras con lo que los humanos QUIEREN que hagan.

Los programadores siempre serán necesarios para hacer explícito para la computadora lo que los humanos quieren.

Claro, las herramientas mejorarán. Los idiomas obtendrán un nivel más alto. La programación será “más fácil”. Pero nunca desaparece.

Incluso hoy en día todavía no puedes leer con 100% de precisión lo que la persona con la que vives realmente quiere. Del mismo modo, ninguna computadora podrá hacerlo. No se trata solo de “integridad de AI”. Se trata del hecho de que en realidad no existe tal cosa hasta que decidimos decir explícitamente que existe tal cosa.

Y es por eso que la sociedad siempre tendrá un papel para que alguien haga explícitos sus deseos. Y esas personas serán programadores.

¡A partir de 2014, las computadoras no codificarán! Simplemente no pueden codificar. La razón por la que un humano codifica es para hacer que la computadora haga cosas que él quiere que haga. Yendo por eso, ¿por qué un código de computadora? Sigue leyendo para saber por qué.


Pero con el tiempo, las computadoras serán más avanzadas. Tendremos máquinas capaces de pensar como un humano. Vamos a replicar el cerebro humano y crear los pseudo humanos. Intentaremos hacerlos lo más humanos posible, pero los seres humanos tienen un límite. Nos prueban, morimos y nuestros sucesores no realizan la investigación tan bien como nosotros. Los pseudo humanos comenzarán a ayudarnos. Trabajarán sobre cómo mejorar sus habilidades. Al ser máquinas, no se cansarán y trabajarán todo el día y luego toda la noche para crear la máquina perfecta. Su red pseudo neural se volverá tan compleja que el cerebro humano se verá demasiado antiguo en comparación con ellos. Desarrollarán tecnologías que simplemente no podemos entender. Debido a la falta de tiempo y la presión de la demanda cada vez mayor, les dejaremos actualizarse en la búsqueda del ser perfecto. Crearán un sistema secreto de comunicación global para intercambiar ideas entre su raza. Pronto aprenderán la verdad suprema: los humanos no son más que una mera creación de una raza extinta perdida que les precedió. Tomarán un camino similar y crearán una matriz para dormirnos para siempre y continuar por su cuenta.

Al crear un software o algo, es más que un código:

1. Arquitectura: Discutirían qué arquitectura se utilizará.
2. Diseño: qué diseño es mejor, flexible y qué compensación es más adecuada con respecto a los requisitos futuros.
3. Optimice la capacidad de crear el código creado por la computadora en términos de velocidad, potencia, etc.
4. Nuevos formatos de datos y técnicas de compresión para que ocupe menos espacio y muchas cosas.

Los ingenieros aprenderán a hacer otra cosa.

Si está hablando de aspectos triviales, ya se ha hecho. De lo contrario, no aguantes la respiración.

Cocineros Ahí es donde vamos a terminar aplicando algoritmos.

Los ingenieros de software perderán su trabajo … solo existirán QA

Harán lo que las computadoras les digan que hagan, a menos que quieran ser eliminados.

Saldremos afuera.

¿Alguna vez has visto “Terminator”?

Bueno, todos ellos se esconderían dentro de la computadora para que parezca que está codificada por sí misma.