Futuro del desarrollo de software: Futuro de las computadoras P2

CREDITO DE IMAGEN: carrera cuántica

Futuro del desarrollo de software: Futuro de las computadoras P2

    En 1969, Neil Armstrong y Buzz Aldrin se convirtieron en héroes internacionales al ser los primeros humanos en pisar la Luna. Pero mientras estos astronautas eran los héroes ante la cámara, hay miles de héroes anónimos que sin su participación, ese primer alunizaje tripulado no habría sido imposible. Algunos de estos héroes fueron los desarrolladores de software que codificaron el vuelo. ¿Por qué?

    Bueno, las computadoras que existían en ese momento eran mucho más simples de lo que son hoy. De hecho, el teléfono inteligente desgastado de la persona promedio es varios órdenes de magnitud más poderoso que cualquier cosa a bordo de la nave espacial Apolo 11 (y toda la NASA de la década de 1960). Además, las computadoras en ese momento fueron codificadas por desarrolladores de software especializados que programaron software en el lenguaje de máquina más básico: código de ensamblaje AGC o simplemente, 1 y 0.

    Por contexto, uno de estos héroes anónimos, el Director de la División de Ingeniería de Software del programa espacial Apolo, Margaret Hamilton, y su equipo tuvo que escribir una montaña de código (que se muestra a continuación) que, con los lenguajes de programación actuales, podría haberse escrito con una fracción del esfuerzo.

    (En la foto de arriba está Margaret Hamilton de pie junto a una pila de papel que contiene el software del Apolo 11).

    Y a diferencia de hoy en día, donde los desarrolladores de software codifican alrededor del 80-90 por ciento de los escenarios posibles, para las misiones Apolo, su código tenía que dar cuenta de todo. Para poner esto en perspectiva, la propia Margaret dijo:

    "Debido a un error en el manual de la lista de verificación, el interruptor del radar de encuentro se colocó en la posición incorrecta. Esto provocó que enviara señales erróneas a la computadora. El resultado fue que se le pedía a la computadora que realizara todas sus funciones normales para aterrizar". mientras recibía una carga adicional de datos espurios que consumían el 15% de su tiempo. La computadora (o más bien el software que contiene) era lo suficientemente inteligente como para reconocer que se le pedía que realizara más tareas de las que debería realizar. Luego envió sonó una alarma, lo que significó para el astronauta, estoy sobrecargado con más tareas de las que debería estar haciendo en este momento, y me voy a quedar solo con las tareas más importantes, es decir, las necesarias para aterrizar... En realidad , la computadora fue programada para hacer más que reconocer las condiciones de error. Se incorporó un conjunto completo de programas de recuperación en el software. La acción del software, en este caso, fue eliminar las tareas de menor prioridad y restablecer las más importantes... Si la computadora no hubierareconoció este problema y tomó medidas de recuperación, dudo que el Apolo 11 hubiera sido el alunizaje exitoso que fue".

    — Margaret Hamilton, Directora de Programación de Computadoras de Vuelo de Apollo MIT Draper Laboratory, Cambridge, Massachusetts, "Computer Got Loaded", Carta a Datamación, Marzo 1, 1971

    Como se insinuó anteriormente, el desarrollo de software ha evolucionado desde aquellos primeros días de Apolo. Los nuevos lenguajes de programación de alto nivel reemplazaron el tedioso proceso de codificar con 1 y 0 por codificar con palabras y símbolos. Las funciones como generar un número aleatorio que solían requerir días de codificación ahora se reemplazan por escribir una sola línea de comando.

    En otras palabras, la codificación de software se ha vuelto cada vez más automatizada, intuitiva y humana con cada década que pasa. Estas cualidades solo continuarán en el futuro, guiando la evolución del desarrollo de software en formas que tendrán un profundo impacto en nuestra vida cotidiana. Esto es lo que este capítulo de la Futuro de las computadoras la serie explorará.

    Desarrollo de software para las masas

    El proceso de reemplazar la necesidad de codificar 1 y 0 (lenguaje de máquina) con palabras y símbolos (lenguaje humano) se conoce como el proceso de agregar capas de abstracciones. Estas abstracciones se han presentado en forma de nuevos lenguajes de programación que automatizan funciones complejas o comunes para el campo para el que fueron diseñados. Pero a principios de la década de 2000, surgieron nuevas empresas (como Caspio, QuickBase y Mendi) que comenzaron a ofrecer lo que se denomina plataformas sin código o de bajo código.

    Estos son tableros en línea fáciles de usar que permiten a los profesionales no técnicos crear aplicaciones personalizadas adaptadas a las necesidades de su negocio mediante la unión de bloques de código visuales (símbolos/gráficos). En otras palabras, en lugar de cortar un árbol y convertirlo en un vestidor, lo construyes con piezas prefabricadas de Ikea.

    Si bien el uso de este servicio aún requiere un cierto nivel de conocimientos informáticos, ya no necesita un título en informática para usarlo. Como resultado, esta forma de abstracción está permitiendo el surgimiento de millones de nuevos "desarrolladores de software" en el mundo corporativo, y está permitiendo que muchos niños aprendan a codificar a una edad más temprana.

    Redefiniendo lo que significa ser un desarrollador de software

    Hubo un tiempo en que un paisaje o el rostro de una persona solo podía plasmarse en un lienzo. Un pintor tendría que estudiar y practicar durante años como aprendiz, aprendiendo el oficio de pintar: cómo mezclar colores, qué herramientas son las mejores, las técnicas correctas para ejecutar una imagen específica. El costo del oficio y los muchos años de experiencia necesarios para realizarlo bien también significaron que los pintores eran pocos y distantes entre sí.

    Luego se inventó la cámara. Y con el clic de un botón, se capturaron paisajes y retratos en un segundo que, de lo contrario, tomaría días o semanas pintar. Y a medida que las cámaras mejoraron, se abarataron y se volvieron abundantes hasta el punto de que ahora están incluidas incluso en el teléfono inteligente más básico, capturar el mundo que nos rodea se convirtió en una actividad común e informal en la que todos participan.

    A medida que avanzan las abstracciones y los nuevos lenguajes de software automatizan el trabajo de desarrollo de software cada vez más rutinario, ¿qué significará ser un desarrollador de software dentro de 10 a 20 años? Para responder a esta pregunta, analicemos cómo los futuros desarrolladores de software probablemente construirán las aplicaciones del mañana:

    *Primero, todo el trabajo de codificación estandarizado y repetitivo desaparecerá. En su lugar, habrá una amplia biblioteca de comportamientos de componentes predefinidos, interfaces de usuario y manipulaciones de flujo de datos (piezas de Ikea).

    *Al igual que hoy, los empleadores o empresarios definirán objetivos y entregables específicos para que los desarrolladores de software los ejecuten a través de aplicaciones o plataformas de software especializadas.

    *Estos desarrolladores luego trazarán su estrategia de ejecución y comenzarán a crear prototipos de los primeros borradores de su software accediendo a su biblioteca de componentes y utilizando interfaces visuales para vincularlos: interfaces visuales a las que se accede a través de realidad aumentada (AR) o realidad virtual (VR).

    *Los sistemas de inteligencia artificial (IA) especializados diseñados para comprender los objetivos y los resultados implícitos en los borradores iniciales de sus desarrolladores, luego refinarán el diseño del software redactado y automatizarán todas las pruebas de control de calidad.

    *Basándose en los resultados, la IA le hará una multitud de preguntas al desarrollador (probablemente a través de una comunicación verbal similar a la de Alexa), buscando comprender y definir mejor los objetivos y entregables del proyecto y discutir cómo debería actuar el software en varios escenarios. y ambientes.

    *Según los comentarios del desarrollador, la IA aprenderá gradualmente su intención y generará el código para reflejar los objetivos del proyecto.

    *Esta colaboración hombre-máquina de ida y vuelta iterará una versión tras otra del software hasta que una versión finalizada y comercializable esté lista para la implementación interna o para la venta al público.

    *De hecho, esta colaboración continuará después de que el software se exponga al uso en el mundo real. A medida que se informan errores simples, la IA los corregirá automáticamente de una manera que refleje los objetivos originales deseados descritos durante el proceso de desarrollo del software. Mientras tanto, los errores más graves requerirán una colaboración humana-IA para resolver el problema.

    En general, los futuros desarrolladores de software se centrarán menos en el "cómo" y más en el "qué" y el "por qué". Serán menos artesanos y más arquitectos. La programación será un ejercicio intelectual que requerirá personas que puedan comunicar metódicamente la intención y los resultados de una manera que una IA pueda entender y luego autocodificar una aplicación o plataforma digital terminada.

    Desarrollo de software impulsado por inteligencia artificial

    Dada la sección anterior, está claro que creemos que la IA desempeñará un papel cada vez más central en el campo del desarrollo de software, pero su adopción no tiene únicamente el propósito de hacer que los desarrolladores de software sean más efectivos, también hay fuerzas comerciales detrás de esta tendencia.

    La competencia entre las empresas de desarrollo de software es cada vez más feroz con cada año que pasa. Algunas empresas compiten comprando a sus competidores. Otros compiten en la diferenciación de software. El desafío con la última estrategia es que no es fácilmente defendible. Cualquier característica o mejora del software que una empresa ofrece a sus clientes, sus competidores pueden copiarla con relativa facilidad.

    Por esta razón, quedaron atrás los días en que las empresas lanzaban software nuevo cada uno o tres años. En estos días, las empresas que se enfocan en la diferenciación tienen un incentivo financiero para lanzar nuevo software, correcciones de software y funciones de software cada vez más regularmente. Cuanto más rápido innovan las empresas, más impulsan la lealtad del cliente y aumentan el costo de cambiar a la competencia. Este cambio hacia la entrega regular de actualizaciones de software incrementales es una tendencia llamada "entrega continua".

    Desafortunadamente, la entrega continua no es fácil. Apenas una cuarta parte de las empresas de software actuales pueden ejecutar el programa de lanzamiento exigido por esta tendencia. Y es por eso que hay tanto interés en usar la IA para acelerar las cosas.

    Como se describió anteriormente, la IA jugará eventualmente un papel cada vez más colaborativo en la redacción y el desarrollo de software. Pero a corto plazo, las empresas lo están utilizando para automatizar cada vez más los procesos de control de calidad (pruebas) del software. Y otras empresas están experimentando con el uso de IA para automatizar la documentación del software: el proceso de seguimiento del lanzamiento de nuevas funciones y componentes y cómo se produjeron hasta el nivel del código.

    En general, la IA desempeñará cada vez más un papel central en el desarrollo de software. Aquellas empresas de software que dominen su uso desde el principio finalmente disfrutarán de un crecimiento exponencial sobre sus competidores. Pero para darse cuenta de estas ganancias de la IA, la industria también necesitará ver avances en el lado del hardware; la siguiente sección profundizará en este punto.

    Software como servicio

    Todo tipo de profesionales creativos utilizan el software de Adobe cuando crean arte digital o trabajos de diseño. Durante casi tres décadas, compró el software de Adobe en forma de CD y fue propietario de su uso a perpetuidad, comprando futuras versiones actualizadas según fuera necesario. Pero a mediados de la década de 2010, Adobe cambió su estrategia.

    En lugar de comprar CD de software con claves de propiedad irritantemente elaboradas, los clientes de Adobe ahora tendrían que pagar una suscripción mensual por el derecho a descargar el software de Adobe en sus dispositivos informáticos, software que solo funcionaría junto con una conexión de Internet regular a constante a los servidores de Adobe. .

    Con este cambio, los clientes ya no eran propietarios del software de Adobe; lo alquilaron según las necesidades. A cambio, los clientes ya no tienen que comprar constantemente versiones actualizadas del software de Adobe; siempre que se suscribieran al servicio de Adobe, siempre tendrían las últimas actualizaciones cargadas en su dispositivo inmediatamente después del lanzamiento (a menudo varias veces al año).

    Este es solo un ejemplo de una de las mayores tendencias de software que hemos visto en los últimos años: cómo el software está pasando a ser un servicio en lugar de un producto independiente. Y no solo software especializado más pequeño, sino sistemas operativos completos, como hemos visto con el lanzamiento de la actualización de Windows 10 de Microsoft. En otras palabras, software como servicio (SaaS).

    Software de autoaprendizaje (SLS)

    Sobre la base del cambio de la industria hacia SaaS, está surgiendo una nueva tendencia en el espacio del software que combina SaaS e IA. Empresas líderes como Amazon, Google, Microsoft e IBM han comenzado a ofrecer su infraestructura de IA como un servicio a sus clientes.

    En otras palabras, la IA y el aprendizaje automático ya no son accesibles solo para los gigantes del software, ahora cualquier empresa y desarrollador puede acceder a los recursos de IA en línea para crear software de autoaprendizaje (SLS).

    Discutiremos el potencial de la IA en detalle en nuestra serie El futuro de la inteligencia artificial, pero para el contexto de este capítulo, diremos que los desarrolladores de software actuales y futuros crearán SLS para crear nuevos sistemas que anticipen las tareas que deben realizarse y simplemente complételos automáticamente por usted.

    Esto significa que un futuro asistente de IA aprenderá su estilo de trabajo en la oficina y comenzará a completar tareas básicas por usted, como formatear documentos tal como le gustan, redactar sus correos electrónicos en su tono de voz, administrar su calendario de trabajo y más.

    En el hogar, esto podría significar tener un sistema SLS que administre su futuro hogar inteligente, incluidas tareas como precalentar su hogar antes de su llegada o realizar un seguimiento de los alimentos que necesita comprar.

    Para la década de 2020 y hasta la década de 2030, estos sistemas SLS desempeñarán un papel vital en los mercados corporativos, gubernamentales, militares y de consumo, ayudando gradualmente a cada uno a mejorar su productividad y reducir los desechos de todo tipo. Cubriremos la tecnología SLS con más detalle más adelante en esta serie.

    Sin embargo, hay una trampa en todo esto.

    La única forma en que funcionan los modelos SaaS y SLS es si Internet (o la infraestructura detrás de él) continúa creciendo y mejorando, junto con el hardware informático y de almacenamiento que ejecuta la 'nube' en la que operan estos sistemas SaaS/SLS. Afortunadamente, las tendencias que estamos rastreando parecen prometedoras.

    Para saber cómo crecerá y evolucionará Internet, lea nuestro futuro de internet serie. Para obtener más información sobre cómo avanzará el hardware de la computadora, ¡siga leyendo usando los enlaces a continuación!

    Serie El futuro de las computadoras

    Interfaces de usuario emergentes para redefinir la humanidad: el futuro de las computadoras P1

    La revolución del almacenamiento digital: el futuro de las computadoras P3

    Una ley de Moore que se desvanece para provocar un replanteamiento fundamental de los microchips: el futuro de las computadoras P4

    La computación en la nube se descentraliza: el futuro de las computadoras P5

    ¿Por qué los países compiten para construir las supercomputadoras más grandes? Futuro de las computadoras P6

    Cómo las computadoras cuánticas cambiarán el mundo: el futuro de las computadoras P7    

    Próxima actualización programada para este pronóstico

    2023-02-08

    Referencias de previsión

    Los siguientes enlaces populares e institucionales fueron referenciados para este pronóstico:

    Se hizo referencia a los siguientes enlaces de Quantumrun para este pronóstico: