Profile image

Matias Chomicki

/dev/

Somewhere, Planet Earth

Experienced software engineer, passionate about creating and improving products, solving complex problems, and using code to build a better world for everyone. Currently working in observability at Grafana Labs, focused on the Logs Drilldown app for Loki, and the logs visualization experience across Grafana.

Por qué

¿Por qué creé este proyecto? Es una buena pregunta, que yo mismo la hago de vez en cuando, y tiene una respuesta relativamente interesante para elaborar, porque son muchos los motivos detrás de esto y otras cosas que hago a diario.

El primer motivo es por satisfacer el deseo de crear. Toda mi vida me ha acompañado una pulsión muy grande por crear. Pulsión porque es más que un deseo; no es solamente una idea que tengo ganas de llevar a cabo, sino un ardor por materializar, aunque sea digitalmente, cosas. A esta pulsión la pude satisfacer esporádicamente en distintos puntos de mi vida, pero ya en mi etapa adulta permaneció suprimida por casi una década y media, por distintos motivos que no valen la pena mencionar, por lo menos en esta publicación.

Y el segundo motivo, ya más cercano a la naturaleza de Jomie, es porque quería un sitio web para representar mi identidad digital, que no fuese una red social, y no lograba dar con una herramienta que tenga las características que buscaba. Quería algo sencillo, sin plugins ni interminables opciones de personalización; pero tampoco algo tan sencillo que es simplemente una colección de botones a redes sociales; y finalmente algo visualmente agradable, y orientado a los contenidos más comunes que uno necesita para materializar tu identidad digital en Internet: una introducción, tus links, algunas fotos, y eventualmente un listado de publicaciones.

Con esa inquietud fue que me acerqué a mi compañero en esta aventura, Ezequiel Salatino, para que como hicimos tantas veces desde el 2009 él pusiera la parte gráfica y yo la tecnológica para materializar esto.

Este proyecto es la materialización de muchas cosas que son parte de mí, puestas al servicio de una idea, que espero que pueda servirle también a otras personas. Queda todavía mucho por hacer, pero ya dimos el paso más difícil y el más importante, que suele ser el primero.

Ser humano

Desde hace mucho tiempo ya que veo gente intentando escaparle al dolor de la experiencia de ser humano, primero con promesas de resultados rápidos, y ahora reemplazándose con inteligencia artificial. Pero este dolor es una parte fundamental de ser una persona, ¡y está bien!

Ser humano es profundamente difícil, hasta ridículamente difícil en algunos casos. Vivir en sociedad y conectar con otras personas también lo es. Aprender cosas nuevas, desarrollar aptitudes, hasta mejorar físicamente es profundamente desafiante. ¿Y cuál sería el sentido de vivir si no fuese así?

En el momento en que dejás de buscar las palabras para expresarle tus ideas a otros, en reemplazo por una máquina, estás usando un atajo que te alivia este dolor de ser humano por unos minutos, pero que no solo no lo elimina, sino que en ese proceso te empequeñeces y te vaciás.

Este dolor es parte de ser humano, como también lo es la alegría de, con tus propios medios, encontrándole el camino y la vuelta, superarlo y crecer.

Mi proceso de desarrollo de software utilizando IA

Mi proceso de desarrollo de software utilizando IA

Siempre voy a recordar al 2026, ya desde el comienzo, como una montaña rusa de emociones, caracterizado principalmente por el impacto y la penetración de lo que coloquialmente llamamos Inteligencia Artificial en la vida profesional y cotidiana. 2026 también es el año donde oficialmente comienzo a utilizar de manera más profunda a los modelos de programación para generar código.

Hasta este punto utilizaba LLMs pero de manera más complementaria, ya sea para responder dudas o consultas, para generar pequeños snippets de código, o ya sobre el final para automatizar casi completamente la generación o actualización de unit tests. Aplicaciones que hasta ese momento me resultaban útiles y productiva, y colaboraban con mi objetivo de producir más ágilmente implementaciones a la altura de lo esperado, por no caer en el lugar común de categorizarlo como "de calidad".

Sin entrar en opiniones que prefiero reservar para un entorno más íntimo, o menos público, mi posición inmediata desde el lanzamiento masivo de las LLMs allá por el 2023 ha sido de incertidumbre y precaución. No porque no me entusiasme la tecnología (aunque en algún momento me gustaría compartir mis pensamientos sobre los "entusiastas de la tecnología"), ya que siempre he estado atento a cualquier salto tecnológico como fue React en su momento, sino porque había algo que no olía bien. Y como todo ávido lector de Tolkien, tengo siempre presente la importancia de estar atento al olfato.

Esto que no olía bien no era ningún prejuicio, sino justamente mi conclusión después de interactuar con los modelos, evaluar lo producido, complementado por observar a los demás interactuar con esta tecnología y por escuchar las promesas y proyecciones de sus promotores. Todo esto subrayado también por la importancia que le doy al cuidado de mis propias facultades cognitivas.

Saltándome unos cuántos capítulos y haciendo fastforward al momento de escribir este post, dejando atrás el tal vez demasiado extenso preámbulo, el principal motivo que me inspira a escribir este post es porque recientemente me he encontrado con un punto de inflexión, donde la generación de código atravesó esta contención inicial y entró más de lleno en el código de producción.

¿Qué es lo que cambió? Seguramente yo cambié, que es probablemente una obviedad y también una constante, pero principalmente empecé a notar que el código generado parecía finalmente más correcto, menos alucinatorio, o en general más apropiado, bastante más cercano a lo que haría yo. Y eso es innegablemente útil.

Otra tangente que Siempre voy a recordar al 2026, ya desde el comienzo, como una montaña rusa de emociones, caracterizado principalmente por el impacto y la penetración de lo que coloquialmente llamamos Inteligencia Artificial en la vida profesional y cotidiana. 2026 también es el año donde oficialmente comienzo a utilizar de manera más profunda a los modelos de programación para generar código.

Hasta este punto utilizaba LLMs pero de manera más complementaria, ya sea para responder dudas o consultas, para generar pequeños snippets de código, o ya sobre el final para automatizar casi completamente la generación o actualización de unit tests. Aplicaciones que hasta ese momento me resultaban útiles y productiva, y colaboraban con mi objetivo de producir más ágilmente implementaciones a la altura de lo esperado, por no caer en el lugar común de categorizarlo como "de calidad".

Sin entrar en opiniones que prefiero reservar para un entorno más íntimo, o menos público, mi posición inmediata desde el lanzamiento masivo de las LLMs allá por el 2023 ha sido de incertidumbre y precaución. No porque no me entusiasme la tecnología (aunque en algún momento me gustaría compartir mis pensamientos sobre los "entusiastas de la tecnología"), ya que siempre he estado atento a cualquier salto tecnológico como fue React en su momento, sino porque había algo que no olía bien. Y como todo ávido lector de Tolkien, tengo siempre presente la importancia de estar atento al olfato.

Esto que no olía bien no era ningún prejuicio, sino justamente mi conclusión después de interactuar con los modelos, evaluar lo producido, complementado por observar a los demás interactuar con esta tecnología y por escuchar las promesas y proyecciones de sus promotores. Todo esto subrayado también por la importancia que le doy al cuidado de mis propias facultades cognitivas.

Saltándome unos cuántos capítulos y haciendo fastforward al momento de escribir este post, dejando atrás el tal vez demasiado extenso preámbulo, el principal motivo que me inspira a escribir este post es porque recientemente me he encontrado con un punto de inflexión, donde la generación de código atravesó esta contención inicial y entró más de lleno en el código de producción.

¿Qué es lo que cambió? Seguramente yo cambié, que es probablemente una obviedad y también una constante, pero principalmente empecé a notar que el código generado parecía finalmente más correcto, menos alucinatorio, o en general más apropiado, bastante más cercano a lo que haría yo. Y eso es innegablemente útil.

Y abro otra tangente sobre otro de los temas relacionados con las LLMs que siempre me generaron incomodidad, o mal tufo: el énfasis en la velocidad. Siendo el código generado algo que sigo evaluando como posiblemente incorrecto y con riesgo de alucinación, el rol del humano en el proceso me parece más importante que nunca. Es por eso que nunca encontré particularmente atractiva la idea de "gestionar enjambres de agentes" y dejar que la cosa se haga sola. ¿Para qué? Porque de la única forma que me parece factible tener instancias sobre instancias de agentes generando código es si no tenés planeado revisar mínimamente lo producido. Y con revisar no me refiero a escribir tests o cualquier otro tipo de artefacto de aceptación, sino esa sensación, o evaluación, de que lo producido mueve el sistema, la implementación, en la dirección deseada y sin regresiones de cualquier tipo. Además de encontrar particularmente agotadora la tarea de revisar y evaluar código generado, donde un pequeño prompt de pronto genera una explosión de líneas de código.

Como comento en esta charla https://www.youtube.com/watch?v=qDSKasyhxdQ que dí hace unos meses, al igual que un libro es más que un conjunto de letras, un programa es mucho más que líneas de código: tiene un contexto, un hilo conductor, un argumento. Y si yo no controlo este argumento, si no soy parte tanto de su escritura como de su actuación, no estoy desarrollando software. Al menos según mi visión personal.

Entonces, ¿cómo utilizo estas herramientas?

Fantaseando en mi imaginación con este post, pensaba en mi día a día como una especie de nuevo proceso incremental de desarrollo de software donde la LLMs ocupaba un punto en esta espiral, y donde cada ciclo termina como un commit. Algo así como:

- Análisis: pensar sobre el problema, evaluar la implementación actual. - Diseño: prompt. - Generación: LLM - Validación: leer el diff y o volver atrás a la fase de diseño o ajustarlo manualmente. - Commit. - Repetir las veces que sea necesario.

Algo así, pero también varía según la tarea específica o el resultado obtenido. A veces veo lo generado, me da una idea general, y luego lo hago a mano. Otras veces lo generado puede hacerse mejor o de una manera más inteligente, y en vez de continuar gastando tokens lo implemento yo.

Una constante en este proceso es que continúo siendo una pieza fundamental, no solo pensando sobre lo que hay que hacer, sino también participando activamente de la generación de código. Y, por supuesto, continúo generando implementaciones que no solo disfruto hacer, sino que están a la altura de lo que yo espero, y lo que se espera de mí, ahora un poco o bastante más rápido.

Para mí, el énfasis del desarrollo de software (y de tantas otras cosas) nunca fue la velocidad, sino la eficacia. No solo por mi compromiso personal y profesional con la profesión, y mi amor personal por el código, sino porque (como he repetido ya varias veces en muchos ámbitos) este código tiene muchos usuarios, y mi misión y compromiso es con ellos. Estos usuarios son:

- El equipo, incluyéndome a mí y a cualquiera que lo tenga que mantener en el futuro. - La organización. - El usuario final.

Este es más o menos en snapshot al momento de escribir este post, y muy probablemente cambie, pero lejos estoy de poder predecir cómo. Si hay algo que he observado de todo este proceso es que cualquier tipo de futurología que cualquiera intente hacer va a estar equivocada.