The HTTP
426 Upgrade Required
client error response status code indicates that the server refused to perform the request using the current protocol but might be willing to do so after the client upgrades to a different protocol.The server sends an
Upgrade
header with this response to indicate the required protocol(s).Mozilla
Vivimos tiempos interesantes en el desarrollo de software. Las ofertas de empleo se reducen; muchas empresas vuelven a la presencialidad; las inteligencias artificiales abarcan cada vez más terreno; what a time to be alive…
Hola, mi nombre es Juanje y estoy dentrísimo de la IA.
Durante estos años trabajando en desarrollo y desde la llegada de ChatGPT, he vivido de cerca los avances que se van haciendo en los diferentes modelos de lenguaje que desarrollan empresas como OpenAI, Anthropic o Google. Aún así, no las he llegado a dar mucho uso en mi día a día. Creo que soy de ese pequeño porcentaje de la población que no recurre a ChatGPT para todo y que sigue entrando en StackOverflow cuando necesita mirar alguna duda. Sin embargo, desde la llegada de los agentes, me he dado cuenta que no tengo que ser Neo luchando contra ellos sino aprovechar sus ventajas para trascender en el mundo del software.
Vale, referencia al peliculón aparte, he exagerado muy mucho lo de trascender. Sigo en el equipo de los que piensan que hoy en día, los desarrolladores seguimos siendo valiosos y necesarios para las empresas. Prueba de ello son las numerosas ofertas de trabajo que siguen saliendo cada semana y de las sorprendentes noticias que visibilizan que las empresas siguen necesitando a personas cárnicas.
Sin embargo, creo que los desarrolladores de software tal y como trabajamos hoy en día nos vamos a extinguir, y puede que no muy lejano en el tiempo. Ya en 2022, en la cena de navidad de mi empresa, se vieron los dos típicos bandos que se posicionaban claramente en “no nos van a sustituir nunca” y “virgencita que nos comen las IAs”. Yo en ese momento ya me posicioné un poco en el medio porque si bien es verdad que no nos han sustituido todavía, y mucho menos en 2022, si que pensaba que en algún momento lo harían.
Uno de los ejemplos más claros que vi en su momento es que las herramientas de IA no eran capaces de compilar, desplegar o realizar tareas complejas. Aunque la IA proporcionaba cachitos de código que solucionaban la vida, era el programador quien debía juntarlos y con ello, quién tenía el control.
Con la llegada de los agentes (aunque cuando escribo este post ya llevan bastante entre nosotros) se está empezando a difuminar la línea. Ahora mismo, diferentes herramientas se encargan de juntar y utilizar los elementos propios de los dispositivos para generar esas versiones, compilaciones o despliegues sin tener que estar todo ejecutado en una nube.
Estoy escribiendo esto porque ha llegado el tercer momento “guau” con herramientas de IA y creo que ya toca escribir sobre ello. Cabe decir que estos 3 momentos se han producido prácticamente en poco más de un mes y si no ha sido antes, ha sido porque he estado a otras historias que no están relacionadas con esto. No obstante, esto ha cambiado y me he caído en la marmita de los LLMs y estoy un poco obsesionado con todo lo que puedo hacer.
El primer momento guau, por orden cronológico, fue la prueba que hice de Stitch de la que hablé en un post de Medium (que tengo pendiente desarrollar más el tema en otras partes). Sin entrar en detalle, que para eso está el post, Stitch es un prototipo de Google en el que convierte un prompt en un diseño que es exportable a Figma. Esto me marcó mucho ya que daba un paso de gigante en cuanto al diseño. Lo probé. Me gustó. Lo apliqué en una app que estaba desarrollando. Éxito.
El segundo momento fue algo más mundano y sin siquiera buscarlo. Como buen curioso que soy, me gusta scrapear información de webs para ver si puedo hacer alguna app con ella. Sin embargo, para este caso, la que necesitaba extraer toda la información de una web de manera estructurada y completa era mi pareja que, ajena al mundo del desarrollo, me pidió ayuda para hacerlo. Como no tenía mucho tiempo, me proporcionó un “código de Github” que supuestamente lo hacía.
Todo fácil entonces. Me descargo el binario de la última release, lo ejecuto y no funciona. Vaya… Era esperable. Sin rendirme, me bajo el código y veo que está desarrollado en .Net, un framework que no he usado nunca y que aprender me llevaría un tiempo que no tengo. Aún así, me bajo el código, me instalo .Net y lo intento compilar con el terminal. La segunda en la frente: me dice que no tiene no sé qué librerías y que falla en no se donde. Y aquí es donde se abrió el cielo. El comando lo estaba ejecutando en Warp, que aunque lo tenía instalado desde hace tiempo, no le había sacado el jugo. El propio terminal cuando salió el error me sugirió que si le dejaba intentar arreglarlo: “Todo tuyo, my friend”.
Tras unos minutos en el que yo me quedaba absorto por las cosas que iba haciendo (al fin y al cabo los errores que salían eran legibles y se podía entender qué pasaba), terminó la compilación del proyecto y me dijo que lo probase. No funcionó, era demasiado bonito para ser verdad, pero nuestro amigo el Agente Smith, no se rindió y dijo que le sujetase el cubata. Tras repetir el proceso unas 3 o 4 veces, acabé con un código funcionando en mi máquina y que había solventado los problemas iniciales. Sin tener ni idea de .Net, no sólo pude cumplir los deseos de mi pareja sino que había arreglado un repo para otra gente.
Por último, tan reciente como que ha sido hace 5 días, mi pareja vino con otra de sus peticiones para desarrolladores: “necesito exportar las notas que tengo en el Kindle y meterlas en Notion como notas independientes”. Esto lo acompañó con un “he visto que hay webs que lo hacen pero no exactamente como yo quiero”. ¿Hacer una web? Llevo años alejado de ese mundo oscuro y lleno de frameworks pero… qué coño, ahora tengo minions que lo hacen por mí.
Abrí v0, le metí el prompt y en pocos minutos ya me había generado todo lo necesario. Curiosamente, lo que más fallos dio y tuve que reformular varias veces fue el parseo de los títulos donde tenía que extraer el título y nombre del autor. Al final, es un “simple” regex (si simple y regex pueden ir en la misma frase) para extraer todo correctamente, pero tuve que darle ejemplos y proporcionarle detalles para ayudarle con ello. Tras 11 versiones, cambiando cosas menores y adaptándolo a nuestras necesidades, en poco más de 2 horas (cenando entre medias) teníamos una web completamente funcional que resolvió la necesidad sin picar una línea de código y sin ni siquiera entenderlo.
Los tiempos han cambiado ya y toca adaptarse. Probablemente no nos quedemos sin trabajo siempre que sepamos ir manejando todas las herramientas que salen a nuestro paso. Debemos “trascender” como he dicho antes y convertirnos en los guardianes de las buenas prácticas, los maestros de la arquitectura o los gurús de los tests para que el mundo del software siga teniendo un hueco para nosotros.
Mientras tanto, disfrutemos del momento actual en el que podemos crear muchas más cosas de las que imaginamos. Los límites ya son más difusos e ingenieros android que odian el desarrollo web crean apps de la nada que están disponibles para el uso y disfrute de la gente. Aprovechemos todas las herramientas que existen y usemoslas para ser más eficientes en lo que de verdad nos importa.
Nos vemos!