DE ACUERDO. Respiración profunda. Esto es surrealista. Acabo de agregar una característica completamente nueva a mi software, incluida la interfaz de usuario y la funcionalidad, solo escribiendo cuatro párrafos de instrucciones. Tengo capturas de pantalla e intentaré darle sentido en este artículo. No puedo decir si vivimos en el futuro o si acabamos de descender a un nuevo avión del infierno (o ambos).
Demos un paso atrás. Jules de Google es el último de una inundación de nuevos agentes de codificación lanzados solo esta semana. La semana pasada, escribí sobre Operai Codex y el agente de codificación GitHub Copilot de Microsoft, y Webb Wright de ZDNET escribió sobre Jules de Google.
Todos estos agentes de codificación realizarán operaciones de codificación en un repositorio de GitHub. GitHub, para aquellos que han estado siguiendo, es el centro de almacenamiento, administración y distribución de software propiedad de Microsoft para gran parte del software más importante del mundo, especialmente el código de código abierto.
La diferencia, al menos en lo que respecta a este artículo, es que Google puso a Jules disponible para todos de forma gratuita. Eso significaba que podía subir y darle una vuelta, y ahora mi cabeza está girando.
Límites de uso y mis dos primeras indicaciones
La versión de acceso gratuito de Jules permite solo cinco solicitudes por día. Eso puede no parecer mucho, pero en solo dos solicitudes, pude agregar una nueva característica a mi software. Por lo tanto, no descarte lo que puede hacer si piensa en sus indicaciones antes de disparar sus balas de plata para el día.
Mis dos primeras indicaciones fueron tentativas. No era que no estuviera impresionado; Fue que realmente no estaba dando a Jules mucho que hacer. Todavía no me siento cómodo con la idea de poner una IA suelta en todo mi código a la vez, así que lo jugué a salvo.
Mi primer aviso le pidió a Jules que documentara los «ganchos» que los desarrolladores de complementos podrían usar para agregar características a mi producto. No le dije mucho a Jules lo que quería. Devolvió un marcado que recomendó caer en el archivo ReadMe de mi código. Funcionó, pero meh.
Tuve la oportunidad de publicar ese código en una nueva sucursal de Github, pero la salté. Fue solo una prueba, después de todo.
Mi segundo aviso fue pedirle a Jules que sugiera cinco nuevos ganchos. Recibí una respuesta que parecía razonable. Sin embargo, me di cuenta de que abrir esas capacidades en un producto de seguridad era demasiado arriesgado para que yo delegara a una IA. También me salté esos cambios.
Fue en este punto que Jules quería un descanso para tomar un café. Dejó de funcionar durante unos 90 minutos.
Eso me dio tiempo para pensar. Lo que realmente quería ver era si Jules podía agregar una funcionalidad real a mi código y ahorrarme algo de tiempo.
Información de fondo necesaria
Mi sitio privado es un complemento de seguridad para WordPress que se ejecuta en unos 20,000 sitios activos. Pone un diálogo de inicio de sesión frente a las páginas web del sitio. Hay un montón de opciones, pero esa es la característica clave del complemento. Adquirí el software hace una década de un codificador que se llamó a sí mismo «Jon Radio» y lo he estado manteniendo y expandiéndolo desde entonces.
El complemento proporciona control de acceso al front-end de un sitio web, las páginas que los visitantes ven cuando llegan al sitio. Los propietarios de sitios controlan el complemento a través de una interfaz del tablero, con varias funciones de administración disponibles en la interfaz de administración del complemento.
Decidí probar Jules en una característica que algunos usuarios han solicitado, ocultando la barra de administración de los usuarios iniciados. La barra de administración es la barra negra que WordPress pone en la parte superior de una página web. En el caso de la captura de pantalla a continuación, la barra de administración negra es visible.
Quería que Jules agregue una opción en el tablero para ocultar la barra de administración de los usuarios registrados. La idea es que si un usuario inició sesión, la barra de administración estaría visible en el back-end, pero los usuarios iniciados por el front-end del sitio no tendrían que ver la barra fea.
Este es el tablero original, antes de agregar la nueva función.
Hace algunos años, reescribí completamente la interfaz de administración de la forma en que era cuando adquirí el complemento. Agregar opciones a la interfaz es sencillo, pero todavía lleva mucho tiempo. Cada opción requiere que se agregue no solo el elemento UI, sino también el ahorro de preferencia y el recuerdo de preferencias cuando se muestra el tablero. Eso se suma a cualquier lógica del programa que controla la preferencia.
En la práctica, descubrí que me lleva alrededor de 2-3 horas agregar un elemento de interfaz de usuario de preferencia, junto con la variedad de limpieza involucrada. No es difícil, pero hay muchos pequeños bits complicados que deben ser ajustados, y que lleva tiempo.
Eso debería ponerte al día lo suficiente como para comprender mi próxima prueba de Jules. Aquí hay un poco de presagio: la primera prueba falló miserablemente. La segunda prueba tuvo éxito asombrosamente.
Instruyendo a Jules
Agregar una característica de «Barra de administración de Ocultar» no habría sido fácil para la ayuda de codificación que se ejecuta que hemos estado pidiendo a ChatGPT y los otros chatbots para realizar. Como mencioné, agregar la nueva opción al tablero requiere programación en una variedad de ubicaciones a lo largo del código y una comprensión de la base de código general.
Esto es lo que le dije a Jules.
1. En la pestaña de privacidad del sitio de la interfaz de administración, agregue una nueva casilla de verificación. Etiquete la sección «Barra de administración» y etiquete la casilla de verificación «Ocultar la barra de administración». (Coloque esto en el bloque de Make Site Private, ubicado justo debajo de la casilla de verificación de inicio de sesión de inicio de sesión y antes del segmento del modo de privacidad del sitio).
Instruí a Jules donde quería que la IA pusiera la nueva opción. En mi primera carrera, cometí un error y dejé fuera los detalles en los soportes cuadrados. No le dije a Jules exactamente donde quería que colocara la nueva opción. Resulta que esa omisión causó un gran fracaso. Una vez que agregué la oración entre paréntesis, la función funcionó.
2. Asegúrese de guardar la selección de esa casilla de verificación a la variable de preferencias del complemento cuando se verifica el botón Guardar estado de privacidad.
Esto asegura que Jules sepa que hay una estructura de datos de preferencias y que se actualiza cuando el usuario realiza un cambio. Es importante tener en cuenta que si no entendía el código subyacente, no habría ordenado a Jules sobre esto, y el código no habría funcionado. No puede «vibrar código» algo como esto sin conocer el código subyacente.
3. Muestre el estado apropiado o no controlado cuando se muestra la pestaña de privacidad del sitio.
Esto le dice a la IA que quiero que la interfaz se actualice para que coincida con lo que especifica la variable de preferencia.
4. Basado en la variable de preferencia creada en (2), agregue código para ocultar o mostrar la barra de administración de WordPress. Si se verifica la barra de administración de ocultar, la barra de administrador no debe estar visible para los usuarios front-end de WordPress iniciados. Si no se verifica la barra de administración de Ocultar, la barra de administración debe estar visible para los usuarios front-end iniciados. Los usuarios de back-end iniciados en la interfaz de administración siempre deben poder ver la barra de administración.
Esto describe la lógica comercial que debe controlar la nueva preferencia. Requiere que la IA sepa cómo ocultar o mostrar la barra de administración (se usa una llamada de API de WordPress), y requiere que la IA sepa dónde colocar el código en mi complemento para habilitar o deshabilitar esta función.
Y con eso, Jules fue entrenado en lo que quería.
Jules se sumerge en mi código
Alimenté mi aviso a Jules y recuperé un plan de acción. Prestar mucha atención a ese plan de aprobación? botón.
Ni siquiera tuve la oportunidad de leer el plan antes de que Jules decidiera aprobar el plan por su cuenta. Hizo esto después de cada plan que presentó. Una IA que no espera permiso levanta los pelos en la parte posterior de mi cuello. Solo digo.
Quiero desesperadamente hacer una broma de Skynet/Landru/Colossus/P1/Hal, porque estoy asustado. Quiero decir, es bueno. Pero estoy asustado.
Aquí está algunos de los códigos que escribió Jules. El verde sombreado son las cosas nuevas. No estoy emocionado con el esquema de color, pero estoy seguro de que se puede ajustar con el tiempo.
Más relevante es el hecho de que Jules recogió mis convenciones de nombres variables y la arquitectura de mi código y se sumergió directamente. Esta es la nueva opción, representada en el código.
Para cuando se realizó, Jules había incluido todos los cambios en el código que había planeado originalmente, además de algún código de prueba. No uso pruebas estandarizadas. Le habría dicho a Jules que no lo hiciera como planeaba, pero nunca me dio tiempo para aprobar o modificar su plan original. Aun así, funcionó.
Empujé el botón Publish Branch, que hizo que GitHub creara una nueva rama, separada de mi repositorio principal. Jules luego publicó sus cambios en esa rama.
Así es como los contribuyentes a grandes proyectos pueden trabajar en esos proyectos sin causar el caos en la línea de código principal.
Hasta este punto, podía mirar el código, pero no pude ejecutarlo. Pero al empujar el código a una rama, Jules y Github me permitieron replicar los cambios de forma segura a mi computadora para probarlos. Si no me gustaron los cambios, podría haber vuelto a la rama principal, y sin daño, sin falta. Pero me gustaron los cambios, así que pasé al siguiente paso.
Alrededor del código en ocho clics
Una vez que llevé la rama a mi máquina de desarrollo, pude probarla. Aquí está el nuevo panel de tablero con la función de menú de admin.
Intenté encender y apagar la función y asegurarme de que la configuración se atasque. Lo hicieron. También probé otras características en el complemento para asegurarme de que nada más se hubiera roto. Estaba bastante seguro de que nada lo haría, porque revisé todos los cambios antes de aprobar la sucursal. Pero aún así: las pruebas es algo bueno.
Luego inicié sesión en el sitio web de prueba. Como puede ver, no se muestra en la barra de administración.
En este punto, el proceso estaba fuera de las manos de la IA. Era simplemente hora de implementar los cambios, tanto a GitHub como en el repositorio maestro de WordPress. Primero, utilicé GitHub Desktop para fusionar el código de rama en la rama principal de mi máquina de desarrollo.
Cambié «ocultar el menú de administración» para «ocultar el menú de administración» en la rama principal de mi código, porque me gusta más. Empujé eso (la rama principal completa en mi máquina local) de regreso a la nube de Github.
Luego, debido a que no me gustan las ramas aleatorias que dan una vez que se han incorporado a la versión de distribución, eliminé la nueva rama en mi computadora.
También eliminé la nueva rama del servicio en la nube GitHub.
Finalmente, empaqué el nuevo código. Agregué un cambio al ReadMe para describir la nueva función y actualizar el número de versión del código. Luego, lo empujé al repositorio de complementos de WordPress utilizando SVN (el sistema de control del código fuente utilizado por la comunidad de WordPress).
Viaje al centro del código
Jules es definitivamente beta en este momento. Colgaba en algunos lugares. Algunas pantallas no se actualizaron. Decidió visitar durante 90 minutos. Tuve que esperar mientras iba y regresaba de su lugar digital feliz. Está exhibiendo todo el tipo de cosas que esperarías de un código recién lanzado. No tengo preocupaciones sobre eso. Google lo limpiará.
De hecho, desde que publiqué por primera vez este artículo, Google me ha contactado, y me han dicho que definitivamente están trabajando duro para reducir algunos de los problemas que tuve. También me dijeron que tenía razón sobre la desaceleración. Fueron completamente golpeados con los visitantes el día del lanzamiento.
El hecho de que Jules (y presumiblemente OpenAI Codex y GitHub Copilot Coding Agent) puedan manejar un repositorio completo de código en un montón de archivos es grande. Ese es un nivel mucho más profundo de comprensión e integración de lo que vimos, incluso hace seis meses.
La velocidad con la que puede cambiar una base de código completa es aterradora. El daño que puede hacer es potencialmente extraordinario. Pasará alegremente y modificará todo en su base de código, y si especifica algo mal y luego presiona o se fusiona, tendrá un desastre épico en sus manos.
Existe una profunda desigualdad entre la rapidez con que puede cambiar el código y cuánto tiempo llevará a un humano revisar esos cambios. Trabajar en esta escala requerirá excelentes pruebas unitarias. Incluso las herramientas como la mía, que no se prestan a las pruebas unitarias completas, requerirán algún tipo de validación automatizada para evitar errores basados en robots a gran escala.
Aquellos que temen que estas herramientas tomen trabajos de los programadores deben estar preocupados, pero no de la manera en que la mayoría de la gente piensa. Es absolutamente, totalmente necesario, 100% necesario para los codificadores experimentados revisar y guiar a estos agentes. Cuando dejé fuera una instrucción crítica, el agente bloqueó alegremente mi sitio.
Como yo era la persona que escribió el código inicialmente, sabía qué solucionar. Pero habría sido brutalmente difícil para alguien más descubrir qué se había dejado fuera y cómo solucionarlo. Eso habría requerido acelerar todos los matices ocultos de toda la arquitectura del código.
Los trabajos que probablemente sean destruidos son los de los desarrolladores junior. Jules fácilmente hace el trabajo a nivel de desarrollador junior. Con herramientas como Jules, Codex o Copilot, que cuestan unos pocos cientos de dólares al mes como máximo, será difícil para la gerencia estar dispuesto a pagar seis cifras de mediana a nivel para programadores de nivel medio y junior. Incluso la subcontratación y la deslocalización no son tan baratos como usar un agente de IA para hacer codificación de mantenimiento.
Como escribí a principios de semana, si los trabajos de nivel medio no están disponibles, ¿cómo capacitaremos a las personas experimentadas que necesitaremos en el futuro?
También me preocupa cómo funcionarán los límites de acceso. Las ganancias de productividad caerán como una roca si necesita hacer un mensaje más y tiene que esperar un día para que se le permita hacerlo.
¿En cuanto a mi? En menos de 10 minutos, creé una nueva característica que los lectores habían solicitado. Mientras escribía otro artículo, le alimenté el aviso a Jules. Volví a trabajar en el artículo y revisé a Jules cuando terminó. Revisé el código, lo llevé a mi computadora y empujé una versión.
Desafortunadamente, Jules no puede trabajar en diferentes repositorios, al menos aún no. Eso significa que no puedo hacer que Jules trate la base pública de código GitHub y las tres bases de código adicionales privadas para pagar como un proyecto grande. Pero Google me dice que este tipo de capacidad está en su lista. Podría abrir todo mi repositorio (de todos mis proyectos), y eso podría funcionar, pero también podría confundir a Jules sobre qué proyecto es y no es relevante para el trabajo en cuestión.
Me llevó más tiempo cargar la cosa al repositorio de WordPress que agregar la nueva característica. Para esa clase de características, realicé un trabajo de medio día en menos de media hora, desde pensar en hacer que sucediera a mis usuarios.
En la primera semana desde que completé esta función, se han actualizado alrededor de 8.500 sitios (aproximadamente la mitad de toda la base instalada). Sin Jules, esos usuarios probablemente habrían estado esperando meses para esta nueva característica, porque tengo una gran cartera de trabajo, y no era mi máxima prioridad. Pero con Jules, apenas tomó ningún esfuerzo.
Estas herramientas requerirán que los programadores, gerentes e inversores repensen el flujo de trabajo de desarrollo de software. Habrá evidente «no puedes llegar desde aquí» Gotchas. Y habrá fallas épicas y errores de codificación. Pero no tengo dudas de que este es el siguiente nivel de codificación basada en IA. La inteligencia humana real será necesaria para descubrir cómo lidiar con ella.
¿Has probado Jules de Google o alguno de los otros nuevos agentes de codificación de IA? ¿Confiaría en ellos para hacer cambios directos en su base de código, o prefiere mantener un agarre manual más estricto? ¿Qué tipo de tareas de desarrollador crees que estas herramientas deberían y no deberían manejar? Háganos saber en los comentarios a continuación.
¿Quieres más historias sobre AI? Regístrese para la innovaciónnuestro boletín semanal.
Puede seguir mis actualizaciones de proyecto diarias en las redes sociales. Asegúrese de suscribirse a mi boletín de actualizaciones semanales y sígueme en Twitter/X en @Davidgewirtzen Facebook en Facebook.com/davidgewirtz, en Instagram en Instagram.com/davidgewirtz, en bluesky en @davidgewirtz.com, y en YouTube en youtube.com/davidgewirtztv.