Como dijo Niels Bohr, hacer predicciones es muy difícil, especialmente cuando se trata de predecir el futuro. Y en programación hay tantas pelotas en movimiento al mismo tiempo, cosas que se están gestando en las grandes empresas, nuevas modas que de un día para otro nos meten cosas nuevas, que es muy difícil predecir nada.
Como seguramente sabrás, parte de mi trabajo es estar al tanto de lo que pasa en el mundillo de la programación, conocer nuevas cosas que van saliendo, etc.. Así que te voy a intentar dar mi punto de vista sobre qué cosas creo que van a pasar en 2022.
Es posible que algunas se me pasen por alto, otras sea imposible preverlas y otras que no haya mencionado aunque las tenga en el radar porque no me parecen interesantes. Por ejemplo, todo lo del metaverso, cosas de blockchain, etc... que ya me parecen muy 2015, la verdad y más marketing que impacto real en nuestro mundillo.
1.- Lenguajes de programación
Vale, empiezo por lo más fácil. Está claro que JavaScript, Java y C# seguirán siendo los más utilizados y los más demandados del mercado laboral. Pero si quieres estar al cabo de la calle e ir invirtiendo en lenguajes de programación con futuro no debes perder de vista a:
Python, sobre todo para Machine Learning y Ciencia de Datos, luego hablaré de esto.
TypeScript, para desarrollo Web. Este superconjunto de JavaScript permite programar con menos errores y de manera más sencilla para la Web, obteniendo al final JavaScript. Lo creó Microsoft y se está comiendo el mundo, tanto en el Front (por ejemplo es el lenguaje usado con Angular), como en el Back (ya te he hablado varias veces de Deno, un Node.js moderno y mejor basado en TypeScript).
Kotlin: si lo tuyo es el desarrollo móvil nativo para Android, olvídate de Java y vete a por Kotlin (aunque lo mejor es que conozcas los dos). Es un lenguaje de programación muy nuevo (10 años) creado por JetBrains (una empresa europea, radicada en república Checa), que mejora mucho Java haciéndolo más productivo y que la propia Google ha colocado como lenguaje principal para desarrollar en Android en lugar de Java.
Go: creado por Google y que se usa sobre todo para crear servicios web de alto rendimiento y todo tipo de utilidades de línea de comandos. Se estima que hay más de 1 millón de desarrolladores que usan Go como lenguaje principal, sobre todo en Asia.
Rust: este lenguaje creado por Mozilla lo está petando sobre todo para desarrollo de sistemas de bajo nivel como sustituto de C y C++. Ya forma parte del núcleo de Linux, Microsoft lo está metiendo en cantidad de herramientas y, aunque seguirá siendo de nicho, no conviene perderle la pista.
2.- Desarrollo web
En desarrollo Web seguiremos con los sospechosos habituales, es decir, Angular (sobre todo para empresas, gracias a sus grandes ventajas para trabajo bien estructurado y poder incorporar gente al equipo de trabajo), Vue.js por su potencia y facilidad de uso y React porque, aunque no es comparable con los anteriores ya que no es un framework sino una librería de interfaz de usuario, es el niño mimado de las startups y de los alpha-geeks de todo el mundo. O te encanta o lo odias, pero la realidad es que lo usa muchísima gente.
Dentro del desarrollo web otras tendencias que creo que se van a consolidar en los próximos meses son:
Web Components: o sea, para entendernos, la capacidad de crear tus propias etiquetas HTML con componentes lo complejos que necesites. Por ejemplo, que quieres una rejilla potente en tu aplicación: pues pones una etiqueta y listo. La capacidad de hacer esto es lo que le dio la fama a React, pero lo cierto es que los navegadores hace tiempo que soportan nativamente la creación de componentes de este modo, aunque la APi es bastante compleja. Por eso, un framework que te facilita crear este tipo de componentes de manera simplificada y que se llama Svelte lo está petando muy fuerte y tiene trazas de superar a React en el futuro. Al menos te debería sonar.
PWAs o Aplicaciones Web Progresivas: llevan años entre nosotros pero parece que por fin los navegadores se están poniendo las pilas con ellas. Se pensaron como una manera sencilla de crear aplicaciones móviles basadas en tecnología Web que pudieran parecerse a las aplicaciones nativas y que funcionasen sin conexión, entre otras cosas. Ahora no sólo están en los móviles, sino que todos los navegadores modernos las soportan y facilitan su instalación. Incluso Microsoft las ha incorporado como ciudadanas de primer nivel en la tienda de Windows 11, por l lo que cada vez son más interesantes, y si sabes desarrollar para la Web son una gran herramienta a añadir a tu curriculum. Te dejo un enlacito a un artículo en el que te explico con detalle qué son las PWA y cómo funcionan.
Web Assembly: esto es una maravilla. Dicho de manera rápida y simplificada es un lenguaje de bajo nivel para los navegadores que permite interaccionar con la máquina virtual de ejecución de código de estos usando instrucciones básicas, como las que usarías en ensamblador. Esto permite compilar cualquier código que se pueda compilar para un sistema operativo convencional de modo que funcione en un navegador (con sus restricciones, claro). Así , por ejemplo, puedes compilar código C o C++ para que funcione en un navegador. ¿Y para qué sirve esto? La pregunta es ¿para qué no sirve?. Como es estándar y forma parte de todos los navegadores modernos, se pueden hacer aplicaciones antes impensables combinándolo con JavaScript. Existen muchas aplicaciones que usas hoy en día que llevan Web Assembly por debajo y también hay muchas aplicaciones de línea de comandos muy utilizadas, como FFMpeg (la navaja suiza del audio y el vídeo) que están portadas a Web Assembly. Para mí su máximo exponente ahora mismo es Blazor, un framework de Microsoft para desarrollo Web del que ya os hemos hablado aquí muchas veces y que permite desarrollar para la Web usando C# compilado a Web Assembly, abriendo un nuevo mundo de posibilidades, y ahorrándote aprender los frameworks de los que te hablaba antes (Angular y demás). Hace mucho tiempo que no me ilusiona tanto una tecnología como lo ha hecho Blazor. Si sabes .NET y C# y quieres desarrollar para la Web, deberías echarle un buen vistazo.
Serverless: básicamente crea aplicaciones web en la nube, pequeñas y coordinadas entre sí que son infinitamente escalables, se cobran por segundo y te permiten olvidarte de lo que tienen debajo: despliegas de manera automática el código y simplemente funciona. Esto daría para hablar mucho, y un día podemos hacerlo, pero todos los grandes en el cloud lo tienen y lo está usando todo el mundo. En Azure se llaman Azure Functions y en Amazon se llaman Lambda.
Edge Computing: algo muy relacionado con lo anterior es todo lo que tiene que ver con esta tendencia que lo está petando también, y cuyo máximo exponente son los CloudFlare Workers. Se trata de llevar el procesamiento de nuestras aplicaciones lo más cerca posible de los usuarios, en el "borde" de Internet, es decir, en nodos que están distribuidos por todo el mundo, y que permanecen sincronizados de manera transparente para ti. Conceptualmente se parecen mucho a los servicios Serverlesss que acabo de comentar, pero con el giro de tuerca de que no se ejecutan en un data center concreto sino que, como digo, están distribuidos por todo el mundo en cientos de sitios y se ejecutan siempre en el nodo más cercano a la persona que hizo la petición. Es algo muy, muy interesante. Yo ya he hecho mis pinitos con ellos y me encantan porque además los de CloudFlare son rapidísimos y están basados en JavaScript y Service workers, igual que las PWAs.
3.- Devops
Aquí no me voy a parar mucho. Sólo voy a decir un par de frases lapidarias:
1.- Si no aprendes Docker (y posiblemente Kubernetes) te vas a descolgar del mundillo más pronto que tarde. 2.- La integración continua de tus proyectos es algo casi indispensable en cualquier empresa de desarrollo moderna.
Y si te piensas que estas cosas tienen que ver más con el departamento de IT que con el de desarrollo, descubrirás amargamente que no es así. Hazme caso.
4.- .NET MAUI
Para mediados del año que viene y con más de año y medio de retraso llegará el sustituto de Xamarin: .NET MAUI. Ya he dicho muchas veces que me parece un nombre horrible, pero quitando eso, creo que lo va a petar mucho. ¿Por qué? Pues porque no solo servirá para crear aplicaciones nativas para Android e iOS con mejor rendimiento y características que Xamarin, sino que además podrás crear con el mismo código aplicaciones nativas para Windows y Mac, con soporte de Microsoft y para Linux con soporte de la comunidad. O sea, si sabes .NET y C# podrás crear aplicaciones nativas para Windows, Mac y móviles con una misma base de código. Mola mucho, mucho.
5.- Desarrollo asistido por IA
Y aquí puedo hablar de primera mano de 2 herramientas concretas: el intellisense "inteligente" de Visual Studio 2022, que mejora mucho al de las versiones anteriores, y sobre todo GitHub Copilot. De este último ya os hablamos largo y tendido aquí el Bruno y yo, pero ahora que llevo unos meses utilizándolo puedo decir con certeza que es una maravilla. A veces parece que te lee el pensamiento.
¿Quiere decir esto que los trabajadores nos vamos a quedar sin trabajo? Para nada, pero con estas herramientas basadas en Inteligencia Artificial vamos a ser mucho más productivos. Aunque hay que andarse con ojo, porque pueden meter bugs muy gordos. O sea, hay cosas que las hace muy bien pero como es una IA generativa, lo que genera no está probado y puede que muchas veces meta bugs, alguno poco obvios, así que hay que usarlos con cabeza, por supuesto. Pero en el futuro próximo, o los usas o te quedas atrás...
Vale, y ahora para el final las dos tendencias que en mi humilde opinión son las que más impacto van a tener en el sector en los próximos años.
6.- No Code / Low Code
Sí, esas herramientas como Google AppSheet o Microsoft Power Apps. Nos las han vendido como herramientas de "pinta y colorea" para que gente que no sabe programar pueda hacer sus propias aplicaciones. Y aunque es cierto que en algunos casos se usarán así, en mi opinión eso es perder de vista lo más importante. Y es que cada vez son más potentes y son lo suficientemente complejas como para que la mayor parte de los "no programadores" no puedan sacarle partido de verdad. Por ello pienso que los que más partido les podemos sacar somos los programadores, y que van a abrir un montón de oportunidades de empleo en los próximos años. Van a permitir que podamos crear aplicaciones pequeñas de manera muy rápida que antes no serían viables. Y, por otro lado, van a facilitar el acceso a la programación a programadores principiantes que cada vez lo tienen más difícil con las cada vez más complejas tecnologías de desarrollo que tenemos.
Créeme: o mucho me equivoco o en los próximos 2 o 3 años este tipo de herramientas, así como las de integración (como Zapier, Integromat y similares), van a abrir un montón de oportunidades laborales y se van a crear más aplicaciones que nunca, pero no por los usuarios, sino por programadores que les sepan sacar partido.
7.- Aprendizaje Automático
Esto ya lo he dicho hasta la saciedad. Hay otras cosas por ahí que me parecen una vendida de moto que probablemente no va a ningún lado, pero pienso que la inteligencia artificial y el Machine Learning están aquí para quedarse. Y pienso que, aunque luego vayas a usar servicios prefabricados en la nube para muchas cosas, conocer los fundamentos de la disciplina y entender lo que hay por debajo para seleccionar lo más adecuado en cada momento, va a ser una factor muy diferencial en el futuro. Aparte de que ya en la actualidad hay mucha más demanda que oferta de desarrolladores que sepan Machine Learning. Así que, en mi opinión y como he dicho ya muchas veces, es un área en la que la inversión en aprendizaje es muy interesante incluso aunque no le vayas a sacar partido de inmediato. Es por eso que en campusMVP hemos trabajado durante 2 años para tener un estupendo Máster de Machine Learning y Ciencia de Datos que te sirva para aprender esos conceptos y que te pueda servir para muchos años y no solo para ahora. No digo más.
Comments