Llegamos a ustedes gracias a:



Columnas de opinión

Doce predicciones para el futuro de la programación

Por: Peter Wayner, editor de la edición americana de InfoWorld

[04/02/2014] Si darle a un blanco es difícil y darle a un blanco móvil es aún más difícil, entonces crear una nueva tecnología que tenga éxito es casi imposible, pues la forma y naturaleza del blanco cambia a medida que se mueve. Piense en construir una nueva laptop justo cuando las laptops ya no son tan atractivas; o una aplicación de tenencia obligatoria justo cuando los teléfonos inteligentes alcanzan el plateau de productividad; o una sorprendente experiencia en tabletas cuando el futuro de los wearables empieza a hacerse realidad.
No es un secreto que las tendencias tecnológicas se mueven rápido, y las herramientas y medios para construir esas tecnologías evolucionan constantemente. Pero si no levanta su cabeza de vez en cuando para observar los proyectos de los años anteriores, podría terminar escribiendo código en el fondo del agujero de un conejo.
Para ayudarle a prepararse para -o al menos comenzar a contemplar- un futuro que se aproxima más rápido de lo que podemos ver, hemos recogido una docena de predicciones acerca de cómo se desenvolverán los próximos cinco años de códigos. Nuestra bola de cristal es muy subjetiva, y algunas de las siguientes conjeturas podrían no ser universales. Algunas no se realizarán completamente dentro de los próximos cinco años. Otras ya son realidad, pero el alcance de su verdad no se encuentra bien establecido o es ampliamente conocido como pronto lo será. Algunas pueden surgir como medias verdades, porque una parte de los que escriben código pueden tomar un camino diferente. Algunas incluso pueden ser erróneas.
A pesar de todo esto, hay algo de verdad aquí. Léalas rápidamente porque el futuro está cambiando más rápido de lo que sabemos.
 
Predicción No. 1: Las GPU serán las próximas CPU
¿Recuerda los días cuando las personas presumían de la CPU que tenían? Ahora incluso la mejor de las CPU difícilmente cuesta más de 200 dólares, mientras que las tarjetas gráficas generalmente cuestan entre 500 a 600 dólares, o mucho más. A los gamers les encanta presumir del poder de sus tarjetas gráficas, no de sus CPU, y esa es la tendencia del mercado.
El resto del mundo poco a poco lo va asumiendo. Más y más software utiliza las GPU. Cierto, algunas de las primeras incursiones son inherentemente procesos gráficos, como el trabajo de los navegadores web, pero cada vez más estamos viendo que las aplicaciones -que no tienen nada que ver con dibujar bonitas imágenes- están siendo reescritas para utilizar la arquitectura paralela de las GPU. Los físicos las usan para estudiar la materia; los químicos las usan para estudiar reacciones; los astrónomos simulan una galaxia con tarjetas gráficas; los biólogos calculan estadísticas mediante las GPU. Y durante algún momento de este año, subí la temperatura de mi oficina al usar las GPU para buscar bitcoins.
Estas prácticas se van a expandir cada vez más. Pronto la mejora en los compiladores hará posible escribir código y dejar que el compilador detecte cuándo ya puede correr con efectividad en una GPU. Las herramientas académicas ya pueden hacer esto a cierto nivel, pero ello se hará más popular cuando sea más sencillo para cualquiera hacerlo en cualquier proyecto.
Predicción No. 2: Las bases de datos realizarán análisis cada vez más sofisticados
Una vez que los programadores cedieron el control de los datos a algo llamado base de datos, dejaron de ser programadores y comenzaron a ser usuarios de bases de datos. Esto no es malo. Después de todo, las bases de datos están hechas para ser más eficientes en el manejo de los datos que cualquier cosa que un programador humano pueda crear, especialmente con un plazo ajustado. También son -por lo general- muy eficientes en el uso de la RAM y manejando la jerarquía de la memoria. Poner los datos en una base de datos y dejar que ella haga su trabajo es generalmente la solución más inteligente para trabajar con datos, y va a ser incluso más inteligente cuando las propias bases de datos se hagan más inteligentes con el tiempo.
Eso se debe a que las bases de datos del futuro van a hacer más que solo almacenar números. Muchos sistemas de bases de datos ya tienen sofisticados motores de reportes (es decir, inteligencia de negocios), y estos extras se van a hacer más poderosos, permitiendo a las bases de datos correr algoritmos más sofisticados sobre las tablas, buscar con mayor eficiencia patrones en los datos, y hacer gran parte del trabajo que actualmente se conoce con el sonoro nombre de big data.
Este poder y sofisticación será impulsado por el costo de trasladar los datos. El simple hecho de extraer información de la base de datos y llevarla a un paquete de big data separado, será una actividad que consuma tiempo y requerirá de mucha más programación. Dejar los datos en la base de datos y permitir que su motor realice análisis será mucho más rápido, ya que limitará el gasto en comunicaciones y reducirá la cantidad de programación necesaria para extraer valor del almacén de datos.
Predicción No. 3: JavaScript para todo
No, JavaScript no será el único lenguaje del mundo de la programación, especialmente dado el sorprendente número de avisos que buscan programadores de Cobol, pero ciertamente eso va a parecer. JavaScript se encuentra en el navegador, el cual domina ahora casi todo lo que hace una computadora cliente. Ahora el lado del servidor está adoptándolo gracias a herramientas como Node.js.
JavaScript incrementará su dominio en otras áreas. Alguna vez, la única forma de ingresar a un smartphone era escribir código en el lenguaje nativo exigido por el fabricante: Objective-C para el iPhone; Java para Android; C# para Microsoft. Ahora, la mayoría de los desarrolladores móviles pueden conseguir el desempeño que desean con aplicaciones HTML5 corriendo en vistas similares a las de un navegador. El resultado puede no ser igual al código nativo, pero JavaScript es lo suficientemente bueno y portable para la web.
El navegador no está simplemente colonizando teléfonos; se está comiendo plataformas completas. Chrome OS y Chromebooks están dejando obsoletos a los sistemas operativos regulares. ¿Por qué preocuparse de esa capa cuando JavaScript y el navegador lo pueden hacer todo.
El mainframe tendrá Cobol. Los biólogos probablemente se queden con Python. Linux se escribirá en C. Pero casi todo lo demás estará bien, mientras JavaScript se come al mundo.
Predicción No. 4: Android en todos los dispositivos
Cuando el navegador no es el ganador, Android se encuentra cerca. Los diseñadores de cámaras, que se ven amenazados por los teléfonos celulares que poseen buenos lentes, comenzaron a colocar Android en las cámaras, y ahora uno puede correr Instagram en una Nikon. ¿Eso transforma a Nikon en una empresa de computadoras? ¿Siquiera importa?
Existen refrigeradores, autorradios, relojes, televisiones e incluso auriculares Android. Algunos se quejan que la interfase de usuario es muy compleja porque puede hacer demasiado, pero eso es un signo de que se está perdiendo perspectiva. La capa de la interfase de usuario siempre puede simplificarse. Si Android está corriendo por debajo, la plataforma será la dominante.
Va a ser incluso más complicado. Los fabricantes de PC están observando el mundo de las tabletas y se sienten dejados de lado. Su solución es correr Android en Windows y dejar que las personas usen sus aplicaciones Android también en sus escritorios. Algunos simplemente corren los emuladores de Android que utilizan los programadores, pero otros ven más allá y desean crear marcas como PC Plus. Una vez que Android se apodere de la PC, se combinará con el navegador para empujar a las aplicaciones nativas de Windows a un distante tercer lugar en el mindshare.
Predicción No. 5: La Internet de las Cosas ­-más plataformas que nunca
Un efecto colateral de que Android (y Linux) colonicen el mundo, es que cada vez más objetos se unirán a la Internet de las Cosas. Android en el refrigerador significará la oportunidad de escribir código para el propio refrigerador, ya sea que se trate de una aplicación para mostrar los dibujos de los niños, para contar las calorías, o para tener un motor de sugerencias de recetas en base a lo que haya dentro de la caja. ¿Quién sabe?
De todas las nuevas y numerosas plataformas que se vienen, la más importante será el automóvil. La navegación y las compras son solo el inicio. Cuando los automóviles autónomos salgan a las calles, habrá incluso más oportunidades para que los desarrolladores ganen dinero con la localización e información del vehículo.
La clave es imaginar cuales nuevas características son esenciales para los nuevos minios. Aunque los sistemas operativos como Android ofrecen un núcleo único, cada plataforma requerirá de características personalizadas. Los juguetes robóticos, por ejemplo, podrían necesitar filtros de contenido para proporcionar contenido acorde a la edad del usuario. Los termostatos van a querer interactuar con al pronóstico del tiempo. Construir estas API con las características adecuadas será fundamental para colonizar la Internet de las Cosas.
Predicción No. 6: El código abierto encontrará nuevas formas de cobrarnos
A pesar del éxito de los stacks de código abierto como Android, Ubuntu o MySQL, aún queda un problema: encontrar los ingresos necesarios para soportar el desarrollo. Existen varias historias sobre la forma en que el código abierto ha ayudado a los hackers, pero no existen muchos ejemplos sobre cómo las empresas hayan construido una ecología relativamente estable que permita que los programadores puedan comprarse comida.
La gran mayoría de las compañías de código abierto distribuyen algo que podrían llamarse una versión de demostración bajo una licencia de código abierto. Pero alguna especie de salsa secreta es mantenida sin revelar para que los programadores puedan tener algo con qué negociar. El mundo es así. ¿Por qué comprar la vaca si se puede tener gratis la leche? Los mejores proyectos de código abierto encontrarán la forma de ajustar los pernos de una manera confortable sin alejar a los clientes.
Predicción No. 7: Las aplicaciones web de WordPress serán abundantes
El más grande error que la gestión de Obama tuvo fue intentar construir sus sitios web de seguros desde cero. Ya nadie hace eso. ¿Por qué molestarse cuando uno puede añadir un plug in a WordPress? Si es muy quisquilloso, puede trabajar con Joomla o Drupal. El punto en realidad no tiene que ver con la plataforma, sino con el hecho de que cada vez hay menos razones para crear sus propias aplicaciones web, ya que hay muchas funcionalidades que se han construido en los frameworks dominantes.
El juego se hace incluso más interesante cuando uno comienza a hackear el código. WordPress tiene su propio editor incorporado, de tal forma que uno puede hacer desarrollo dentro de WordPress. No hay un debugger, pero uno puede arreglárselas. Si WordPress añade un navegador de base de datos como PHPMyAdmin y proporciona unas cuantas herramientas de debugging básico, el desarrollo se acelera.
Predicción No. 8: Los plug-ins van a reemplazar a los programas
Las aplicaciones web básicas no son las únicas que aprovechan el poder del código que puede incorporarse en un framework. Photoshop solía ser el motor dominante para trabajar imágenes, en parte debido al fértil mundo de plug ins. Ahora las nuevas aplicaciones como MagicHour han hecho más simples los plug ins. Los usuarios de MagicHour, por ejemplo, pueden compartir filtros de la misma forma en que se comparten fotos. La mayoría de las plataformas más importantes ofrecen una buena API de plug ins, y las que tienen las mejores API tienen ecologías muy fértiles llenas de miles de módulos, librerías y plug ins.
Esta ecología de códigos significa que los programadores escribirán más partes de códigos y menos aplicaciones. Un buen pedazo de código puede ser millones de veces más poderoso que una gran aplicación con megabytes de archivos binarios. Un pequeño trozo de código puede aprovechar toda la ecología. Una gran aplicación debe hacerlo todo por sí misma.
Los buenos programadores aprenderán a aprovechar esto mediante la creación de plug ins, no con programas. Ellos aprenderán las API de los sistemas host y unirán las partes. Serán muy pocos los que construyan algo desde cero. Todos seremos parte de ello.
Predicción No. 9: Larga vida a la línea de comando
Aunque se ha vuelto más sencillo hacer una aplicación mediante clics, una sorprendente cantidad de trabajo aún se realiza en editores de texto. Por tanto, contrario a lo que se pudiera pensar, la línea de comando no va a desaparecer. De hecho, cada vez más herramientas modernas trabajarán con la línea de comando.
El hecho es que las líneas de comando son demasiado flexibles y demasiado universales como para ser suplantadas. Las GUI que ofrecen interfases donde basta hacer clics y tienen widgets de jalar y soltar podrían llamar la atención, pero los programadores siguen atentos al texto.
La facilidad de escribir código es el motivo principal de que las líneas de comando continuamente sigan manteniéndose. Aunque algunas empresas como Apple tienen herramientas decentes para escribir GUIs, éstas nunca han sido tan flexibles o apilables como la línea de comando. ¿Cuántas personas escriben shell scripts para sus Macs, y cuántas escriben Apple Scripts?
La línea de comando vivirá porque es simple y ampliable. Si uno tiene un script, uno fácilmente puede ampliarlo y pegarlo a otros scripts.
Predicción No. 10: Hacerlo fácil no va a resultar
En los pasados 50 años, los programadores han intentado que sea sencillo para las personas aprender a programar, y por 50 años han tenido éxito, pero solo enseñando las tareas más simples. El 95% del mundo puede idear estructuras tipo si… entonces…, pero eso no es lo mismo que ser un programador.
Eso no va a evitar que personas bien intencionadas intenten hacer muy sencilla la programación para que todos puedan hacerla. Los evangelistas venderán grandes sueños de un mundo donde todos programen, y señalarán que la única forma en que el país X puede mantener su liderazgo es si todos sus ciudadanos aprenden a programar con Ruby.
La verdadera programación significa entender los invisibles números que bailan dentro de la pequeña caja. Significa entender las convenciones para crear software y para particionar responsablemente, de tal forma que el software pueda correr limpiamente. Solo algunos cerebros parecen estar en capacidad de manejar este trabajo, y parece poco probable que la proporción de las personas con esta capacidad cambie significativamente luego de más de 50 años de intentos. Enseñar a todos clausulas condicionales es una bonita idea, pero no es lo mismo que crear más programadores.
Y no, desarrollar lenguajes cuya sintaxis sea más similar al inglés, no va a ayudar tampoco.
Predicción No. 11: El outsourcing y el insourcing seguirán igual
Una predicción estándar es que todo el trabajo de programación va a ir hacia los países con los salarios más bajos.
Esta ley de la economía se refleja en la predicción de que el trabajo más básico será reemplazado por herramientas automatizadas, y que el trabajo real será para aquellos que entiendan el negocio.
Ambas van a seguir siendo ciertas. Los equipos de outsourcing ganarán los trabajos mediante propuestas bajas, pero serán eliminados por las herramientas automatizadas. Un conjunto de sitios web hace sencillo contratar trabajadores de bajo salario alrededor del mundo. Los grupos que dependen de los contratos de outsourcing se enfrentarán a los equipos internos que conocen el negocio y no necesitan ayuda.
Predicción No. 12: La gerencia seguirá sin entender los códigos y a los que escriben los códigos
Una de las conversaciones más dolorosas es escuchar a aquellas personas de traje y corbata -que no son programadores- realizar sus pedidos. Ellos ven que Facebook o eBay o algún otro sitio hace algo muy hábil y luego quieren tener ese botón de inmediato. En ocasiones los pedidos funcionan, pero generalmente terminan en frustración, cuando los de traje no consiguen lo que querían.
La respuesta típica es intentar contratar a un graduado de 22 años de Stanford. Y de ningún otro lugar. Una persona de 23 años ya se encuentra en la cima y probablemente ya piense en salir de la oficina. El de 22 años podrá trabajar todos los millones de horas necesarias para agregar esa apariencia cool al CSS.
Estas personas de traje pueden pasar años aprendiendo la tecnología, pero es más sencillo contratar a algunos jóvenes. Su incapacidad para entender la tecnología básica es una de las más grandes razones para la discriminación por edad. La única solución es buscar algún unicornio que haga programación.
Estas compañías que van más allá de los sueños y encuentran alguna forma de atraer a los talentos de todos los demás son las que tendrán éxito. Ellas encontrarán la forma de trabajar a un ritmo adecuado para crear software estable que ofrezca las características que sean útiles.
InfoWorld (EE.UU.)