La IA Generativa ha cambiado por completo mi forma de enfocar el diseño de software. No creo que pueda volver atrás.

La inteligencia artificial está en auge en este momento. Todos mis feeds de redes sociales están llenos de nuevas funciones que se pueden realizar con los complementos de ChatGPT o mostrando una nueva foto creada por IA generativa. Seamos honestos, es bastante genial verlo y no me molesta en absoluto.

La comunidad tecnológica parece haberse lanzado de lleno a esta fiebre del oro de la IA. Con nuevos programas, funciones y mejoras que surgen cada día, nos encontramos rápidamente en un momento de “hundirse o nadar”. ¿Abrazamos todos los nuevos avances y vemos cómo cambia el desarrollo? ¿Lo ignoramos y esperamos que desaparezca? ¿Qué tal algo en el medio?

Si observamos la curva de adopción de la IA que se muestra arriba, estimo que todavía estamos en la fase inicial de los primeros adoptantes. Mucha gente está hablando de ello en línea, pero no muchos de nosotros lo estamos utilizando realmente en la producción.

Dicho esto, llegará el momento de la IA en el que será común verla en todo. No será algo que notemos específicamente, se dará por sentado y hará que el software sea más agradable.

Pero no para mí. Me he sumergido por completo en ella y ha tomado el control de cómo planifico, diseño e implemento software. Aunque ya no soy un desarrollador empresarial, administro el sitio web de mi empresa por mi cuenta, y tiene una gran cantidad de software y servicios detrás que automatizan todo.

Quería compartir cómo enfoco el diseño de aplicaciones ahora que tengo una IA increíblemente poderosa al alcance de mi mano.


Una pequeña introducción

Antes de continuar, debemos hablar sobre una falacia que he visto muchas veces influir en las decisiones técnicas y de diseño (y que termina alejándolas de la innovación).

No existe tal cosa como un software perfecto. Cuanto antes te conformes con que sea “suficientemente bueno”, antes estarán contentos usted y sus clientes.

No te embarques en ningún diseño asumiendo que estás construyendo un software perfecto. Incluso si lo diseñaste “perfectamente”, cuando vayas a implementarlo pasarás por varias que lo cambiarán por completo.

Es imposible hacer feliz a todo el mundo. Las personas no necesitan un “software perfecto“. Necesitan algo que resuelva el problema.

Teniendo eso en cuenta, sé que la IA no es perfecta. Tiene sus fallas que de vez en cuando pueden sorprenderme, y eso está bien. Si puedo resolver un problema de una manera nueva e innovadora que sea correcta el 80 % de las veces, me he posicionado para el éxito.

Ahora que tenemos eso fuera del camino, hablemos de algunas de las nuevas posibilidades que tenemos con la disponibilidad cada vez mayor de la IA.


Nuevas posibilidades

ChatGPT y otros servicios de IA generativa tienen impresionantes capacidades seudo-humanas. Preguntas que normalmente tendrías que hacerle a una persona ahora pueden ser respondidas por la IA. Si estás dispuesto a aceptar las respuestas proporcionadas por estos servicios (y eso es un gran SI), abres la puerta a muchas más posibilidades que antes requerían interacción humana.

Transformación de datos

Quería crear publicaciones en redes sociales para mis blogs cuando los publique. Siempre hago esto manualmente, pero si tuviera la oportunidad, lo dejaría totalmente en manos de un asistente virtual. Tengo los datos de mi publicación de blog, pero lo que no tengo son las palabras clave, la estructura y el formato que le gusta a mi público objetivo. Tengo una idea aproximada ya que lo he estado haciendo por un tiempo, pero nunca soy perfecto.

Sin embargo, ChatGPT puede hacerlo. Sabe cómo extraer información de mi publicación y convertirla específicamente para un público objetivo. Tiene información fenomenal sobre los segmentos de mercado y todo lo que necesito hacer para transformar mis datos para un público específico es simplemente preguntar.

“Crear un Tweet sobre mi contenido dirigido a desarrolladores sin servidor que vivan es Estado unidos”.

Si quisiera dirigirme a otra cosa, podría pedir una variante diferente, como “Crea una publicación en LinkedIn en español a partir de mi publicación en el blog dirigida a ingenieros .NET en España”.

La respuesta simplemente se puede insertar en la API de Twitter y enviarla sin problemas.

Generación de datos

Este es probablemente el más obvio que ya conocemos. Dale a ChatGPT un aviso y haz que genere datos, un correo electrónico o un pdf de algo. Pero tiene una gama tan amplia de casos de uso que vale la pena señalar lo obvio.

He escrito sobre cómo construí una aplicación de fitness que genera entrenamientos para mí todos los días. Tengo una función Lambda que decide al azar qué grupo muscular y qué equipo de gimnasio usar ese día, y crea un estímulo para alimentar a ChatGPT. Luego, ChatGPT crea todo el entrenamiento, el calentamiento y la relajación para que yo lo guarde en una base de datos.

Antes de la IA generativa, esta implementación habría sido una pesadilla. Habría necesitado algún tipo de base de datos de ejercicios y formas de modificarlos para diferentes tipos de entrenamientos. Luego habría tenido que idear la lógica que pudiera modificarlos para pseudo-aleatorizar y estructurar los entrenamientos. Habría llevado varias semanas crear algo que no sería tan bueno.

En su lugar, pasé 3 horas y construí un flujo de trabajo de Step Function que consulta ChatGPT y hace todo el trabajo pesado por mí (juego de palabras). Ahorré semanas de tiempo apoyándome en la IA en lugar de construir algo yo mismo.

No se limita a los entrenamientos, podrías generar historias , crear conjuntos de datos simulados completos a partir de un esquema proporcionado o crear recetas con la comida que tienes en tu cocina.

Pero ahora, puedo tener datos significativos generados para mí automáticamente con el aviso correcto. Paso de la “ingeniería de software” a la “ingeniería de prontas”. Ya no necesita estas bases de datos masivas de elementos para alimentar la lógica comercial personalizada. Simplemente pídale a un LLM que use lo que sabe.

Encontrar el momento adecuado

Saber cuándo es el momento adecuado para publicar contenido, reaccionar ante un evento o enviar una notificación es extremadamente difícil. Los tiempos ideales generalmente varían según el caso y rara vez caen en una configuración genérica. Un buen ejemplo sería notificar a los ingenieros de guardia cuando se detecte una anomalía. No desea recibir notificaciones sobre todo lo que aparece, ya que podría generar fatiga de alerta.

Saber cuándo es el momento adecuado para publicar contenido, reaccionar a un evento o enviar una notificación es extremadamente difícil. Los momentos ideales generalmente varían caso por caso y rara vez se ajustan a una configuración genérica. Un buen ejemplo sería notificar a los ingenieros de guardia

Si le pasas rutinariamente un conjunto de datos a la IA, puede identificar anomalías y observar si se estabilizan o incluso razonar por qué ocurrió la anomalía en primer lugar. Puedes proporcionarle a la IA algunas pautas para que solo alerte cuando algo necesite atención si cumple con cierto conjunto de criterios. Esto aumenta la efectividad de tu equipo de guardia y reduce tu costo total de propiedad (TCO) puramente en función del personal.

También puede pasar objetos JSON a ChatGPT y solicitar JSON a cambio. Analicemos otro ejemplo: las notificaciones de los empleados .

Con muchas personas trabajando desde casa en la actualidad, es imposible enviar un mensaje en un momento que funcione para todos de forma genérica. Entonces podrías usar ChatGPT para identificar las tendencias de actividad de un individuo y tener una alta probabilidad estadística de contactarlos en línea. Imagina este historial de auditoría:

[
  {
    "timestamp": "2023-05-26T14:52:21Z",
    "event": "login"
  },
  {
    "timestamp": "2023-05-27T16:40:09Z",
    "event": "logout"
  },
  {
    "timestamp": "2023-05-28T07:55:13Z",
    "event": "login"
  },
  {
    "timestamp": "2023-05-28T19:30:10Z",
    "event": "logout"
  }
  // more audit events
]

Esto da como resultado una respuesta de:

Puede enviar el historial de auditoría a ChatGPT y luego proporcionarle un aviso de:

Devuelva un objeto json con una propiedad "sendAtTime" en formato ISO-8601 que tenga la mayor probabilidad de llegar a la persona la próxima vez que esté en línea.

Esto resulta en una respuesta de:

{ 
  "sendAtTime": "2023-05-29T15:20:55Z" 
}

¡Y no tuviste que construir todo un sistema de notificaciones! Simplemente le pasas un historial de auditoría y le pides a la IA generativa que encuentre el próximo momento en que la persona estará en línea según las tendencias. Es muy rápido construir cosas que antes llevaban semanas de tiempo cuidadoso, planificación y esfuerzo. Ahora puedes construir un flujo de trabajo de función paso a paso que carga el historial de auditoría, llama a una función Lambda para consultar a ChatGPT y luego configura un programador de EventBridge de una sola vez.

Cómo esto cambia el desarrollo

Con todos los ejemplos que vimos antes, se han desbloqueado un conjunto completamente nuevo de casos de uso. Ya no me concentro en construir sistemas mundanos que rastrean operaciones CRUD. Tenemos cientos de ejemplos que hacen eso.

En cambio, ahora abordo el software desde el punto de vista del razonamiento artificial. ¿Qué puedo preguntarle a ChatGPT para que me quite la mayor cantidad de código de las manos? He afirmado varias veces que el código es una responsabilidad. Cualquier oportunidad que tenga de eliminar código, lo hago. Solía hacerlo conectando directamente la Puerta de Enlace de API de ChatGPT a mis aplicaciones en Node.js o Python, pero me he vuelto más inteligente.

Pero ahora, es posible que ni siquiera necesite un punto final para hacer lo que quiero. Las cosas pueden simplemente… suceder.

Me acerco al desarrollo desde una postura de ” qué puedo automatizar, dónde puedo recopilar información y cuándo debo actuar ” cuando se crean los datos. Tomemos mi blog como ejemplo.

Todas mis publicaciones se guardan como archivos Markdown en GitHub. Cuando envío un nuevo artículo a la mainsucursal, se produce una gran cantidad de actividades:

  • Publicar el contenido en otras plataformas de blogs
  • Resumir y recopilar análisis sobre los detalles del artículo.
  • Sintetice una grabación de texto a voz y guárdela de nuevo en el artículo
  • Crear análisis de escritor (nivel de habilidad de escritura, tono, experiencia en el área, temas)
  • Identificar las audiencias objetivo y tangencial en función del contenido
  • Escribir publicaciones en las redes sociales dirigidas a audiencias identificadas que resuman el contenido del artículo.
  • Programe publicaciones en las redes sociales para que salgan en momentos óptimos según el público objetivo

Ahora, algo de esto aún no existe, pero lo hará gracias a la IA generativa. Si observa algunas de las acciones que suceden, ChatGPT básicamente se está convirtiendo en un equipo de marketing automatizado. Identificar a las personas con las que más resonaría una publicación, saber cómo comunicarse con ellos y enviarles mensajes personalizados cuando están en línea son todas tareas de marketing, ¡y difíciles!

Pero debido a la nueva forma en que comencé a abordar el desarrollo de software, todo esto es posible. No estoy investigando “cómo puedo construir un sistema que haga X, Y o Z”, estoy averiguando qué necesito para pedirle a AI que lo haga por mí.

Realmente es un cambio de juego y, considerando todo, una opción muy barata cuando se trata de ROI. Sí, las respuestas no siempre son perfectas, pero estoy de acuerdo con eso. Si soy honesto, nunca es perfecto cuando construyo una solución a mano. Pero aceleré mi tiempo de finalización en 100x, y eso vale cada centavo.

¡Feliz codificación!