¿Cuál es el futuro del desarrollo de software?

¿Cuál es el futuro del desarrollo de software?

Durante años, el desarrollo de software se realizó de forma manual.

Desde perforar tarjetas en FORTRAN hasta componer métodos distribuidos en Go, la disciplina ha permanecido básicamente igual: pensar intensamente sobre un problema, producir un enfoque inteligente (es decir, un algoritmo) y darle a la máquina un par de instrucciones para implementar.

Este enfoque, que puede llamarse "programación explícita", fue clave para todo, desde la computadora central hasta el teléfono inteligente, desde el auge de Internet hasta la revolución móvil. Ha ayudado a crear nuevos mercados y ha convertido a empresas como Apple, Microsoft, Google y Facebook en nombres familiares.

Y, sin embargo, algo faltará. Los sistemas inteligentes imaginados por los antiguos autores de la era de la computación, desde el taxi robot de Philip Dick hasta el C-3PO de George Lucas, continúan la ciencia ficción. Las tareas aparentemente simples desafían obstinadamente la automatización incluso por parte de los científicos informáticos más brillantes. Los expertos acusan a Silicon Valley, ante estos desafíos, de desviarse de los avances básicos para centrarse en empresas incrementales o impulsadas por la moda.

Eso, obviamente, va a cambiar. Los autos autónomos de Waymo han viajado últimamente ocho millones de kilómetros. El motor de traducción de Microsoft, aunque no domina seis millones de formas de comunicación, puede adaptarse a los niveles humanos de precisión en las tareas del chino al inglés. Y las nuevas empresas están abriendo nuevos caminos en lugares como asistentes inteligentes, automatización industrial, detección de fraudes y muchos otros.

Individualmente, estas nuevas tecnologías prometen impactar nuestra vida diaria. En conjunto, representan un cambio radical en la forma en que pensamos sobre el desarrollo de software, y también una desviación notable del modelo de programación explícito.

El gran avance del corazón que respalda cada uno de esos avances es el aprendizaje profundo, una estrategia de inteligencia artificial motivada por la construcción de su cerebro. Lo que comenzó como una herramienta de evaluación de datos comparativamente limitada ahora sirve como algo parecido a un sistema informático general. Supera al software tradicional en una amplia gama de trabajos y finalmente puede entregar los sistemas inteligentes que durante mucho tiempo han eludido a los informáticos, hazañas que la prensa a veces exagera.

Sin embargo, en medio de la exageración del aprendizaje profundo, la mayoría de los observadores pasan por alto la principal razón para ser positivos sobre su futuro: el aprendizaje profundo requiere que los codificadores escriban casi ningún código. En lugar de depender de reglas preestablecidas o facturas si-entonces, un programa de aprendizaje profundo escribe principios automáticamente basándose en ejemplos anteriores. Un desarrollador de software solo tiene que hacer un "esqueleto en bruto", parafraseando a Andrej Karpathy de Tesla, y luego dejar que las computadoras hagan el resto del trabajo.

En este nuevo universo, los programadores ya no tienen que diseñar un algoritmo especial para cada problema. La mayor parte del trabajo se concentra, más bien, en generar conjuntos de datos que reflejen el comportamiento deseado y en la gestión del proceso de formación. Pete Warden, del equipo TensorFlow de Google, señaló esto ya en 2014: "Solía ser un programador" , escribió. " Enseño a las computadoras a crear sus propias aplicaciones".

Nuevamente: el modelo de programación que impulsa las mejoras más importantes en las aplicaciones hoy en día no exige una cantidad significativa de programación real.

¿Qué implica esto para el futuro del desarrollo de software?

La programación y la ciencia de datos convergerán cada vez más

La mayoría de las aplicaciones no incluirán programas de aprendizaje "de un extremo a otro" en el futuro previsible. Se basará en modelos de datos para ofrecer capacidades cognitivas básicas y lógica explícita para interactuar con los usuarios y traducir los resultados. La pregunta "¿debería hacer uso de la IA o incluso de un enfoque convencional para este problema?" Se desarrollará cada vez más. El diseño de sistemas inteligentes requerirá el control de ambos.

Los profesionales de la IA probablemente serán las estrellas de rock

Hacer IA es difícil. Los programadores de inteligencia artificial de rango y archivo, no solo académicos e investigadores brillantes, serán una de las herramientas más valiosas para las empresas de software en el futuro. Esto conlleva un poco de ironía para los codificadores tradicionales, que tienen trabajo automático en diferentes industrias desde la década de 1950 y que actualmente enfrentan la automatización parcial de sus propios trabajos. El requisito de sus servicios seguramente no disminuirá, pero las personas que deseen permanecer a la vanguardia deben, con una buena dosis de escepticismo, controlar las aguas de la IA.

Es necesario construir la cadena de herramientas de IA

Gil Arditi, líder de aprendizaje automático en Lyft, lo dijo mejor. "El aprendizaje automático se encuentra ahora en el período de la sopa primordial. Es muy similar a la base de datos de principios de los 80 o finales de los 70. Tenías que convertirte en un especialista mundial para que estos elementos funcionen ". Los estudios también muestran que muchos modelos de IA son no simple de explicar, insignificante de engañar y susceptible de prejuicios. Las herramientas para abordar estos problemas, entre otros, serán esenciales para desbloquear el potencial de los desarrolladores de IA.

Todos necesitamos familiarizarnos con el comportamiento impredecible

El concepto de "educación" de una computadora es adecuado tanto para programadores como para usuarios. Refuerza la impresión de que las computadoras hacen exactamente lo que decimos y que entradas similares producen salidas similares de manera consistente. Las versiones de IA, por el contrario, actúan como sistemas vivientes que respiran. Las nuevas herramientas harán que se comporten más como programas explícitos, particularmente en configuraciones críticas para la seguridad, sin embargo, corremos el riesgo de perder el valor de estos sistemas, como los movimientos "alienígenas" de AlphaGo, si colocamos las barandas con demasiada fuerza. A medida que crecemos y usamos el software de inteligencia artificial, debemos comprender y adoptar los resultados probabilísticos.

Y espero que la probabilidad de que la IA se apodere de él sea cercana a cero.