¿Terminará este ‘boom’ de programación algún día? ¿La programación algún día será automática?

La gente todavía hace las cosas a mano.

Claro, las máquinas de recoger y colocar pueden fabricar placas de circuitos automáticamente, y las fábricas pueden producir miles de unidades de visualización de iPhone, pero antes y después del paso automatizado / mecanizado, la gente todavía hace las cosas a mano.

Lo que ha cambiado es

  1. la parte del proceso de fabricación / construcción que se realiza a mano, y
  2. la escala (tanto en volumen de unidad como en complejidad) que es posible.

En mi opinión, la revolución industrial no reemplazó tanto al trabajador humano, ya que aumentó enormemente la complejidad de lo que podría ser creado por el trabajador humano. Todavía hay miles de personas involucradas en la producción de un iPhone; desde el trabajador en una mina de litio en África, hasta el ingeniero en Palo Alto, hasta el obrero en China. Cada una de esas personas es parte de un sistema automatizado / mecanizado. Sin duda, el minero está rodeado de maquinaria, el ingeniero está usando una computadora construida por un sistema separado y el trabajador de la fábrica es parte de un gran complejo. Esto sucede porque automatizamos las partes de un proceso que son más susceptibles de automatización.

Conectando esto con la programación: no creo que los programadores humanos se vuelvan obsoletos. La IA y varios sistemas de automatización de software reemplazarán las tareas de programación más tediosas. Ya está sucediendo una versión muy simple de esto. Hay una compañía que ofrece AI como un servicio que programará reuniones para usted. Todo lo que tiene que hacer es CC “ella” en un correo electrónico con una persona con la que desea reunirse, y el sistema establecerá una reunión a una hora mutuamente conveniente en el calendario. El “programador” humano reemplazado aquí es la recepcionista o secretaria que hasta ahora ha desempeñado este papel y ha puesto el elemento en el software del calendario. Para que esto funcione, un equipo de programadores tuvo que crear el software de IA.

¿Qué pasa con el software de creación de software? Sospecho que aquí es donde vas en tu cabeza. Me parece poco probable que alguna vez vivamos en un mundo donde el software crítico esté “escrito” o creado de alguna manera sin un humano en el circuito, excepto, nuevamente, en casos en los que sería extremadamente agotador o imposible para cualquier humano hacerlo. . Entonces, automatizaremos las partes de un proceso que son más susceptibles de automatización. Al hacerlo, habrá pasos en el proceso antes y después de la parte automatizada que no son adecuados para la automatización, y las personas serán responsables allí. Creo que la pregunta más importante es “¿qué nuevos procesos, servicios, empresas, tecnologías e industrias surgirán una vez que el software pueda realizar funciones similares a la automatización de fábricas?”

Mientras escribo esto, pienso en noticias personalizadas. Facebook ofrece en principio más de mil millones de conjuntos de contenido personalizados para cada espectador todos los días. No hay una organización posible de personas que puedan hacer esto continuamente. En cierto sentido, el sistema de noticias de Facebook está creando software; es decir, está creando un conjunto de instrucciones para cada usuario que se ejecuta cuando el usuario inicia sesión y ve el feed. Pero, de nuevo, para que eso suceda, hay personas que trabajan en el sistema de alimentación de noticias de forma manual. Entonces, vemos la automatización de partes de un proceso que son susceptibles de automatización.

Gracias por hacer una pregunta que invita a la reflexión.

La programación ya está siendo realizada automáticamente por las computadoras. Eso es lo que hacen los compiladores. Sin ellos, tendríamos que escribir código binario puro. Las instrucciones que nosotros, como desarrolladores, damos a nuestras computadoras se realizan a niveles de abstracción cada vez más altos. Espero que esto continúe.

Hoy en día, hay una cierta cantidad de instrucciones que debo dar a mi computadora para generar una plantilla para una página web. No necesito escribir el HTML y CSS manualmente como solía hacerlo, pero lleva unos minutos. En el futuro, podría necesitar solo un comando simple para hacer lo mismo. Aun así, aún habrá necesidad de programadores. Es solo que el software que escribimos será más complejo y tendrá capacidades más potentes y no tendremos que preocuparnos tanto por las instrucciones de bajo nivel.

En última instancia, el objetivo de la computadora es cumplir con los objetivos humanos, y siempre necesitaremos decirle a la computadora cuáles son, incluso si la inteligencia artificial ha alcanzado una etapa avanzada y los lenguajes de programación son de alto nivel.

El boom podría terminar, pero no antes de que se desarrolle la inteligencia general artificial (AGI).

Diseño, no producción

La programación es diseño, no producción. Cada programa es un trabajo personalizado.

La parte de producción viene cuando presiona copias en CD o proporciona una descarga a través de la red. Luego, la máquina hace millones de copias de su trabajo con solo presionar un botón. Esa parte del proceso de producción ya está automatizada.

Incluso en la Revolución Industrial, cuando los productos son producidos por una máquina, el diseño del producto lo realiza un diseñador humano.

AGI necesario

Entonces, la pregunta es cuándo las computadoras serán tan inteligentes en el diseño de software como las máquinas. Esto requeriría una AGI equivalente a la del ser humano, así como la capacidad humana de observar su entorno e interpretar los requisitos que le dan los humanos.

Auge del código abierto

Aparte de eso, sin embargo, hay una forma de reducir la necesidad de programación. Se podría crear suficiente software de código abierto para que la mayoría de las tareas se puedan realizar con software libre sin tener que hacer un trabajo personalizado. Solo piense en los millones de sitios web creados con WordPress. Nadie tuvo que ser contratado para programarlos como trabajos personalizados.

Aumento de la subcontratación

Su pregunta también podría interpretarse como cuándo terminaría el auge de la programación en los Estados Unidos. Si ese es el caso, un alto grado de externalización a programadores extranjeros podría reducir la necesidad de programadores en los EE. UU., Poniendo fin al auge al menos en este país.

Los temores de que la automatización reemplazará a los humanos son tan exagerados que ni siquiera es gracioso. A pesar de los avances en el reconocimiento de voz, todavía hacemos las cosas a mano: escribimos en lugar de hacer columpios, e incluso entonces, hay muchas personas que todavía hacen columpios. Así que dudo seriamente que el “boom” de la programación termine, simplemente se transformará en algo similar.

El software no es diferente a cualquier otra habilidad, a medida que la tecnología avanza, las habilidades evolucionan y también lo hace la forma en que los humanos participan, pero no cambia el hecho de que los humanos participan en el proceso. En otras palabras, la automatización y el progreso no eliminan la necesidad de que un humano haga algo, simplemente multiplica el efecto que puede tener la acción, que puede ser algo bueno o malo. Hay algo muy cierto acerca de “errar es humano, para realmente arruinar necesitas una computadora”, ya que refleja el hecho tan cierto de que las computadoras / programación simplemente amplifican las habilidades humanas.

Cuando surgió la robótica industrial, todos temían que los individuos fueran reemplazados; en su lugar, creó la necesidad de que las personas instalen, programen, mantengan, supervisen y reparen los robots. Y muchas veces, la automatización es en realidad más intensiva en humanos que la no automatización. La mayoría de las personas no se dan cuenta de que se necesita una pequeña carga de autobuses para operar un avión no tripulado.

Hay un paralelo en la programación. Comencé a programar en básico y ensamblaje, dependiendo del proyecto (hace más de 30 años). Crear una buena ‘GUI’ era impensable y hablar con un dispositivo a través de un puerto serie implicaba escribir un código de interrupción de bajo nivel en un chip con 256 bytes de RAM para poder pasar unos pocos bytes por segundo. No era raro trabajar de 8 a 12 horas en un buen día, solo “programando”. Avance rápido hasta hoy: adivine qué, todavía trabajo de 8 a 12 horas en un buen día (aunque hoy en día los llamo malos), pero puedo crear una GUI en 10 minutos, utilizar una conexión USB con una línea de código para transferir megabytes / seg, etc., se entiende la idea. Por lo tanto, el “auge de la programación” no terminará, solo las herramientas y capacidades serán radicalmente diferentes.

Lo que espero que termine es la falsa creencia de que centrarse en la tecnología de hoy es una mejor alternativa que la educación en los fundamentos, por lo que el “boom” en los programadores de Turbo Pascal ha terminado (¡maldición, quiero que me devuelvan mis 2 horas de seminario!) Pero en serio No cabe duda de que el auge terminará para las personas inteligentes con habilidades en algoritmos fundamentales para resolver problemas eternos.

Digamos que estamos hablando de usar algún tipo de IA para producir el software. A menos que usemos alguna otra variante de IA, probablemente busquemos usar el aprendizaje automático (hipótesis a partir de este momento). Invariablemente vamos a necesitar muchos datos sobre cómo se crea típicamente el software para el aprendizaje automático. Entonces, la IA depende de la cantidad de datos y su alcance.

Si decimos restringirlo solo a aplicaciones iOS en lenguaje Swift y solo a aplicaciones simples y de una sola función, ¡entonces sí! Creo que la IA tiene una oportunidad. Entonces, para aplicaciones simples y aburridas, digamos una aplicación de portal simple para un negocio, existe la posibilidad de que el software pueda automatizarlas.

Eso sí, esta hipótesis supone que el tiempo se detiene en el sentido de que las empresas aún querrían crear aplicaciones simples en el futuro. Es más probable que la complejidad de la aplicación siga la demanda futura, especialmente teniendo en cuenta que los consumidores tienen un deseo insaciable de nuevos y frescos.

También supone que estas aplicaciones no fallarán. La mayor parte de mi trabajo diario es la corrección de errores en partes que pensé que había solucionado. Necesitaría otro conjunto de inteligencia artificial solo para reconocer los problemas de errores, y mucho menos ejecutar las posibles soluciones. En este momento, me parece un tanto contradictorio si la IA fuera capaz de corregir fallas o si realmente existe un software de autocorrección. La naturaleza de una falla es exactamente lo que una computadora no puede resolver. Además, nunca me he enterado de nada remotamente capaz de automatizar la corrección de errores, por lo que es probable que nadie esté trabajando en ello o un ejercicio inútil para empezar.

Parece de estas deducciones que es muy posible que suceda, pero nunca erradicará la necesidad de un nivel humano de inteligencia, creatividad y, lo más importante, pensamiento crítico.

Sí, por supuesto que lo hará.

Cuando eso sucederá, no tengo idea. Pero los ciclos económicos no duran para siempre. En algún momento futuro, el software podrá programarse solo para la mayoría de las tareas.

El proyecto DeepMind de Google afirma estar trabajando en tales capacidades: la computadora con aprendizaje humano se programará a sí misma

Aquí hay una discusión en StackExchange sobre el tema de las computadoras de autoprogramación: ¿Es imaginable enseñarle a una máquina cómo programarse a una especificación definida?

Aquí está el artículo de Wiki sobre código auto modificable: Código auto modificable

El desarrollo de software será lo último en automatizarse. Es literalmente la transición entre la necesidad humana y las instrucciones de la computadora. Si un sistema puede determinar la necesidad humana y satisfacerla sin un humano para facilitar el proceso, tendrá un verdadero ai. Decirle lo que necesita no será más complejo que describir lo que necesita a un programador, y completará los vacíos y se extrapolará de la misma manera que lo haría un programador, desarrollando nuevos algoritmos según sea necesario. Si podemos lograr eso, el ai podrá realizar cualquier tarea mental que deseemos, por lo que no quedará ninguna tarea mental o física para que los humanos la llenen

Potencialmente, una vez que tengamos una IA verdaderamente evolutiva. Por el momento, sin embargo, los programas solo pueden crear programas menores y más simples. Los programas “superiores” aún deben ser creados por personas, específicamente programadores.

Sí, la automatización es el sueño de cualquier ingeniero informático o programador. Odiamos las tareas aburridas y repetitivas.

Pero eso no significa que no serán necesarios. Es solo que el nivel de abstracción aumentará en uno. ¿Quién programará las computadoras para que se programen ellos mismos?

En cierto sentido, la programación es decir lo que quieres a la computadora, con detalles increíbles.

Si usted es gerente de producto, sabría lo difícil y complicado que es “traducir” lo que los clientes quieren a los documentos de software.

“Algún día”? Claro, por supuesto que llegará a esto. Durante nuestra vida? ¡Probablemente no!

A partir de 2016, es difícil para dos adultos con educación universitaria, hablantes nativos del mismo idioma, ponerse de acuerdo sobre cómo debe verse un programa de computadora y qué debe hacer. Cada vez que los programadores y los clientes interactúan, debe haber algún malentendido en ambas partes y esto se traduce en horas y horas de volver a hacer algunas partes de una aplicación.

Por lo tanto, no creo que la automatización del desarrollo de programas informáticos llegue demasiado pronto.

Sí.

Todas las profesiones pueden y estarán completamente automatizadas, incluida la profesión de programador. Si la masa desordenada de grasa llamada cerebro humano puede hacer algo, entonces una IA lo suficientemente avanzada también puede hacerlo.

La pregunta es: ¿qué tan avanzada debe ser la IA para reemplazar completamente a los programadores?

Probablemente sea imposible prescindir de la inteligencia general artificial (aunque no estoy seguro de eso). Si es cierto, los programadores tendrán al menos 10, tal vez incluso 20 años.

Cuando las computadoras podían investigar solo entonces. IA tiene muchas limitaciones. La inteligencia natural es muy completa. Así que hoy podemos decir que esto no sucederá en las próximas décadas. En el futuro puede cambiar. Pero hoy no.

La programación moderna ni siquiera era una ‘cosa’ hace unas décadas, pero luego la creamos. Mañana se revelará otro concepto muy extremo y los humanos nos esforzaremos por construir cosas con esa ‘cosa’. Y la inteligencia artificial podría ser el próximo invento que nos ayude con esa ‘cosa’, en lugar de las computadoras que estamos usando hoy.