Aplicación demasiado entusiasta de YAGNI (que se denomina Diseño por enumeración en trampas del desarrollo orientado a objetos ) en un entorno donde cualquier persona sensata podría decir que los requisitos definitivamente iban a cambiar. Y cambia repetidamente.
Si ha codificado todo exactamente con los requisitos actuales, mientras golpea a cualquiera que diga "¿no podría ser esto más genérico?" con su mazo YAGNI, y luego los requisitos cambian drásticamente (pero de una manera que podría haberse anticipado razonablemente), entonces esa puede ser la diferencia entre tomar 2 semanas para adaptarse, o tomar 20 minutos.
ACTUALIZACIÓN: Para aclarar, aquí hay un ejemplo ficticio que no está muy lejos de lo que sucedió. Stack Overflow fue diseñado para admitir insignias, pero supongamos que al principio solo puedan pensar en cuatro insignias. Solo cuatro, un número tan pequeño, por lo que codificaron el soporte para exactamente cuatro insignias en toda la lógica del sitio. En la base de datos, en la información del usuario, en todo el código de visualización. Porque "Ya no necesitarás" ninguna insignia en la que no puedas pensar, ¿verdad? Supongamos que el sitio se activa y la gente comienza a sugerir nuevas insignias. Cada insigniatoma hasta dos semanas para agregar, porque hay mucho hardcoding para ajustar por todas partes. Pero aún así, "Ya no necesitarás" más insignias que la lista de hoy, por lo que nunca hay una refactorización para admitir una colección genérica de insignias. ¿Una colección tan genérica hubiera tomado más tiempo por adelantado? No mucho, si alguno.
YAGNI es un principio valioso, pero no debe (ab) usarse para excusar un diseño deficiente y una codificación inadecuada. Hay un equilibrio, y con experiencia, creo que me estoy acercando.