Una tecnología tan prometedora como poco conocida
01 jul 2023 . Actualizado a las 05:00 h.Llevo AÑOS leyendo la Bonilista y, durante todo este tiempo, solo he escrito a David UNA vez para pedirle que me dejara contribuir como autor invitado, porque sentía que tenía que compartir algo con la Comunidad.
La ley de Atwood predice que «Cualquier aplicación que pueda escribirse en JavaScript, será eventualmente escrita en JavaScript», el lenguaje dominante en el desarrollo de aplicaciones web, tanto en el frontend (el navegador) como en una gran parte del backend (el servidor), a través de NodeJS y otros runtimes.
Hasta hace poco parecía que estábamos condenados a vivir con JavaScript hasta el resto de nuestros días, a pesar de todos los problemas y limitaciones de un lenguaje de programación creado en solo diez días. Su ubicuidad y facilidad de aprendizaje lo han convertido en una plataforma de computación universal sin rival.
Por eso, puede que los lectores de la Bonilista se sorprendan ante la afirmación de que una nueva tecnología —de la que muchos, quizás ni siquiera han oído hablar— se está convirtiendo rápidamente en una alternativa viable a JavaScript, en ese rol de plataforma omnipresente.
WebAssembly (Wasm para los amigos) es un formato de ejecución binario que está disponible, desde 2017, en todos los principales navegadores web. Es la tecnología que permite disfrutar de aplicaciones web que parecen de escritorio: desde Google Earth a juegos en 3D creados con Unity pasando por herramientas gráficas de diseño como Figma y Photoshop en su versión para navegador. En España tenemos cercano el ejemplo de Graphext, que permite la visualización eficiente de gráficas increíblemente complejas en un navegador sin problemas de rendimiento. Magia.
Irónicamente, WebAssembly no es (solo) una tecnología Web ni tampoco un lenguaje ensamblador, pero sí tiene sus orígenes en JavaScript y el navegador.
Enhorabuena. Acabas de reinventar los applets de Java
Muchos de los suscriptores más veteranos estarán mentalmente refunfuñando «Enhorabuena. Acabas de reinventar los applets de Java». O ActiveX. O Flash. Y... ¡tienen razón! El objetivo de Wasm es proporcionar los beneficios de esas tecnologías sin las desventajas típicamente asociadas con ellas.
Desde casi los orígenes de la web se ha perseguido que el navegador pudiera ejecutar aplicaciones «de verdad» y no solo renderizar imágenes y texto con enlaces. Los intentos hasta la fecha, como los enumerados anteriormente, fallaron por múltiples razones relacionadas entre sí: no eran tecnologías web «nativas», requiriendo la instalación de extensiones (plug-ins) en los navegadores. No eran abiertas, estando controladas por una sola compañía comercial como Sun Microsystems, Microsoft o Macromedia. Tenían todo tipo de problemas de seguridad y estabilidad, y era común que provocaran el cuelgue del navegador o incluso todo el sistema operativo. Wasm da soluciones a todos esos problemas.
Es un estándar abierto con E mayúscula: está a cargo del W3C, la organización responsable de HTML y las principales tecnologías web. Todos los principales navegadores web lo soportan nativamente desde 2017, sin necesidad de instalar ninguna extensión que mantener actualizada separadamente. Y, sorprendentemente, todas las compañías del sector están trabajando codo con codo para crear un estándar común... Apple, Microsoft, Google, Amazon, Intel y muchas otras.
Está concebida desde sus inicios para ser una plataforma segura, ejecutándose en un entorno controlado (sandbox) que no permite acceso a ningún recurso del sistema por defecto. El acceso a ficheros o las comunicaciones remotas tiene que autorizarse explícitamente y su sistema de permisos tiene un gran nivel de granularidad. Wasm no es un lenguaje, sino un formato binario al que pueden compilarse otros lenguajes o sus intérpretes incluyendo C/C++, Rust, C#, Python, Ruby y PHP. WebAssembly está diseñado para poder ser implementado con eficiencia, requiriendo pocos recursos y pudiendo correr muchos programas casi al mismo nivel de rendimiento que nativamente.
«Vale, muy bien, ¿pero cómo carallo se programa con esto?» puedo imaginar a Bonilla murmurar mientras lee estas líneas, pero justo ahí reside la belleza de ser un standard agnóstico al lenguaje y plataforma: los principales compiladores y lenguajes de programación incluyen ya soporte de serie para Wasm (o están en proceso de incorporarlo como es el caso de Go). Crear una aplicación en Wasm es tan sencillo como habilitar la opción apropiada en la línea de comando sin cambiar tu código para nada. Para lenguajes interpretados es posible descargar los intérpretes binarios precompilados o usarlos online directamente en el navegador.
Vale, muy bien, ¿pero cómo carallo se programa con esto
Las mismas razones que han hecho a Wasm popular en el navegador aplican al desarrollo en servidor, incluyendo su seguridad, portabilidad y eficiencia. Como anteriormente hicieron Java y JavaScript, WebAssembly ha transicionado a ser también una tecnología de backend. Solomon Hykes, creador de Docker, no estaba exagerando cuando afirmó que «Si Wasm+WASI hubiera existido en 2008, no hubiéramos necesitado crear Docker. Así de importante es. WebAssembly en el servidor es el futuro de la computación».
Wasm ya se utiliza a día de hoy en multitud de escenarios. Por su portabilidad, puede correr en todo tipo de dispositivos: en tu televisión, en microcontroladores arduino... o incluso en una Nintendo DS. Con frameworks como Microsoft Blazor es posible escribir aplicaciones full-stack que usan solo librerías de .NET y que —automáticamente y transparentemente— generan el código a ejecutar en el navegador.
Finalmente, Wasm está encontrando un nicho en aplicaciones serverless debido a su rapidez de inicialización y ejecución (microsegundos versus milisegundos de soluciones tradicionales) y la posibilidad de correr en entornos distribuidos de la mano de proveedores de Content Distribution Networks (CDNs) como Cloudflare y Fastly que ahora proveen servicios de computación.
Si parezco entusiasmado es porque LO ESTOY. Esta ha sido una presentación a muy alto nivel de WebAssembly pero con un poco de suerte espero haber despertado vuestra curiosidad y os apetezca aprender más sobre esta nueva tecnología. Wasm no solo es una manera de desarrollar software portable y seguro que puedes usar a día de hoy sino que, por su versatilidad y ritmo de adopción exponencial, tiene el potencial de convertirse en la base universal de la computación para las próximas décadas.
¿Cómo empezar a trabajar como Product Manager?
No hay Product Managers juniors, sino Product Managers con más o menos experiencia en el rol.
La Dirección de Producto requiere una formación holística y un bagaje que, hasta ahora, se solía adquirir con la pura práctica. Solo podías aprender Producto haciendo Producto, pero no tenías la posibilidad de acceder a roles de Producto sin experiencia previa. Para muchos, fundar nuestra propia startup fue la única manera de romper ese círculo vicioso y entrar en la profesión.
Para acabar con esa disfunción del sector, el Instituto Tramontana acaba de lanzar el Programa presencial de Dirección de Producto dirigido por José Ramón Perez Agüera, que lleva más de 15 años liderando productos como Mercadona Tech, Amazon, Job and Talent o Tuenti.
José Ramón siempre dice que en todos los libros y formaciones sobre producto que conoce echa de menos la contextualización de todas la metodologías propuestas. Ser capaces de codificar la práctica del desarrollo de producto de manera que sepamos cómo hacerlo en función del tipo de empresa donde nos encontramos, del tipo de producto que queremos desarrollar, del modelo de negocio y de la cultura de la organización.
Este programa tiene ese enfoque y no trata tanto de cómo hacer producto en sí mismo, sino de cómo crear y dirigir una organización orientada a producto que permita la creación de productos exitosos y rentables.
Dura 8 meses, empieza en octubre de 2023 y cuesta 12.000€, aunque la matricula se queda en solo 9.600€ si la formalizas antes de julio. El programa está organizado por el Instituto Tramontana, una escuela que existe para elevar el nivel de los profesionales que crean productos y servicios. Algo que puedo validar directamente porque conozco directamente el feedback de antiguos alumnos como mi amigo Jorge Galindo o mi compañera Cris Miquel.
Si estáis interesados en trabajar en Producto —o ya lo hacéis y queréis ahondar vuestros conocimientos en la disciplina— podéis pedirles referencias a ellos o consultar toda la info del curso. Tiene MUY buena pinta.
Este texto se publicó originalmente en la Bonilista, la lista de correo de noticias tecnológicas relevantes para personas importantes. Si desea suscribirse y leerlo antes que nadie, puede hacerlo aquí ¡es bastante gratis!