Por Daniel Contreras
¡Saludos, entusiasta de la tecnología! Si estás leyendo esto, seguramente compartes la pasión por el desarrollo eficiente y la curiosidad por las maravillas que, las nuevas tecnologías en general y la inteligencia artificial en particular, puede aportar a nuestro flujo de trabajo.
En este artículo, exploraremos, desde mi punto de vista subjetivo basado en mi experiencia personal, seis herramientas de IA que puedes integrar en Visual Studio Code (VSCode) para potenciar tu productividad y creatividad como desarrollador: Cody, Blackbox, Bito, CodeGPT, GitHub Copilot y ChatGPT.
Prepárate para descubrir cómo estas herramientas pueden transformar tu día a día en la programación.
La IA en el desarrollo de Software
En el mundo del desarrollo, la eficiencia y la productividad son factores decisivos para entregar proyectos a tiempo y con calidad.
El desafío siempre ha sido adaptarnos a nuevas tecnologías y metodologías que nos ayuden a ahorrar tiempo y mejorar la calidad de nuestro código. Integrar herramientas de IA en tu flujo de trabajo puede ser la solución ideal.
Imagina tener a un experto en desarrollo siempre disponible en tu bolsillo. Eso puede ser la IA, si sabemos usarla, no es algo mágico que solo con instalarnos nos haga el trabajo, tenemos que saber cómo usarlo y en qué condiciones.
Como desarrollador, puedes aprovechar estas herramientas para obtener respuestas a preguntas específicas, solicitar sugerencias de código, documentar tu código, generar una suite básica de tests unitarios o end to end, explorar nuevas tecnologías e incluso recibir tutoriales paso a paso. Como se indica en el siguiente artículo The Benefits of AI in Software Development
Para nosotros, los amantes del código, las herramientas de IA proporcionan un cambio en el paradigma.
Ya no estamos limitados por nuestro propio conocimiento o experiencia; ahora podemos acceder al vasto océano de conocimientos de la comunidad global de desarrolladores, ¡todo con solo unos pocos clics!
Ventajas del uso de herramientas de IA
Estudios recientes han demostrado que el uso de herramientas de IA en el desarrollo de software puede tener un impacto significativo en la productividad, de media proporcionan un 50% de aumento de productividad, y la calidad del código, llegando a alcanzar mejoras del 30% en la calidad del mismo.
Según un estudio de GitHub sobre GitHub Copilot, los desarrolladores que usan esta herramienta completan tareas un 55% más rápido en comparación con aquellos que no la utilizan. Además, un informe de McKinsey, How AI is Transforming Software Development, indica que la adopción de herramientas de IA puede aumentar la productividad de los desarrolladores hasta en un 40%. Como también indica TechCrunch en este artículo The Impact of AI on Developer Productivity. El incremento de productividad con este tipo de herramientas es superior incluso a la que proporcionan los IDEs de desarrollo frente a editores de texto plano corrientes AI Tools to Boost Developer Productivity
1. Cody
Cody es una herramienta de IA desarrollada por Sourcegraph. Cody se especializa en entender tu código y ofrecerte sugerencias y ayuda contextuales, actuando como un compañero de equipo siempre disponible.
Características Principales:
- Búsqueda Semántica: Encuentra funciones y variables en tu proyecto sin importar la sintaxis exacta.
- Documentación Instantánea: Genera documentación a partir de tus comentarios y código existente.
En mi experiencia es muy útil a la hora de entender un código existente, ya sea pregúntándole directamente o pidiéndole que documente una parte de un código, es útil para búsquedas en grandes proyectos, incluso sin conocer exactamente el nombre de una función, variable o clase.
Ejemplo de Uso: Supongamos que estás trabajando en un proyecto grande y necesitas entender cómo se utiliza una función específica. Puedes usar Cody para buscar dónde y cómo se usa esa función en tu proyecto sin necesidad de realizar búsquedas manuales.
2. Blackbox
Blackbox es una herramienta diseñada para asistirte con la generación de código a partir de descripciones en lenguaje natural, ideal para cuando necesitas un código rápido sin complicaciones.
Características Principales:
- Generación de Código: Escribe descripciones y Blackbox genera el código correspondiente.
- Compatibilidad con Múltiples Lenguajes: Soporta una amplia variedad de lenguajes de programación.
Es una extensión muy potente que he utilizado para mejorar mi código e incluso aprender cómo hacer mejor las cosas en frameworks o lenguajes que no son mi skill más desarrollado, como el caso de Python, lenguaje que estoy aprendiendo a una velocidad endiablada gracias a la ayuda de la IA.
Ejemplo de Uso: Estás implementando una función para ordenar una lista de números en Python. Simplemente describe lo que necesitas y deja que Blackbox haga el resto.
3. Bito
Bito se centra en la productividad y la gestión de tareas dentro de VSCode. Esta herramienta te ayuda a mantenerte organizado y enfocado.
Características Principales:
- Gestión de Tareas: Crea y administra tareas directamente en tu editor.
- Generación de tests: Genera tests sobre funciones, ficheros o proyectos completos.
- Recordatorios y Notificaciones: Recibe alertas sobre tus tareas pendientes.
Aparte de lo que puedes hacer con los otros plugins comentados hasta ahora, una de las grandes bazas de este plugin es la generación de tests. Tanto si no eres fan de TDD o si estás en un proyecto que no ha tenido los tests en mente durante un tiempo, con este plugin es sencillo generar tests de la nada, en el lenguaje y framework que se le indique, sobre una parte del código o sobre todo el proyecto.
Es cierto que los tests generados hay que retocarlos para ajustarlos a los requerimientos del proyecto, completarlos y ampliarlos, pues genera una batería básica de los mismos, tanto unitarios como end to end, pero sigue siempre los estándares y ahorra un montón de trabajo acerca de los tests, aparte de que puede crearte tests para casuísticas en las que no habías pensado la necesidad de una validación.
Como punto fuerte, que no es especialmente sobre el código sino sobre el flujo de trabajo, proporciona un sistema de tareas y recordatorios que también pueden interactuar con tu código o las acciones que hagas sobre él, como acciones de git sobre el proyecto, teniendo en cuenta lo indicado para las tareas.
Ejemplo de Uso: Necesitas asegurarte de revisar el código de tus compañeros antes de finalizar el día. Con Bito, puedes crear una tarea y recibir recordatorios.
4. CodeGPT
CodeGPT es una extensión que integra GPT-3 directamente en VSCode, permitiéndote generar y mejorar código con el poder de la IA de OpenAI.
Características Principales:
- Sugerencias de Código: Proporciona recomendaciones y fragmentos de código.
- Mejora de Código: Refactoriza y optimiza tu código existente.
Aparte de la sugerencia de código, que dependiendo del lenguaje es más acertada o menos, su gran fortaleza es la reescritura de código; código legacy o antiguo que necesitas mejorar, código desarrollado con una versión de una librería o framework con breakchanges respecto de una más moderna, o código escrito en un lenguaje en el que estás empezando.
Esta extensión es como poder pasar un validador experto de código a tu desarrollo enfocándolo en cualquiera de estas ideas, te ayuda mucho a entender qué puedes hacer mejor, qué se puede mejorar o cómo evolucionar un código de la mejor manera posible.
Ejemplo de Uso: Quieres mejorar el rendimiento de una función de búsqueda en una lista de Python. CodeGPT puede sugerir optimizaciones basadas en mejores prácticas.
5. GitHub Copilot
GitHub Copilot es probablemente una de las herramientas de IA más conocidas para desarrolladores. Copilot, desarrollado por GitHub y OpenAI, actúa como un asistente de codificación en tiempo real.
Características Principales:
- Sugerencias de Código en Tiempo Real: Completa líneas y bloques de código mientras escribes.
- Compatibilidad con Múltiples Lenguajes: Soporta numerosos lenguajes y frameworks.
Es uno de los más extendidos, y la gente lo utiliza a todo lo ancho y largo del mundo, en parte porque su integración con VSCode es nativa al ser soportado por el mismo fabricante que VSCode.
Para mi su mayor virtud es la autogeneración de código, muchas veces te genera código que tu estás pensando mientras escribes un comentario para ello, o simplemente con ponerle el nombre a la función, incluso te añade los parámetros de entrada para la función sólo con el nombre!
Además el código que genera no es código que la IA se invente o sólo te ofrezca soluciones con el conocimiento de internet, sino que lee de tu proyecto y lo que ofrece tiene sentido con el resto de código implementado en el mismo.
Ejemplo de Uso: Estás desarrollando una aplicación web y necesitas una función para validar direcciones de correo electrónico. GitHub Copilot puede generar la función automáticamente a medida que escribes.
6. ChatGPT
ChatGPT es un asistente de inteligencia artificial que ha revolucionado la industria de la tecnología gracias a su capacidad para ofrecer ayuda a los desarrolladores en diversas áreas, desde la generación de código hasta la solución de problemas.
Características Principales:
- Asistencia en Tiempo Real: Proporciona documentación y explicaciones sobre funciones, variables y otros elementos del código.
- Generación de Código: Ayuda a generar funciones y sets de código base.
- Adaptabilidad: Proporciona sugerencias y mejora la calidad del código existente.
- Detección de Errores: Identifica errores e inconsistencias en el código y sugiere correcciones.
Es uno de los plugins más genéricos y más versátiles de todos, por eso está el último, pero no el menos útil, sino todo lo contrario. Permite hacer casi todo lo que permiten hacer los anteriores, con una ventaja, es como si realmente tuvieras a un compañero sentado contigo haciendo Pair Programming, en lugar de salir a ChatGPT para preguntar, estás interactuando con un GPT de OpenAI enfocado al desarrollo de software.
La capacidad que tiene para, con una descripción de una tarea en lenguaje natural, proporcionarte una solución aceptable y acorde a las necesidades, es simplemente asombrosa.
También cabe destacar la detección de errores, no es como un lintern o una preejecución del código, sino que realmente comprende el código y el contexto del proyecto y te indica posibles errores en la ejecución o incongruencias que se puedan dar según el código, va más allá de la sintaxis de un lenguaje o framework.
Ejemplo de Uso: Estás trabajando en un proyecto y necesitas crear una función que calcule la suma de una lista de números en JavaScript. Con ChatGPT, simplemente describes tu necesidad y obtienes la solución en cuestión de segundos.
Combinando herramientas para maximizar la productividad
La verdadera magia ocurre cuando combinas estas herramientas, como ya he ido comentando en cada una, mi experiencia de uso mejora al combinarlas todas y quedarme con la característica más destacada de cada una, incluso combinando más de una de ellas en varias situaciones para comparar las soluciones aportadas, como si de una reunión de brainstorming se tratara. Desde mi punto de vista, las combino creando el siguiente escenario de trabajo:
- Planificación de Tareas: Utilizas Bito para gestionar y priorizar tus tareas diarias.
- Generación de Código: Blackbox te ayuda a generar código base rápidamente a partir de descripciones.
- Optimización y Refactorización: Con CodeGPT, refactorizas y mejoras el código generado.
- Documentación y Comprensión: Cody te ayuda a entender y documentar el código de manera eficiente.
- Asistencia en Tiempo Real: GitHub Copilot te proporciona sugerencias en tiempo real mientras trabajas en tu proyecto.
- Detección de errores: ChatGPT, entre otras muchas cosas, detectas errores muy rápidamente en tu proyecto.
Con esta combinación, puedes abordar cualquier desafío de desarrollo de manera más eficiente y con menos estrés, permitiéndote concentrarte en los aspectos creativos y críticos de tus proyectos.
Conclusión
Integrar herramientas de IA como Cody, Blackbox, Bito, CodeGPT, GitHub Copilot y ChatGPT en tu flujo de trabajo de VSCode puede transformar tu manera de desarrollar software. No solo mejoran la productividad, sino que también facilitan la gestión y optimización de código, permitiéndote centrarte en lo que realmente importa: crear soluciones innovadoras.
La integración de IA en nuestros proyectos es una excelente manera de ahorrar tiempo, reducir costos y mejorar la calidad de nuestros productos. Desde la resolución de problemas diarios hasta la exploración de nuevas tecnologías y enfoques de desarrollo, las posibilidades con IA son verdaderamente infinitas. Con cada interacción, tienes la oportunidad de expandir tus habilidades, mejorar tu eficiencia y llevar tus proyectos al siguiente nivel.
Si aún no has probado estas herramientas, te animo a que lo hagas y experimentes de primera mano el poder de la IA en el desarrollo de software. ¡Feliz codificación!
Recursos Adicionales
- Documentación de Cody
- Documentación de Blackbox
- Documentación de Bito
- Documentación de CodeGPT
- Documentación de GitHub Copilot
- Integración de ChatGPT en VSCode
Despedida y Spoiler Alert
Explora y descubre nuevas formas de mejorar tu flujo de trabajo con estas increíbles herramientas. ¡Nos vemos en el siguiente artículo, que hablaremos del IDE más evolucionado!