To me, the key factor in successful software projects is people interacting with other people. All software-development systems that encourage people to work in isolation fail, IME. I don't care how much AI you introduce. If that introduction causes people to stop interacting with one another, you will fail. It's that simple.
My first rule of testing is: don't change the tests.
To be more precise—write the tests in such a way that they don't have to change.
When you refactor, you test to make sure the code behaves as expected, change the code, then run the test again to make sure you haven't broken anything. If your tests change when the code changes, you cannot refactor safely. If the test doesn't exist, you have to write one before you start. In an AI world, every AI-induced change is a refactor, and often massive multi-unit refactoring is going on. No tests? No safety. Even with TDD, you add tests as the code evolves, but you don't change existing ones.
Among other things, this means you cannot safely test the minutiae of the implementation, because it changes constantly. Test behavior instead. "When I ask a component to do X, I expect it to do Y" ("Gherkin" format). The "unit" must conform to the Liskov Substitution Principle: clients don't care about even radical changes, provided that the interface (in the general sense, not the Java &c. sense) hasn't changed. In a microservice, that radical change could be a complete rewrite in a different language running on a different platform. The arguments to a method are its interface, for example, as are the APIs or messaging interface to a remote service or the set of public methods of a class, whether or not there's a formal "interface" involved.
Of course, that brings up the issue of what if the interface _does_ change?
In general, I find that constant changes to interfaces usually imply ad hoc programming, where nobody thinks things through before writing the code. People throw whatever pops into their heads out there and hope for the best, just like an AI does. The programmers are constantly surprised as they work, and are constantly rewriting to handle those surprises. That's coding without architectural thinking. Code like that is insanely difficult to test.
So, what's the alternative? Think about Domain-Driven Design. In DDD, every component, from single methods up to aggregate subsystems, models something in the actual domain. The name is a name you'll find in the domain. The messages and interfaces reflect a conversation that people would have if they were doing the work manually. The domain tends not to change, so interfaces that model the domain tend not to change. Note that this approach does not require a big-up-front design. The domain IS the architecture, so you can implement that architecture one piece at a time, and the domain itself guarantees architectural coherence.
More to the point, this is something you can test.
Ana Karina Fernándes y sus 2 hijos fueron declarados como fallecidos. La familia me cuenta que cerraron el área. Están en Sol Marino Garden 3. Les parece injusto que sin hallar los cuerpos se llegue a esta conclusión. Sus padres y su esposo piden que al menos les permitan recuperar los cuerpos.
Hay demasiadas familias con esta misma súplica.
Familias enteras desaparecidas.
Quienes los esperan,
desesperados.
¿Y si están vivos?.
Sus seres queridos no se resignan.
0412-9574772 José Luis Fernándes es el contacto de esta familia.
@Mauriciocruz__ Hay más gente en el Sol Marino Garden II. Ayer los perros no encontraron nada. Hoy escucharon una voz. Por favor, exploren otras zonas del edificio. Sabemos que está estructuralmente comprometido, pero hay 7 niños en todo el edificio.
Hola, sé que suena repetitivo. Pero en el Edf. Sol Marino Garden II no hay ningún grupo de rescate, ni nacional ni internacional. Allí existe la posibilidad de conseguir, aún con vida, a 7 niños y, por qué no, a 7 adultos ¡Ayuda!
@AlexaGomezDos@jaimebelloleon@dereckblanco
Cada vez agradezco más estos artículos escritos desde el sentido común y el conocimiento del sector.
"La incómoda verdad sobre el vibe coding"
¿Estamos construyendo software o castillos de arena digitales?
Desde su aparición cada vez se habla más del vibe coding. Esa práctica de "programar por sensaciones", describiendo lo que quieres en lenguaje natural y dejando que la IA haga la magia. Y, para qué engañarnos, funciona. He visto (y creado) prototipos en un fin de semana que antes llevaban meses.
Pero hay una realidad incómoda que el hype no te cuenta: el vibe coding no escala.
Hay un patrón que se repite: a los tres meses, el proyecto choca contra un muro. Cambias un botón y se rompe el login. Le pides a la IA que lo arregle y rompe tres cosas más.
¿Por qué pasa esto?
Porque construir sin especificaciones hace que la intención se pierda. El código generado se convierte en la única fuente de verdad, y la IA (con su ventana de contexto limitada) deja de entender el "porqué" de las decisiones.
La solución no es dejar de usar IA, es usarla con criterio:
1️⃣ Spec-Driven Development: Deja de tratar tus prompts como notas de usar y tirar. Tus especificaciones deben ser la fuente de verdad al que el código tiene que obedecer. Si algo falla, no parches el código: refina la spec y regenera.
2️⃣ La técnica sigue importando: La IA baja la barrera de entrada, pero no elimina la necesidad de saber arquitectura, dependencias y buenas prácticas. Una especificación escrita por alguien que no entiende esto lo que hace es escribir una carta a los Reyes Magos.
3️⃣ Vibe para explorar, Spec para construir: El vibe coding mola para prototipar rápido o para tareas minúsculas a nivel de unidad. Pero para sistemas que deben mantenerse y durar, necesitas guardarraíles.
La magia no está en las "vibraciones", está en saber exactamente qué quieres y expresarlo con tanta claridad que ni una IA pueda malinterpretarlo. Fin 😁
¿En el futuro los repositorios serán Specs en lugar de código?
OpenAI ha lanzado un repo llamado Symphony. El concepto en sí ya es interesante:
Un proceso de trabajo en el que la principal labor del "programador" es añadir issues en Linear o GitHub, y hay un agente que automáticamente lo toma y hace la implementación, con una serie de flujos en el proceso.
Lo que me ha parecido más loco de este repositorio es que, para usarlo, no te dicen que bajes el código, sino 𝗾𝘂𝗲 𝗹𝗲 𝗽𝗮𝘀𝗲𝘀 𝗹𝗮 𝘀𝗽𝗲𝗰 𝗮 𝘁𝘂 𝗮𝗴𝗲𝗻𝘁𝗲 y que lo implemente para el lenguaje concreto que uses.
Me ha explotado un poco la cabeza. ¿Créeis que vamos en esa dirección?
https://t.co/quNo9WPKlB
El Profesor Donald Knuth (el tipo que escribió la biblia de las ciencias de la computación) abrió su nuevo paper con "¡Impactante! ¡Impactante!"
Claude Opus 4.6 acababa de resolver un problema abierto en el que llevaba semanas trabajando — una conjetura de descomposición de grafos de The Art of Computer Programming.
Nombró el paper "Claude's Cycles."
31 exploraciones. ~1 hora.
Knuth leyó el output, escribió la prueba formal y cerró con: "Parece que tendré que revisar mis opiniones sobre la IA generativa en algún momento"
El hombre que escribió la biblia de las ciencias de la computación acaba de decir eso. En un paper que lleva el nombre de una IA, entienden lo grande que es esto?
Ayer estábamos en la llamada de demo week y un stakeholder dio feedback en el chat; copié el chat a Claude Code, ya esta listo, de hecho salgo de unas reuniones y subo el PR.
Este stakeholder tiene al menos 3 meses pidiendo eso y nunca "había espacio en el sprint".
Y el próximo paso es que el feedback lo agarre el agente desde un backlog para agentes.
Eso viene.
La IA no está reemplazando devs.
Está reemplazando a los que necesitan 3 Sprints para sentirse importantes y mandar algo a prod.
La industria ha cambiado más rápido de lo que esperábamos, y si eres de los que para todo dicen "es que clean code..." ya tienes un pie fuera.
@silvercorp Si de acuerdo, si necesitas tres sprints para deploy hay algo mal. También si vas muy rápido por la IA y todo se rompe por no tener buena configuración de código, tests e integración, también hay algo mal.
La IA está remplazando a los deva que usan IA sin tener buenas bases
Así vamos:
Jack Dorsey ha sido muchas cosas a lo largo de su carrera: pionero de las redes sociales, apóstol temprano de las criptomonedas y figura clave en la disrupción financiera. Hoy asume otro rol: el de verdugo de la IA. Ayer anunció que recortará 40% de la nómina de su fintech, Block, lo que se traduce en unas 4.000 personas menos en la organización.
¿La razón de fondo? La irrupción de la inteligencia artificial. En una carta a los accionistas lo resumió con crudeza: la tesis central es que las nuevas herramientas de inteligencia han cambiado el significado mismo de crear y gestionar una empresa.
Comunicado de Jack Dorsey al despedir al 40% de su plantilla.
“No tomamos esta decisión porque estemos en problemas. Nuestro negocio es sólido. Las ganancias brutas siguen creciendo, seguimos atendiendo a más y más clientes y la rentabilidad está mejorando. Pero algo ha cambiado. Ya estamos viendo que las herramientas de inteligencia que estamos creando y usando, junto con equipos más pequeños y planos, están permitiendo una nueva forma de trabajar que cambia fundamentalmente lo que significa construir y dirigir una empresa. Y eso se está acelerando rápidamente.”
📁 Boris Cherny, ingeniero en Anthropic, dice que el 100% de su código lo escribe Claude.
Publica entre 10 y 30 cambios al día y no ha editado una sola línea a mano en meses.
Claude lo escribe. Claude lo revisa.
Los humanos siguen supervisando, pero ya no son quienes teclean.