Supongo que ha visto muchos memes sobre los gerentes de productos que realizan solicitudes de extracción de 3000 líneas al repositorio de los desarrolladores superiores. Ahora puedes conocer a uno de ellos, ese es yo, sí.
Un poco de historia
Mi viaje de codificación de ambientes comenzó hace un año y medio. Mientras lo queman por obstáculos de inmigración y reasentamiento, y trabajando en mi trabajo bastante sólido, estaba buscando recuperar esa alegría infantil de construir algo solo, no a través de manos de los demás. Al inspirarse en DHH, me encontré en Rails, y como programador junior, comencé con un tutorial de aplicaciones de la lista de tareas, que se convirtió en Toero.App ahora.
El mayor cambio llegó pronto con ChatGPT, lo que me permitió pasar menos tiempo leyendo documentos y más tiempo construyendo la aplicación actual. Period la primera vez que me pareció bastante fácil superar la procrastinación al enfrentar algo nuevo. Antes, no sabía por dónde empezar o qué buscar en Google, pero desde que llegó ChatGPT, comencé a hacer preguntas sobre cómo hacer lo que quería hacer. Las respuestas no eran tan buenas en ese momento, pero aunque escribía la pregunta y obtuve algunas señales de nuestro señor supremo de IA, generalmente encontré la forma de construir lo que quería. Luego se lanzó Sonnet 3.5, y fue entonces cuando realmente desarrollé la mayor parte de la aplicación, porque fue cuando obtuve un programador de pares que period lo suficientemente bueno para trabajar (suponiendo que no creo que soy un muy buen programador).
La IA como una herramienta de golpe de procrastinación definitiva, y la veo así, no como un reemplazo common para mí. Tienes una thought, y este es un momento muy breve mientras tu inspiración vive. Entonces tienes que hacerlo, o la thought muere.
Después de un año y medio, encontré la configuración que me queda bien. Nada lujoso, pero como la gente (no imaginaria) sigue preguntándome al respecto, decidí compartirlo con el mundo.
Tiempos actuales
En primer lugar, uso un conjunto de herramientas muy de vainilla. Hay dos razones para eso:
- La simplicidad es clave para crear con éxito el código mantenible utilizando herramientas AI. Eso es lo principal que he aprendido, y es por eso que muchas personas luchan por usar la IA. Además de la falta de conocimiento de ingeniería, utilizan herramientas sobrecomplicadas que no entienden y dependen únicamente de la IA como fuente de experiencia.
- Pista más larga. Lo difícil que aprendí al ejecutar un negocio de empresa ahora de bancarrota y cerrado es que no tiene que moverse rápido; debe tener suficiente pista para validar sus concepts. No importa si vibra código o no, cuantas más veces pueda tirar los dados, mayores serán las posibilidades de éxito. Los dados dorados o de plástico no importan en el juego actual. Por lo tanto, al ser una persona empleada con una cantidad limitada de dinero que puedo gastar en mis proyectos de pasatiempo, decidí exprimir tanto valor de cada dólar gastado como pueda y optimizar despiadadamente mi presupuesto de funcionamiento, incluso si estamos hablando de $ 10 frente a $ 0.
Infraestructura:
- Hetzner Cloud como proveedor de alojamiento (las instancias de $ 5 por mes funcionan perfectamente y se pueden actualizar cuando comienza a crecer con un par de clics; también tienen un firewall fácil de establecer, por lo que no tiene que aprender Firewalld o Iptables, y copias de seguridad muy simples).
- NetData para monitoreo de {hardware} (tienen un plan HomElab que cubre mis necesidades por $ 5 por instancia, lo que le brinda todas las concepts necesarias sobre su servidor).
- Rabata.io para almacenamiento en la nube S3. Hetzner S3 tiene un cargo mínimo por cubo de $ 5, y Rabata no, mi factura típica ahora cuesta alrededor de $ 1 por mes para el almacenamiento en la nube S3, que es perfecto para proyectos de pasatiempos como el mío y puedo tener tanto balde como quiero. Tampoco me importa cuánto espacio en disco uso, porque literalmente no importa con este precio. Tampoco cobran por las solicitudes realizadas, como lo hacen muchos otros.
- CloudFlare para seguridad y almacenamiento en caché CDN (completamente free of charge).
- Utilicé Hatchbox.io para la implementación ($ 10 por servidor) pero me mudé a Kamal, que es gratuito y más versatile.
- Reinice para el envío de correo electrónico (solo más fácil de usar que Amazon SES).
- OpenRouter para la conexión LLMS.
Como pila técnica, uso:
- Rails 8 con trifecta sólida para todo el código, incluidos los chatbots.
- Rieles turbo y estímulo incorporados. JS para todas mis necesidades front-end.
- Postgres como base de datos.
- Docker (administrado por Kamal).
Mis principales herramientas de codificación:
- Ubuntu + Omakub como OS.
- Alacritty con Zellij como terminal.
- Cursor como el ide principal.
- Micro (porque soy demasiado suave para aprender VIM) como editor terminal.
- Git + GitHub (obviamente) como management de origen.
- Grok para todo el uso de LLM fuera de fianza, desde la investigación y la redacción de textos hasta la generación de imágenes (por ejemplo, Grok me ayudó como editor de este artículo).
Las vibraciones
Después de probar todos los LLM ampliamente disponibles, encontré una mezcla bastante obvia funcionando mejor para mí.
Opus para la planificación de backend y la mitad del desarrollo frontend. Opus es costoso de usar para todas las necesidades de codificación: mi factura del último mes alcanzó $ 500 principalmente debido a que Cursor introdujo su nuevo plan de $ 200, que recomiendo a cualquiera que escriba mucho código. Con el mismo uso que el mes pasado, no he repasado el nivel incluido en el nuevo plan de $ 200. Utilizo Opus principalmente para planificar funciones de backend y indicaciones para escribir para soneto.
Soneto para la codificación diaria de la mayor parte del backend y la mitad del código frontend. Opus Good en diseños genéricos y escribe buenos textos, por lo que dividí el trabajo frontal entre Opus y Sonnet basado en el diseño y la complejidad del contenido del front-end.
Aquí está el ejemplo de mis .cursorrules que uso para cada conversación.
Aquí está el ejemplo de mis variaciones rápidas de planificación de las que uso cuando necesito Claude Opus para crear un conjunto de tareas para Sonnet.
Descubrí que los LLM escriben buenas indicaciones para LLMS, por lo que no tengo ninguna indicación específica. Cuando tengo que desarrollar algo complicado, le pido a Opus que genere un aviso y lo escriba a los archivos de Markdown si la función requiere varios pasos, y entiendo que es mejor dividirlo en varios chats debido a la degradación de la calidad de salida de los LLM con un contexto creciente.
A diferencia de las propias recomendaciones del equipo del cursor, no pude encontrar O3 útil para la planificación. En mis tareas y con mis patrones de uso, descubrí que O3 es en su mayoría inútil para mí, pero muchos de mis amigos están contentos con eso. Puede intentarlo usar O3 en lugar de Opus para la escritura rápida y la planificación de funciones.
¿Por qué no el código Claude?
He escuchado muchos aspectos positivos sobre Claude Code, pero nunca lo probé yo mismo, porque todavía necesitaré un IDE para la edición de código, y me gusta el cursor. Pagar el código de cursor y Claude a $ 400/mes es un poco exagerado para mí. Además, me gusta el equipo de cursor después de ver su entrevista con Lex Fridman (la mejor entrevista del equipo de IA que he escuchado entre todos los que hizo), y quiero que tengan éxito.
Más consejos genéricos que nadie pidió, según mi experiencia limitada.
Debe comprender el código que genera el LLM. Así que use solo lenguajes de programación y marcos con los que esté familiarizado. Es tentador agregar varias herramientas elegantes, mientras que el LLM puede usarlas enormemente, pero luego escribirá una publicación más de Twitter sobre la codificación de vibraciones que no funcionan para usted.
Continúe bien de cómo funciona su pila tecnológica, para que pueda hacer cosas simples sin LLM. Si trabaja en una aplicación net, debería poder crear un sitio net e implementarlo en un servidor net autohospedado sin ayuda de la LLM (sin embargo, puede aprenderlo con un LLM y luego tratar de darlo por ti mismo). Si hace una aplicación móvil, el mismo enfoque: debe poder crear una aplicación easy sin ayuda de la LLM para poder aprovechar la IA para usted.
Si sabe cómo hacer algo, hágalo usted mismo y use el LLM como programador de pares. Si te cuesta comenzar, comienza con el LLM. Como dije antes, para mí, AI es el mejor batidor de dilación: cuando no sé por dónde empezar, enciendo el agente de cursor para que lo haga por mí, y luego, después de algunas iteraciones, entenderé qué y cómo quiero construir.
LLMS intenta traer muchas bibliotecas de terceros a su proyecto solo porque alguien en Reddit las mencionó hace tres años. Las bibliotecas pueden estar desactualizadas e indescriptibles desde entonces, por lo que cuando sucede, detenga la generación de respuestas y pregunte por qué la necesitamos y cuál es la “Tecnología Uncooked X Various”. Cuanto menos código tenga, menos bibliotecas de terceros, menos contexto que los LLM deben procesar, más inteligentes serán las respuestas.
Futuro
Comencé mi viaje de codificación nuevamente después de una ausencia de 10 años del desarrollo, haber sido gerente y fundador, como una forma de superar mi ansiedad y volver técnicamente competente nuevamente. AI es útil para ayudarme a volver a la pista. Planeo codificar cualquier thought loca que tengo en mi mente y obtener lo más posible de esto. Y la experiencia de construcción práctica me ayuda a ser un mejor gerente y comprender mejor los desafíos técnicos que conoce mi equipo. Entonces, no importa si mis proyectos tienen éxito o fallan, lo hago por el bien de la artesanía y mejorando mis habilidades con la IA que puedo usar en mi trabajo principal y mejorar. Por lo tanto, recomendaría a cualquier gerente que comience a jugar en su tiempo libre, no para convertirse en una startup codificada por ambientes de miles de millones de dólares hechos a sí mismo, sino como la mejor manera de montar la ola de la Revolución AI.
Sobre el autor
Ivan Kuznetsov, ex Fullstack Dev, ex ejecutivo de FinTech, fundador fallido de inicio, ahora gerente de productos, codificación de ambientes y entusiastas de ROR.