¿Buscas nuestro logo?
Aquí te dejamos una copia, pero si necesitas más opciones o quieres conocer más, visita nuestra área de marca.
¿Buscas nuestro logo?
Aquí te dejamos una copia, pero si necesitas más opciones o quieres conocer más, visita nuestra área de marca.
dev
Raúl Martínez Hace 2 días Cargando comentarios…
Con la tan en voga IA, y desde mi perspectiva más chapada a la antigua, no veía cómo esto de la inteligencia artificial iba a sustituir o reemplazar a un perfil de desarrollo con cierta experiencia. No lo hace, pero se acerca. Eso sí, con matices.
Lo primero que debemos saber es que Cursor AI es un IDE con la confianza y apoyo de compañías prestigiosas y de renombre como estas:
Cuando nos descargamos Cursor desde su web oficial y procedemos a instalar, vemos que tenemos la opción de aplicar los atajos de teclado de varios IDEs (en este caso hemos elegido Jetbrains, que es al que estoy habituado). Podemos especificar el idioma en el que nos vamos a comunicar. También podemos marcar que tenga el contexto del código para realizar preguntas.
Los modelos premium utilizan GPT-4 y Claude 3.5, que son modelos de IA bastante potentes. Una vez abrimos Cursor, tenemos un pequeño onboarding para aprender a manejar el IDE con IA, que es bastante intuitivo.
Cursor hace sugerencias de autocompletado que aparecen al lado de nuestro cursor (por eso la aplicación se llama Cursor 😉). Esta es una de las tareas que tenemos que aceptar antes de comenzar.
A continuación, creamos un fichero para ir completando los distintos check de bienvenida. El fichero que he creado es “Autocomplete.java” y simplemente con escribir el “public Class”, tab y después ”private”, ya me sugiere el siguiente código. Le damos “tab” y automáticamente nos genera el código:
Sobre el ejemplo anterior, vamos a realizar algunas modificaciones. Usando tab, escribimos en nuestra función el argumento “Long” para que imprima un valor u otro en función de dicho parámetro. Seleccionamos el código escrito y nos saldrá algo como esto:
En la parte derecha nos dará una explicación del cambio. En rojo nos enseñará el código previo y en verde, los cambios que va a hacer. Ejecutamos lo que ha generado y vemos que la tarea prompt se ha completado:
Para mostrar su funcionamiento, voy a introducir a propósito una línea return “unknow” después del bloque if-else. Seleccionamos el bloque de código y damos al comando+L:
La respuesta que recibimos es la siguiente:
Vemos que en la parte derecha nos indica qué hay que cambiar y ,en caso de que estemos de acuerdo, procedemos a aceptar el cambio. Al mismo tiempo, podemos preguntar cualquier cosa acerca del código. En mi caso, he preguntado acerca de esta pequeña función y nos responde lo siguiente:
Podemos hacerle cualquier pregunta sobre el proyecto, siempre y cuando tengamos muy claro qué queremos preguntar. En este caso, al tener solamente un fichero, voy a preguntar por una salida de la función, a ver si la encuentra:
Con esto, habríamos acabado el manual de bienvenida. Es como el entrenamiento de un videojuego antes de ponerte a jugar un torneo: fácil e intuitivo.
Para mostraros parte de su potencial, había que verlo con un ejemplo práctico. En mi caso, he cogido esta PoC de TestContainers para ver qué me dice acerca de esto que codifiqué hace unos años.
Sé que las librerías están desactualizadas, que podría haber separado la configuración… he detectado varias mejoras, así que voy a empezar pidiéndole que me describa este proyecto:
Ahora le voy a pedir que busque problemas en el proyecto, a ver cómo se comporta:
A continuación, le pido que me lo solucione:
Una vez que Cursor me ha propuesto los cambios de mejora sobre mi código, iré revisándolos uno a uno y aceptándolos o rechazándolos, en función de si considero que lo que quiere cambiar es adecuado o no.
Después de realizar unos ajustes con la JVM, la versión de Maven y arrancar Docker, le pedimos que ejecute una prueba, y ¡vemos que lo soluciona! Ha migrado la configuración y ha reescrito lo necesario para solucionar los problemas.
Después de este estudio, estoy convencido de que esto es el futuro (y presente) y que va a aportar una productividad nunca antes vista a los equipos de desarrollo. Sin embargo, esto no es magia, ya que es necesario tener una base técnica fuerte para saber qué hay que preguntar y supervisar los cambios, ya que no siempre acierta.
La IA (en este caso para este IDE, debo probar Copilot y Windsurf también) debe ser una herramienta de apoyo y no sustituir nuestro trabajo. Debemos de tener claro que, si una buena solución de diseño consiste en aplicar X patrón, necesitamos guiar a la IA para que se comporte como nosotros le indiquemos, y no al contrario.
Por otro lado, también pienso que esto va a cambiar los marcos de trabajo, estimar, eso que tanto nos piden los clientes y tantos problemas nos presenta, no va a tener mucho sentido ahora.
Para ver las estimaciones en un ejemplo, realicé otra prueba en mi proyecto actual en el que tenemos una clase heredada de 1.700 líneas. Estimamos que nos llevaría 10 jornadas refactorizarlo. Cursor AI lo ha hecho en 3 horas. Eso sí, no sin problemas, ya que en algún momento he aceptado algún cambio de dependencia y eso me ha generado un referencia cíclica que me ha costado desenredar.
Sin embargo, y a pesar de los posibles errores y la supervisión que debemos darle, nos va a ayudar a generar mucha más certidumbre sobre lo que se está codificando.
Los comentarios serán moderados. Serán visibles si aportan un argumento constructivo. Si no estás de acuerdo con algún punto, por favor, muestra tus opiniones de manera educada.
Cuéntanos qué te parece.