secture & code

Como puede Cursor ayudarnos en el desarrollo software

Introducción

La revolución de la IA generativa y su impacto en el mundo del software ya es una realidad palpable. Cada vez más herramientas basadas en IA están facilitando la vida de los desarrolladores, automatizando tareas repetitivas y optimizando flujos de trabajo. Aunque todavía no estamos en una transformación total del desarrollo de software, sí se están dando pasos significativos, cambiando progresivamente la forma en la que consultamos recursos como Stack Overflow.

En este contexto, Cursor emerge como una de las soluciones más prometedoras. Si visitamos su página de inicio, veremos que se presentan como un editor con IA diseñado para mejorar la experiencia de desarrollo de código. Una de sus particularidades es que su interfaz se adapta a las preferencias del usuario: durante la instalación, podemos elegir entre una experiencia similar a VSCode o IntelliJ, lo que facilita la transición para quienes ya están acostumbrados a estos entornos.

Funcionalidades básicas de Cursor

Cursor ofrece varias funcionalidades enfocadas en mejorar la productividad del desarrollador. Aunque la plataforma sigue evolucionando y es probable que se añadan más características en el futuro, estas son algunas de las más destacadas y útiles desde el primer día:

  • Autocompletado inteligente: Más allá de las clásicas sugerencias de código, Cursor permite renombrar variables o métodos, detectando automáticamente todas sus apariciones en el código y aplicando los cambios de forma global. Esto elimina la necesidad de búsquedas manuales o refactorizaciones tediosas.
  • Modificación de código asistida: Una de las herramientas más potentes de Cursor es su capacidad para realizar cambios en fragmentos de código específicos. Podemos pedirle que optimice una función, refactorice una estructura compleja o incluso traduzca código entre distintos lenguajes de programación.
  • Interacción con los modelos de IA: Cursor nos ofrece dos formas principales de interactuar con su motor de IA:
    1. Desde el panel lateral, donde podemos hacer preguntas, pedir explicaciones sobre fragmentos de código o solicitar generación de nuevas funciones.
    2. A través de la consola flotante, que permite una interacción más dinámica mientras programamos. En ambos casos, la IA no solo sugiere cambios, sino que también permite aplicarlos directamente sobre el código, agilizando la implementación de mejoras.
  • Generación de pruebas unitarias: podemos pedirle a Cursor que nos ayude a escribir tests automatizados para nuestro código, lo que es especialmente útil cuando necesitamos mejorar la cobertura de pruebas sin invertir demasiado tiempo en su escritura manual.
  • Generación de documentación: si trabajamos en proyectos colaborativos, la generación de documentación es clave. Cursor puede ayudar a documentar funciones, clases o módulos siguiendo estándares como JSDoc o Docstrings en Python.

Cursor TAB

Cursor TAB es una de las principales funcionalidades que nos proporciona Cursor. En este caso, a medida que vayamos escribiendo codigo, Cursor nos ira sugiriendo autocompletados y usara los cambios recientes para sugerirnos cambios mas apropiados.

Por ejemplo, si estamos generando métodos para la gestión de arrays, si por ejemplo tenemos algo como esto:

const addItemInArray = (array, item) => {
  array.push(item)
  
  return array
}

Si ahora nosotros empezamos a escribir algo como remov Cursor va a entender que necesitamos un método asi:

const removeItemFromArray = (array, index) => {
  if (index >=0 && index < array.length) {
    array.splice(index, 1)
  }
  
  return array
}

Todo esto funciona porque Cursor trabaja con el contexto de lo que hemos escrito y nos sugiere los cambios relativos a lo que vamos trabajando. Si vemos que el cambio nos parece bien, solo tendremos que pulsar TAB en nuestro teclado y todo se aplicara.

Es interesante que Cursor nos permite aplicar los cambios linea por linea. Para ello tendremos que irnos a la configuración de Cursor y habilitarla.

Cursor Chat

Quizás la feature mas interesante que nos da Cursor es poder hablar con el modelo de IA, hacer nuestras consultar, pedir información o incluso pedir que nos explique código o nos busque fallos o formas de refactorizar nuestros métodos.

Tenemos dos opciones para esto, la primera es el panel lateral que aparece a la derecha del IDE con el que tendremos un hilo de conversación con Cursor e ira ganando contexto sobre las preguntas que le hagamos. Tened en cuenta que si abrimos una nueva conversación, Cursor puede hacer las sugerencias distintas porque se puede dar la casualidad que el modelo encuentre otra forma de solucionar la pregunta. Si nos quedamos en el mismo y vamos indagando en esa conversación, Cursor usara el contexto de esa conversación para seguir hilando a medida que le preguntemos.

image

Otra opción es usar el generador de código inferior que se abre usando una combinación de teclas. En Mac usaremos CMD + K y en Windows podemos usar Ctrl + K. Este chat funciona igual que el lateral, solo que ocupa menos espacio en pantalla.

image 1

Usando cualquier de las dos formas de comunicarse con el chat, en el momento que le pedimos que nos genere código y lo aplique, veremos como pinta las lineas nuevas en verde mientras las antiguas se quedan en rojo, un aspecto muy similar a cuando vemos los cambios en una interfaz de Git (Github o Gitlab).

Otra forma de preguntar a Cursor es pidiéndole que nos resuelva algo teniendo en cuenta a ciertos ficheros de nuestro proyecto.

image
 Descubre cómo Cursor, con su tecnología de IA, transforma el desarrollo de software facilitando tareas como el autocompletado inteligente y la refactorización de código, optimizando la productividad y eficiencia.

Cursor context

Para que las respuestas de Cursor sean mas apropiadas y sigan el modelo de lo ya implementado en nuestro proyecto, Cursor lleva a cabo una indexación de todos los ficheros del proyecto con tal de tener mucho mas contexto a la hora de poder respondernos. Esto le puede servir, por ejemplo, en una tarea muy simple en la que le preguntemos si una variable esta siendo usada en varias partes del proyecto en caso de que queramos hacer un cambio.

Cursor genera una embeddings que les sirven para hacer las consultas mucho mas rapidas y ademas saber a donde referenciarnos en el momento que encuentre algo que nos sirva.

Conclusiones

Cursor es una herramienta muy potente que nos puede ayudar en nuestro día a día. Personalmente, creo que es mucho mas util para tareas mas tediosas que suelen robarnos mucho tiempo, como por ejemplo el crear archivos XML, o mocks para tests o incluso cuando tenemos algún error de dependencias en el proyecto y no sabemos bien como solucionarlas.

Creo que para tareas mas habituales para desarrollar una nueva feature nos puede venir bien para un esqueleto, pero no podemos confiar al cien por cien en la IA porque va a cometer errores y tenemos que revisar bien lo que nos ofrezca y evitar errores en producción.

¿Quieres leer más posts de David Luque? Aquí tienes todos los que ha escrito en este blog.

Backend

Picture of David Luque Quintana

David Luque Quintana

La mejor forma de aprender a programar es programando. Actualmente trabajo con Ruby y React.
Picture of David Luque Quintana

David Luque Quintana

La mejor forma de aprender a programar es programando. Actualmente trabajo con Ruby y React.

We are HIRING!

What Can We Do