¿Cómo la IA potencia a los desarrolladores de software?

¿Que aprenderás con este artículo?

En este capítulo, profundizaremos en cómo la Inteligencia Artificial (IA) está transformando el trabajo de los desarrolladores y equipos de QA.

Desde la generación automática de código hasta la optimización de pruebas y la identificación proactiva de errores, exploraremos ejemplos prácticos y directos de aplicaciones de IA que están aumentando la productividad de los desarrolladores, tanto aumentando su eficiencia como permitiéndoles trabajar con más tecnologías.

Curso Agile con Inteligencia Artifical - Aumenta productividad developers con IA

¿Cómo aumenta la IA la productividad de los desarrolladores?

El impacto de la Inteligencia Artificial (IA) en el trabajo de los desarrolladores es transformador, redefiniendo cómo crean y mantienen software.

La IA mejora significativamente su capacidad para aprender nuevas tecnologías rápidamente, ya que permiten hacer preguntas a la IA sobre como abordar un problema, buscar documentación sobre una API, escribir código sobre una tecnología desconocida o preguntarle que falla en un código.

La IA también aumenta la autonomía de los desarrolladores, automatizando tareas repetitivas como revisión de código, generación de pruebas o la creación de documentación.

Esto les permite concentrarse en aspectos más creativos y críticos del desarrollo, elevando la eficiencia y productividad del equipo. Además, fomenta una mejor colaboración al facilitar la comunicación y el trabajo compartido, desdibujando los silos que pueden crearse por la dificultad de aprender las tecnologías.

El desarrollo de software comprende un rango muy amplio de activididades y de habilidades. En este artículo nos limitamos a mostrar una visión general. 😉

Algunos ejemplos de aplicación de la IA al desarrollo de software

La inteligencia artificial tiene muchísimas opciones de aplicación al trabajo de diferentes perfiles de desarrolladores, tanto front-end o back-end, como testers o analistas. Aquí van unos ejemplos:

  1. Generación de Código: La IA puede traducir especificaciones de alto nivel en código funcional, acelerando el desarrollo de características nuevas.
  2. Escribir Documentación: LA IA puede escribir la documentación de librerías o interfaces para desarrolladores (API) a partir del código fuente. Además puede traducirlas a diferentes idiomas.
  3. Escritura de Drivers de Pruebas: A partir de descripciones Gherkin, la IA puede generar automáticamente los drivers de pruebas necesarios, haciendo que la creación de pruebas sea más rápida y menos propensa a errores.
  4. Generar datos para pruebas: La IA puede crear datos para realizar pruebas de las aplicaciones con un bajo coste. 
  5. Revisión de Código Asistida: Algoritmos de IA pueden revisar el código para identificar problemas de calidad y seguridad antes de que se conviertan en problemas mayores.
  6. Predicción de Áreas de Riesgo: Basándose en el historial de cambios y problemas, la IA puede predecir qué partes del código son más propensas a errores, permitiendo una asignación más inteligente de recursos de QA.
  7. Optimización de la Arquitectura del Software: La IA puede analizar patrones de diseño y uso de recursos para sugerir mejoras en la arquitectura del software, aumentando la eficiencia y la escalabilidad del sistema.
  8. Asistencia en la Depuración de Código: La IA puede ayudar a identificar rápidamente la causa raíz de los bugs en el software, sugiriendo soluciones basadas en patrones conocidos de errores y soluciones previas, lo que reduce significativamente el tiempo de depuración.

Ejemplo 1: escribir código de pruebas Selenium

En este ejemplo, le pasamos a ChatGPT 4 la descripción de funcionalidad de la aplicación GymAPP para gimnasios, escrita en lenguaje Gherkin, y le pedimos que escriba el código de una prueba automatizada para web con la librería Selenium Webdriver.

Este es el prompt donde le pedimos que escriba el código:

				
					Escribe una implementación Selenium Webdriver para el primer escenario de este código Gherkin de la aplicación GymAPP:

"Característica: Funcionalidad de Tracking Mejorada en GymAPP

  Como usuario de GymAPP
  Quiero registrar detalles específicos de mi entrenamiento
  Para tener una visión holística de mi progreso y esfuerzo

  Escenario: Usuario registra un nuevo entrenamiento con detalles de esfuerzo y sensaciones
    Dado que estoy registrado en la aplicación GymAPP
    Y estoy en la sección "Mi Entrenamiento"
    Cuando selecciono "Agregar Entrenamiento"
    Y elijo mi rutina de ejercicios
    Y registro las repeticiones y series completadas
    Y califico mi nivel de esfuerzo en una escala de 1 a 10
    Y añado mis sensaciones y notas sobre el entrenamiento
    Entonces mi entrenamiento con todos los detalles es guardado en mi historial
    Y puedo ver un resumen del esfuerzo y las sensaciones en mi dashboard"
				
			

Y este es el resultado escrito en Python:

				
					from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

# Inicializa el WebDriver de Chrome
driver = webdriver.Chrome('/path/to/chromedriver')  # Asegúrate de especificar la ubicación correcta del ChromeDriver

# Accede a la aplicación GymAPP
driver.get("http://gymapp.com/login")  # Sustituye esto por la URL real de inicio de sesión de GymAPP

# Suponiendo que ya estás registrado y en la página "Mi Entrenamiento"
# Aquí deberías agregar los pasos para iniciar sesión si es necesario

# Navega a la sección "Mi Entrenamiento"
mi_entrenamiento = driver.find_element(By.ID, "mi-entrenamiento-menu")
mi_entrenamiento.click()

# Espera hasta que el botón "Agregar Entrenamiento" sea visible y clickeable
WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.ID, "agregar-entrenamiento"))).click()

# Suponiendo que la elección de rutina de ejercicios se hace a través de un menú desplegable
seleccion_rutina = WebDriverWait(driver, 10).until(EC.visibility_of_element_located((By.ID, "rutina-dropdown")))
seleccion_rutina.click()
# Elige la rutina (este es un ejemplo, ajusta según sea necesario)
driver.find_element(By.ID, "rutina1").click()  # Sustituye "rutina1" por el ID real de la opción

# Registra las repeticiones y series completadas
driver.find_element(By.ID, "repeticiones-input").send_keys("10")
driver.find_element(By.ID, "series-input").send_keys("3")

# Califica el nivel de esfuerzo
driver.find_element(By.ID, "esfuerzo-dropdown").click()
driver.find_element(By.ID, "esfuerzo-8").click()  # Asume una escala de 1 a 10

# Añade sensaciones y notas sobre el entrenamiento
driver.find_element(By.ID, "notas-input").send_keys("Me sentí muy bien después de la rutina, pero la última serie fue desafiante.")

# Guarda el entrenamiento
driver.find_element(By.ID, "guardar-entrenamiento").click()

# Verifica que el entrenamiento ha sido guardado correctamente y que el resumen es visible
# Esto podría requerir buscar un elemento específico que solo aparece después de guardar correctamente

# Cierra el navegador al finalizar
driver.quit()

				
			

Ejemplo 2: generar datos para pruebas

Otro uso de la inteligencia artificial que puede ahorrar mucho tiempo a los desarrolladores es la creación de datos de calidad para pruebas. Además se puede modificar aspectos como el idioma o las proporciones de datos de un tipo y otro, para ganar aún más tiempo.

Escribimos este prompt para genere los datos en un formato CSV que pueda subir a la base de datos: 👇

				
					Crea un conjunto de datos variados para una automatización de pruebas con gherkin respecto a una funcionalidad que entra datos de entrenamiento en un formulario con campos:  nombre, apellidos, edad, sexo, frecuencia de asistencia al gimnasio (alta, media, baja), reserva de padel (si/no), en un formato CSV.


				
			

Y aquí nos devuelve el fichero CSV para hacer las pruebas: 👇

				
					
nombre,apellidos,edad,sexo,frecuencia_asistencia,reserva_padel
Juan,Pérez,30,Hombre,Alta,Sí
Ana,García,25,Mujer,Media,No
Luis,Rodríguez,40,Hombre,Baja,Sí
Marta,Sánchez,35,Mujer,Alta,No
Carlos,López,28,Hombre,Media,Sí
Sofía,Martín,22,Mujer,Baja,No
Óscar,Gómez,33,Hombre,Alta,Sí
Lucía,Fernández,27,Mujer,Media,No
Antonio,Torres,39,Hombre,Baja,Sí
Elena,Ruiz,31,Mujer,Alta,No
				
			

 

Ejemplo 3: generar el código de una aplicación con IA

Otro ejemplo de la aplicación de AI al trabajo de los desarrolladores es directamente la de generar código de aplicación. 

En mi caso, hace unos 15 años que no programo nada a nivel profesional y necesitaba escribir código Powershell para el plugin SnipDo de Windows. No tenía tiempo ni ganas para ponerme a investigar Powershell, por lo que le pedí a ChatGPT4 que escribiera este código sencillo por mi. 👇

				
					Escribe el código PowerShell que transforme una cadena de texto de entrada en el equivalente unicode con aspecto de negrita.
				
			

Y el resultado es:

				
					function Convert-ToBoldUnicode {
    param (
        [string]$inputText
    )
    
    $boldOffset = 0x1D400 - [char]"A" + 0xFF21
    $outputText = ""

    foreach ($char in $inputText.ToCharArray()) {
        if ($char -ge "A" -and $char -le "Z") {
            $outputText += [char]([char]$char + $boldOffset)
        }
        elseif ($char -ge "a" -and $char -le "z") {
            $outputText += [char]([char]$char + $boldOffset - 0x20)
        }
        else {
            $outputText += $char
        }
    }

    return $outputText
}

# Ejemplo de uso
$inputString = "GymApp"
$boldString = Convert-ToBoldUnicode -inputText $inputString
Write-Output "Texto original: $inputString"
Write-Output "Texto en negrita Unicode: $boldString"
				
			

Y funcionó! 😃

Para un código más complicado, probablemente hubiera que modificar algunas partes manualmente, pero este ejemplo es ilustrador para mi de las barreras que derriba la IA.

Resumen

La IA puede automatizar parcial o totalmente muchas de las tareas de un desarrollador, permitiédole:

  • Aprender a programar en nuevas tecnologías, ya que la IA genera código para comenzar a programar un nuevo lenguaje y te permite hacer preguntas.
  • Automatizar tareas rutinarias como generar documentación o datos para pruebas.
  • Permite trabajar en partes del sistema que anteriormente solo conocía un miembro del equipo, reduciendo los silos.

En el próximo capítulo veremos ¿Cómo diseñar experiencias de usuario (UX) con IA? ¡No te lo pierdas!.

¡Pon en marcha lo aprendido!

Emplea un minuto en reflexionar sobre estas preguntas.

  1. ¿Cómo me ayuda la IA a automatizar las tareas del developer?
  2. ¿Cómo me ayuda la IA a generar código más rápido?
  3. ¿Qué nuevas actividades con mayor valor añadido puedo hacer con el tiempo sobrante?

Mejor aún si puedes anotar las respuestas en tu cuaderno de aprendizaje. Y todavía mejor si tuiteas sobre esto y referencias a este artículo. #agile_con_IA 🤗

👉 Te espero en el siguiente capítulo para aprender ¿Cómo diseñar experiencias de usuario (UX) con IA?

👉 Suscríbete a este curso: https://www.youtube.com/playlist?list=PLjC8RDUUxslDVF49ma6qBOFRISL0-CH48

👉 Suscríbete a nuestro canal Youtube: https://www.youtube.com/@itnove

¿Quieres recibir más información y recursos de calidad?

¡Sigue a Alex en las redes sociales!

Alex Ballarin

Alex Ballarin es Professional Scrum Master y Business Agility Coach. Además de este blog, publica contenido frecuentemente en las redes sociales

¡Suscríbete a nuestra newsletter mensual!

Cada mes enviamos una newsletter a más de 1.200 personas con contenidos, recursos y ofertas especiales de nuestros cursos. Queremos ofrecer contenido de calidad y sin spam.

Scroll al inicio