Skip to content
Perspectivas e Iteraciones Entendiendo la IA: técnico, cotidiano y reflexiones.
← atrás

5 Formas de Impulsar tu Productividad en Programación con IA Generativa

31 de enero de 2025 • 8 min de lectura

5 Formas de Impulsar tu Productividad en Programación con IA Generativa

Como Artesano de Software con años de experiencia en el campo, he sido testigo del impacto de la IA Generativa en el desarrollo de software desde la introducción de ChatGPT en 2023. A través de la aplicación práctica, he identificado cinco formas poderosas de aprovechar esta tecnología para mejorar la productividad.

1. Búsqueda de Código Mejorada

La forma más frecuente en que utilizo la IA Generativa es para buscar información técnica. Los motores de búsqueda tradicionales requieren terminología precisa, mientras que la IA Generativa entiende conceptos y contexto. Por ejemplo, cuando busco el principio de optimización de parámetros de métodos, pregunto:

Prompt

¿Cuál es el nombre del concepto de programación donde solo debes pasar parámetros que realmente son utilizados por el método? Pasar parámetros a un método que no son utilizados por el método crea dependencias innecesarias.

La IA Generativa entiende el concepto que estoy describiendo (Ley de Demeter) y proporciona la respuesta correcta, eliminando la necesidad de múltiples búsquedas.

2. Generación Eficiente de Código

La IA Generativa sobresale en automatizar tareas de codificación repetitivas. Recientemente, necesité convertir un archivo JSON grande en declaraciones de inserción de base de datos. En lugar de escribir código de conversión tedioso, proporcioné los datos JSON a la IA con instrucciones claras para generar declaraciones de inserción de MS SQL Server. Este enfoque ahorró horas de tiempo de codificación manual y redujo la posibilidad de errores.

Prompt:

Usa los datos JSON proporcionados a continuación y genera declaraciones de inserción para MS SQL Server para ser insertadas en la tabla dbo.Users.

[  
{  
"Username": "musiclover87",  
"Lastname": "Smith",  
"Firstname": "Alice",  
"Birthdate": "1987-06-12",  
"Password": "password123",  
"FavoriteIceCream": "Chocolate Chip Cookie Dough",  
"FavoriteSuperhero": "Spider-Man"  
},  
{  
"Username": "bookworm92",  
"Lastname": "Johnson",  
"Firstname": "Bob",  
"Birthdate": "1992-03-21",  
"Password": "securePassword",  
"FavoriteIceCream": "Mint Chocolate Chip",  
"FavoriteSuperhero": "Batman"  
},  
{  
"Username": "gamergirl01",  
"Lastname": "Williams",  
"Firstname": "Carol",  
"Birthdate": "2001-11-05",  
"Password": "gamer4life",  
"FavoriteIceCream": "Strawberry",  
"FavoriteSuperhero": "Wonder Woman"  
},  
{  
"Username": "techieguy95",  
"Lastname": "Brown",  
"Firstname": "David",  
"Birthdate": "1995-08-18",  
"Password": "techmaster",  
"FavoriteIceCream": "Vanilla Bean",  
"FavoriteSuperhero": "Iron Man"  
},  
{  
"Username": "foodiequeen89",  
"Lastname": "Davis",  
"Firstname": "Emily",  
"Birthdate": "1989-04-29",  
"Password": "delicious123",  
"FavoriteIceCream": "Salted Caramel",  
"FavoriteSuperhero": "Captain Marvel"  
},  
{  
"Username": "traveler76",  
"Lastname": "Miller",  
"Firstname": "Frank",  
"Birthdate": "1976-12-02",  
"Password": "adventuretime",  
"FavoriteIceCream": "Coffee",  
"FavoriteSuperhero": "Thor"  
},  
{  
"Username": "fitnessfanatic98",  
"Lastname": "Wilson",  
"Firstname": "Grace",  
"Birthdate": "1998-09-15",  
"Password": "strongandfit",  
"FavoriteIceCream": "Mango Sorbet",  
"FavoriteSuperhero": "Black Widow"  
},  
{  
"Username": "photographylover85",  
"Lastname": "Moore",  
"Firstname": "Henry",  
"Birthdate": "1985-05-23",  
"Password": "pictureperfect",  
"FavoriteIceCream": "Pistachio",  
"FavoriteSuperhero": "Superman"  
},  
{  
"Username": "musicjunkie93",  
"Lastname": "Taylor",  
"Firstname": "Isabella",  
"Birthdate": "1993-02-08",  
"Password": "musicislife",  
"FavoriteIceCream": "Rocky Road",  
"FavoriteSuperhero": "Black Panther"  
},  
{  
"Username": "sportsfanatic88",  
"Lastname": "Anderson",  
"Firstname": "Jack",  
"Birthdate": "1988-10-30",  
"Password": "goteamgo",  
"FavoriteIceCream": "Cookies and Cream",  
"FavoriteSuperhero": "Captain America"  
}  
]

Salida:


-- Insertando registros en la tabla dbo.Users

INSERT INTO dbo.Users (Username, Lastname, Firstname, Birthdate, Password, FavoriteIceCream, FavoriteSuperhero)
VALUES 
('musiclover87', 'Smith', 'Alice', '1987-06-12', 'password123', 'Chocolate Chip Cookie Dough', 'Spider-Man'),
('bookworm92', 'Johnson', 'Bob', '1992-03-21', 'securePassword', 'Mint Chocolate Chip', 'Batman'),
('gamergirl01', 'Williams', 'Carol', '2001-11-05', 'gamer4life', 'Strawberry', 'Wonder Woman'),
('techieguy95', 'Brown', 'David', '1995-08-18', 'techmaster', 'Vanilla Bean', 'Iron Man'),
('foodiequeen89', 'Davis', 'Emily', '1989-04-29', 'delicious123', 'Salted Caramel', 'Captain Marvel'),
('traveler76', 'Miller', 'Frank', '1976-12-02', 'adventuretime', 'Coffee', 'Thor'),
('fitnessfanatic98', 'Wilson', 'Grace', '1998-09-15', 'strongandfit', 'Mango Sorbet', 'Black Widow'),
('photographylover85', 'Moore', 'Henry', '1985-05-23', 'pictureperfect', 'Pistachio', 'Superman'),
('musicjunkie93', 'Taylor', 'Isabella', '1993-02-08', 'musicislife', 'Rocky Road', 'Black Panther'),
('sportsfanatic88', 'Anderson', 'Jack', '1988-10-30', 'goteamgo', 'Cookies and Cream', 'Captain America');

3. Traducción de Código Sin Problemas

La traducción de código es otra área donde la IA Generativa resulta invaluable. Durante un proyecto reciente para convertir una aplicación de C# a Python, utilizamos IA de dos formas cruciales:

  1. Conversión directa de funciones de Python a C#

  2. Traducción compleja de ORM de Entity Framework a SQLAlchemy

Esta capacidad aceleró significativamente nuestro proceso de migración y aseguró consistencia en todas las traducciones.

Convirtiendo Python a C#:

Prompt:

Convierte el siguiente código Python a C#.
def reverse_string(text): 
"""
Reverses a given string. 
	Args: text: The string to be reversed. 

Returns: The reversed string.

""" 
return text[::-1]

Salida:

/// <summary>
/// Reverses a given string.
/// </summary>
/// <param name="text">The string to be reversed.</param>
/// <returns>The reversed string.</returns>
public static string ReverseString(string text)
{
	return new string(text.Reverse().ToArray());
}

4. Documentación de Código Automatizada

La documentación es esencial pero a menudo tediosa. La IA Generativa agiliza este proceso de dos formas:

  1. Resumen de código: Analizando código existente y proporcionando resúmenes claros y concisos

  2. Generación de encabezados de documentación: Creando documentación completa de métodos que mantiene los estándares de calidad del código

Por ejemplo, cuando documento algoritmos de ordenamiento o lógica de negocio compleja, la IA puede generar documentación clara y precisa que sigue los estándares del equipo y las mejores prácticas.

Prompt:

Genera un encabezado de documentación para la siguiente función agregando el encabezado e imprimiendo la función completa con el encabezado de documentación.
def bubble_sort(list_):
  n = len(list_) 
  for i in range(n):
    # Flag to optimize, if no swaps occur, the list is sorted
    swapped = False
    # Last i elements are already in place
    for j in range(0, n-i-1):
      # Swap if the element found is greater than the next element
      if list_[j] > list_[j+1]:
        list_[j], list_[j+1] = list_[j+1], list_[j]
        swapped = True
    # If no two elements were swapped in inner loop, the list is sorted
    if not swapped:
      break
  return list_

Salida:

def bubble_sort(list_):
    """
    Sorts a given list using the Bubble Sort algorithm.

    Args:
        list_: The list of elements to be sorted. Elements must be comparable.

    Returns:
        A new list containing all elements from the original list in ascending order.
        
    Example:
        >>> bubble_sort([64, 34, 25, 12, 22, 11, 90])
        [11, 12, 22, 25, 34, 64, 90]
    """
    n = len(list_) 
    for i in range(n):
        # Flag to optimize, if no swaps occur, the list is sorted
        swapped = False
        # Last i elements are already in place
        for j in range(0, n-i-1):
            # Swap if the element found is greater than the next element
            if list_[j] > list_[j+1]:
                list_[j], list_[j+1] = list_[j+1], list_[j]
                swapped = True
        # If no two elements were swapped in inner loop, the list is sorted
        if not swapped:
            break
    return list_

5. Andamiaje de Aplicaciones

Quizás la aplicación más impresionante de la IA Generativa es su capacidad para generar estructuras iniciales de aplicaciones. Dado un esquema o especificación clara, la IA puede crear:

  • Scripts de creación de base de datos

  • Mapeos ORM

  • Endpoints básicos de API

  • Implementaciones iniciales de UI

Esta capacidad reduce significativamente el tiempo gastado en código repetitivo y asegura una base consistente para el desarrollo posterior.

Prompt:

Eres un Ingeniero de Software trabajando en una gran corporación. Usando el siguiente esquema de base de datos, genera los scripts SQL necesarios para crear estas tablas en Postgres. Luego, genera los archivos de mapeo de SQL Alchemy para usar con FastAPI. Por último, genera una UI web simple usando FastAPI para listar las órdenes.
User
- UserId
- FirstName
- LastName
- Address
- Address2
- City
- State
- ZipCode
- Username
- Password
- IsActive

Client
- ClientId
- Name
- Address
- Address2
- City
- State
- ZipCode
- IsActive

Order
- OrderId
- OrderDate
- InvoiceNumber
- DueDate
- ClientId
- UserId

OrderDetail
- OrderDetailId
- OrderId
- Description
- Rate
- Quantity
- LineTotal

Ledger
- TransactionId
- Debit
- Credit
- OrderId
- TransactionDate

Salida:

...
Te ahorro la salida, pero generó una aplicación completa usando FastAPI.
...

Preguntemos qué podemos hacer para mejorar el diseño inicial.

Prompt 2:

Ese es un gran comienzo. ¿Qué podemos hacer para mejorar el diseño de la aplicación?

Salida:
Implementar logging para mejor depuración y manejo de errores.

logging.py (Opcional)

import logging

logger = logging.getLogger(__name__)
logging.basicConfig(level=logging.INFO)

def log_error(error):
    logger.error(f"An error occurred: {error}")

Prompt 3:

¿Puedes implementar tu sugerencia de usar Manejo de Errores y generar el código para mí?

Salida:
También puedes definir manejadores de excepciones globales en tu archivo main.py si quieres manejar excepciones específicas globalmente.

main.py

from fastapi import FastAPI, Request
from fastapi.responses import JSONResponse
import app.routers.order_router as order_router
from .exceptions import OrderNotFoundException, InvalidInvoiceNumberException

app = FastAPI()

# Include the router
app.include_router(order_router.router)

@app.exception_handler(OrderNotFoundException)
async def order_not_found_exception_handler(request: Request, exc: OrderNotFoundException):
    return JSONResponse(
        status_code=exc.status_code,
        content={"detail": exc.detail},
    )

@app.exception_handler(InvalidInvoiceNumberException)
async def invalid_invoice_number_exception_handler(request: Request, exc: InvalidInvoiceNumberException):
    return JSONResponse(
        status_code=exc.status_code,
        content={"detail": exc.detail},
    )

Mejores Prácticas y Consideraciones

Aunque la IA Generativa es poderosa, es importante:

  • Revisar y validar el código generado
  • Mantener consistencia con las bases de código existentes
  • Considerar las implicaciones de seguridad
  • Probar el código generado exhaustivamente
  • Usar la IA como asistente en lugar de reemplazo del juicio de ingeniería

Conclusión

La IA Generativa se ha convertido en una herramienta indispensable en el desarrollo de software moderno. Al aprovechar estos cinco enfoques - búsqueda mejorada, generación de código, traducción, documentación y andamiaje de aplicaciones - los desarrolladores pueden aumentar significativamente su productividad mientras mantienen la calidad del código.

La clave es entender las capacidades y limitaciones de estas herramientas y usarlas estratégicamente para mejorar en lugar de reemplazar la experiencia humana. A medida que estas tecnologías evolucionan, su integración en los flujos de trabajo de desarrollo se volverá cada vez más valiosa.

↑ Volver arriba

Autor: Chuck Conway se especializa en ingeniería de software e IA Generativa. Conéctate con él en redes sociales: X (@chuckconway) o visítalo en YouTube.