Llegamos a ustedes gracias a:



Reportajes y análisis

11 predicciones para el futuro de la programación

[23/01/2017] Lo único que vuela más rápido que el tiempo es el progreso de la tecnología. Una vez, después de un almuerzo, un amigo diseñador de chips se excusó rápidamente con la hábil explicación de que la Ley de Moore significaba que tenía que hacer que su chip fuese 0,67% más rápido cada semana, incluso mientras estaba de vacaciones. Si no lo hacía, los chips no duplicarían su velocidad cada dos años.

Ahora que el 2017 está aquí, es hora de evaluar los cambios tecnológicos que se avecinan, para ayudarle a saber dónde apostar en el desarrollo de habilidades de programación para el futuro.

Desde el creciente dolor de cabeza por la seguridad de la Internet de las cosas (IoT, por sus siglas en inglés) hasta el del aprendizaje automático, el futuro de la programación sigue siendo cada vez más difícil de predecir.

La nube derrotará la Ley de Moore

Existen los negativos que afirman que las compañías que producen chips han golpeado una pared. Ya no están duplicando la velocidad de los chips cada dos años, como lo hicieron durante la época dorada de los 80s y 90s. Pero ya no importa, pues los límites entre los chips están menos definidos que nunca.

En el pasado, la velocidad de la CPU en la caja de su escritorio importaba porque, bueno, solo se podía ir tan rápido como la rueda girada por el hámster en su interior. La compra de un hámster más grande y rápido cada pocos años, también duplicó la productividad.

Pero ahora, la CPU en su escritorio apenas muestra información en la pantalla. La mayor parte del trabajo se hace en la nube, donde no está claro cuántos hámsteres realizan el trabajo. Cuando busca en Google, su enorme nube puede dedicar 10, 20, incluso mil hámsteres para encontrar la respuesta correcta para usted.

El desafío para los programadores es encontrar maneras inteligentes de desplegar elásticamente suficiente potencia de computación para el problema de cada usuario, para que la solución llegue lo suficientemente rápido, y éste no se aburra ni se vaya al sitio de un competidor. Hay mucha potencia disponible. Las compañías de la nube le permitirán manejar la multitud de usuarios, pero debe encontrar algoritmos que trabajen fácilmente en paralelo, y luego hacer los arreglos para que los servidores trabajen en sincronía.

La seguridad de la IoT solo se volverá más aterradora

La botnet de Mirai que se desarrolló en la primavera pasada fue una llamada de atención para los programadores que están creando la próxima generación de la IoT. Estos pequeños dispositivos inteligentes pueden ser infectados como cualquier otro equipo, y pueden utilizar su conexión a Internet para causar estragos y dejar escapar a los perros de guerra. Y como todo el mundo sabe, estos pueden pretender ser cualquiera en Internet.

El problema es que la actual cadena de suministro de gadgets no cuenta con ningún mecanismo para arreglar el software. El ciclo de vida de un gadget suele comenzar con un largo viaje desde una planta de fabricación a un almacén, y finalmente al usuario. No es habitual ser abierto hasta después de 10 meses, entre el embalaje y el primer uso. Los gadgets son enviados alrededor del mundo durante esos meses largos y persistentes. Son puestos en cajas dentro de contenedores de envío. Luego en palés en tiendas grandes o almacenes. A la hora de ser desempacados, cualquier cosa les pudo haber sucedido.

El reto es realizar un seguimiento de todo. Es bastante difícil actualizar las baterías en los detectores de humo cada vez que cambian los relojes. Pero ahora tendremos que estar al tanto de nuestra tostadora, secadora de ropa, y prácticamente todo en la casa. ¿El software está actualizado? ¿Se han aplicado todos los parches de seguridad? El número de dispositivos está dificultando hacer algo inteligente con respecto a la supervisión de la red doméstica. Hay más de 30 dispositivos con direcciones IP conectadas a mi router inalámbrico, y conozco la identidad de 24 de ellos. Si quisiera mantener un firewall inteligente, me volvería loco abriendo los puertos adecuados para cada objeto inteligente.

Dar a estos dispositivos la oportunidad de ejecutar código arbitrario es una bendición y una maldición. Si los programadores quieren realizar tareas inteligentes, y permitir a los usuarios tener máxima flexibilidad, las plataformas deben estar abiertas. Así es como crece la revolución creadora y la creatividad de código abierto. Sin embargo, esto también les da más oportunidades que nunca a los escritores de virus. Todo lo que necesitan hacer es encontrar una marca de widget que no haya actualizado un controlador en particular -¡Voilá!, han encontrado millones de widgets preparados para recibir bots.

El video dominará la web de nuevas maneras

Cuando el comité de estándares HTML comenzó a incorporar las etiquetas de video en el propio HTML, es probable que no tuviesen grandes planes para rehacer el entretenimiento. Posiblemente solo quisieron solucionar las fallas de los plugins. Pero las etiquetas de video básicas responden a los comandos de JavaScript, y eso las hace esencialmente programables.

Este es un gran cambio. En el pasado, la mayoría de videos han sido consumidos muy pasivamente. Uno se sienta en el sofá, presiona el botón de reproducción, y ve lo que el editor del video decidió enseñarnos. Todas las personas que reproducen el video del gato ven a los gatos en la misma secuencia, decidida por el creador del video del gato. Claro, algunos lo adelantan, pero los videos llegan a su conclusión con tanta regularidad como los trenes suizos.

El control de los videos de JavaScript es limitado, pero los diseñadores web más sofisticados están ideando formas inteligentes de integrar el video con el resto de la página web en un lienzo continuo. Esto abre la posibilidad de que el usuario controle el despliegue de la narración y la interacción con el video. Nadie puede estar seguro de lo que los escritores, artistas y editores se imaginarán; pero van a requerir de mucho talento en la programación para que hacerlo realidad.

Muchos de los mejores sitios web ya tienen videos reproduciéndose en lugares inteligentes. Pronto todos querrán cosas que se muevan. No será suficiente poner una etiqueta IMG con un archivo JPEG. Tendrá que apoderarse del video -y lidiar con los problemas de las normas que han fragmentado el mundo de los navegadores.

Las consolas continuarán reemplazando a las PCs

Es difícil molestarse con las consolas de videojuegos. Los juegos son geniales; y los gráficos, increíbles. Han desarrollado grandes tarjetas de video y plataformas de software relativamente estables para relajarnos en la sala de estar y soñar con dispararle a los malos o lanzar un balón de fútbol.

Las consolas de la sala de estar son solo el comienzo. Los fabricantes de artículos para el resto de la casa están siguiendo el mismo camino. Podrían haber elegido un ecosistema de código abierto, pero están construyendo sus propias plataformas cerradas.

Esto fragmenta el mercado y hace que sea más difícil para los programadores mantener todo correctamente. Lo que funciona en un interruptor de luz, puede que no lo haga en otro. El secador de pelo puede ser parte del mismo protocolo que la tostadora, pero probablemente no lo sea. Significa más trabajo para los programadores en ponerse al día y menos oportunidades de reutilizar nuestro trabajo.

Los datos seguirán reinando

Después de las elecciones presidenciales de los Estados Unidos en el 2016, los expertos en el uso de palabras se burlaron de los expertos en información, sugiriendo que todo su análisis estadístico fue un ejercicio de estupidez. Las predicciones estuvieron dramáticamente erróneas, y la gente de big data quedó muy mal.

¿Cómo llegaron a esta conclusión? Al comparar un conjunto de números (las predicciones) con otro (los resultados de las elecciones). Todavía necesitaban los datos.

Los datos son lo que nos permite ver todo en Internet. La luz nos trae información sobre el mundo real, pero los números nos cuentan sobre todo aquello en línea. Algunas personas pueden hacer malas predicciones basadas en números imperfectos, pero eso no significa que debamos dejar de recopilar e interpretar las cifras.

La recopilación, reagrupación, conservación y el análisis sintáctico de datos seguirán siendo uno de los trabajos más importantes para la empresa. Los que toman las decisiones necesitan las cifras, así que los programadores continuarán teniendo la tarea de entregar datos de manera entendible. Esto no significa que las respuestas serán perfectas. El contexto y la intuición seguirán cumpliendo un rol, pero la necesidad de discutir los datos no desaparecerá simplemente porque algunas personas predijeron que Donald Trump no sería elegido. Esto significa más trabajo para los programadores, ya que parece no haber fin para nuestra necesidad de construir un software más grande, rápido e intensivo en cuanto al uso de datos.

El aprendizaje automático se convertirá en la nueva característica estándar

Cuando los chicos de la universidad llevan un curso llamado "Estructuras de datos", aprenden cómo era la vida cuando sus abuelos escribían código y no podían depender de la existencia de una capa llamada "base de datos". Los programadores reales tenían que almacenar, clasificar y unir tablas llenas de información, sin la ayuda de Oracle, MySQL o MongoDB.

Los algoritmos del aprendizaje automático están a unos pocos años de lograr ese salto. Ahora, los programadores y científicos de datos necesitan escribir gran parte de su propio código para realizar análisis complejos. Pronto, los idiomas como R y algunas de las mejores herramientas de inteligencia de negocios dejarán de ser especiales, y empezarán a ser una característica habitual en la mayoría de pilas de software. Pasarán de ser cuatro o cinco diapositivas especiales en la presentación de ventas en PowerPoint, a un pequeño rectángulo en el dibujo de arquitectura que está dado por sentado.

Esto no va a pasar de la noche a la mañana, y no está está claro qué forma tendrá; pero sí se sabe que cada vez más planes de negocios dependen de que los algoritmos del aprendizaje automático encuentren las mejores soluciones.

El diseño de la interfaz del usuario se complicará a medida que las PCs sigan desapareciendo

Parece que cada día hay una razón menos para que utilicemos una PC. Entre el ascenso de los smartphones, las consolas de la sala de estar y la tableta, los únicos que todavía parecen aferrarse a las PCs son los trabajadores de oficina y los estudiantes que necesitan entregar una asignación.

Esto puede ser un reto para los programadores. Solía ??ser fácil asumir que el software o los usuarios del sitio web tendrían un teclado y un mouse. Hoy en día, muchos no cuentan con ninguno. Los usuarios de smartphones aplastan sus dedos en una pantalla de cristal que apenas tiene espacio para las 26 letras. Los usuarios de las consolas presionan las teclas de flechas en un mando a distancia.

El diseño de sitios web es cada vez más complicado, pues un toque es ligeramente distinto de un clic. Los usuarios tienen diferentes cantidades de precisión, y las pantallas varían mucho en tamaño. No es fácil mantener todo en su lugar, y solo va a empeorar en los próximos años.

El fin de la apertura

El final de las PCs no es solo la muerte lenta de un factor de forma particular. Es la muerte de un mercado particularmente abierto y acogedor. La muerte de la PC será un cierre de posibilidades.

Cuando las PCs fueron despachadas por primera vez, un programador podía compilar código, copiarlo en discos, colocar esos discos en bolsas ziplock, y el mundo podía comprarlo. No había intermediario, ni guardián, ni una fuerza central severa que nos pidiera decir: "Mamá, ¿puedo?"

Las consolas están firmemente cerradas. Nadie entra en ese mercado sin una inversión de capital. Las tiendas de aplicaciones están un poco más abiertas, pero todavía son jardines amurallados que limitan lo que podemos hacer. Claro, todavía están abiertas para los programadores que conocen lo que se debe hacer, pero cualquiera que haga un movimiento en falso puede ser desechado. (De alguna manera siempre retrasan nuestras aplicaciones mientras el malware se desliza hacia adentro. Imagínese.)

Esta distinción es importante para el código abierto. No se trata únicamente de vender disquetes en bolsas. Estamos perdiendo la habilidad de compartir código debido a la pérdida de la capacidad de compilar y ejecutar código. El final de las PCs es una gran parte del fin de la apertura. Por ahora, probablemente la mayoría de la gente que lee esto tiene una desktop decente que puede compilar y ejecutar código; pero cambiará lentamente.

Menos personas tienen la oportunidad de escribir código y compartirlo. Para las charlas sobre la necesidad de enseñarle a la siguiente generación a programar, hay menos vectores prácticos para que el código abierto sea distribuido.

El transporte autónomo está aquí para quedarse

No se trata solo de autos. Algunos quieren hacer aviones autónomos que no se vean afectados por la necesidad de caminos. Otros quieren crear patinetas autónomas para viajes muy ligeros. Si se mueve, algún hacker sueña con decirle hacia dónde ir.

Los programadores no controlarán lo que la gente ve en la pantalla. Controlarán a dónde van las personas y cómo interactúan con el mundo. Y la gente es solo parte del juego. Todo nuestro material también se moverá de forma autónoma.

Si quiere una cena de un famoso chef en el centro de la ciudad, una patineta autónoma con una cámara climatizada podrá llevarla a su casa. Si desea cortar el césped, un cortacésped autónomo sustituirá al chico del barrio.

Y los programadores pueden utilizar todas las ideas innovadoras que tuvieron durante la primera revolución de Internet. Si pensabas que los anuncios pop-up eran graves en Internet, espere a que los programadores sean pagados para desviar las patinetas autónomas por la cocina de un nuevo restaurante. ¿Ya tiene hambre?

La ley encontrará nuevos límites

La tinta estaba casi seca en la Declaración de Derechos cuando comenzaron los debates sobre lo que significaba que una búsqueda de nuestros papeles fuera razonable. Ahora, más de 200 años después, seguimos discutiendo los detalles.

Los cambios en la tecnología abren nuevas vías para la ley. Hace unos años, la Corte Suprema decidió que la tecnología de seguimiento de vehículos requiere una orden judicial, pero solo cuando la policía planta el rastreador en el auto. Nadie sabe realmente qué reglas se aplican cuando alguien hace una citación de los datos de seguimiento de Waze, Google Maps o cualquiera de las muchas otras aplicaciones que almacenan nuestras ubicaciones en caché.

¿Qué hay sobre influir en el funcionamiento de las máquinas? Una cosa es descargar datos, pero también es espantosamente tentador cambiar la información. ¿Es justo que la policía (o actores privados) falsifique documentos, encabezados o bits? ¿Importa si los objetivos son verdaderos terroristas o simplemente personas que se han estacionado demasiado tiempo en un lugar donde no deben sin alimentar el contador?

Estas son solo algunas de las grandes preguntas para los desarrolladores en los próximos años. Los arquitectos de software necesitan anticipar estos problemas durante el diseño. Necesitan pensar en cuestiones relacionadas con la privacidad y la ley, antes de escribir cualquier código. Si no lo hacen, existe una buena posibilidad de que la compañía sea atacada por la espalda por estos temas más tarde -a gran escala.

Además, el código mismo es una versión de la ley. Los programadores definen qué es lo que el software puede y no puede hacer. Cuando escribimos código, estamos definiendo efectivamente las libertades y limitaciones de un pequeño rincón del mundo.

Los contenedores gobernarán

En teoría, no deberíamos necesitar contenedores. El ejecutable debería simplemente funcionar; y el sistema operativo, manejar permisos y programar de modo que todos los ejecutables se entiendan. Por desgracia, ese sueño se está alejando más rápido que nunca. Cada vez menos ejecutables viven solos. Muchos necesitan versiones diferentes de varias bibliotecas, u otros alojamientos especiales. Incluso las tecnologías de "ejecución en cualquier lugar" como Java tienen problemas debido a la existencia de tantas versiones diferentes de la máquina virtual.

Buenas máquinas virtuales pueden arreglar esto, pero son muy grandes. Los contenedores son delgados y ligeros. Son fáciles de usar y, por lo tanto, es imposible no amarlos. Veremos cada vez más contenedores en todos los niveles de la empresa, y será difícil resistirse a sus encantos.