Desarrollar lo justo y necesario es la aplicación práctica del principio YAGNI. En proyectos basados en Java, significa construir funcionalidades con alcance acotado, enfocadas en el valor inmediato y respaldadas por evidencia. Este enfoque reduce la deuda técnica, aumenta la velocidad de entrega y facilita el aprendizaje continuo.
En este capítulo analizamos los beneficios tangibles de trabajar con incrementos mínimos, cómo medirlos y de qué manera sostener la disciplina en el tiempo.
Algunos indicadores útiles cuando el equipo adopta la filosofía de "lo justo y necesario":
Consideremos un servicio que procesa pedidos. La versión minimalista se enfoca en cumplir el caso principal; cuando aparecen nuevas exigencias, se incorporan como módulos independientes.
// Enfoque minimalista: cubrir el flujo actual con el menor número de dependencias
final class PedidoService {
private final PedidoRepository repository;
private final PagoProcessor pagoProcessor;
PedidoService(PedidoRepository repository, PagoProcessor pagoProcessor) {
this.repository = repository;
this.pagoProcessor = pagoProcessor;
}
Pedido procesar(Pedido pedido) {
pagoProcessor.cobrar(pedido);
return repository.guardar(pedido);
}
}
Cuando surge la necesidad de aplicar descuentos especiales, se integra un módulo adicional sin alterar el flujo existente.
// Incremento gradual: módulo agregado cuando existe una necesidad validada
final class PedidoService {
private final PedidoRepository repository;
private final PagoProcessor pagoProcessor;
private final Optional<DescuentoService> descuentoService;
PedidoService(PedidoRepository repository,
PagoProcessor pagoProcessor,
Optional<DescuentoService> descuentoService) {
this.repository = repository;
this.pagoProcessor = pagoProcessor;
this.descuentoService = descuentoService;
}
Pedido procesar(Pedido pedido) {
descuentoService.ifPresent(service -> service.aplicar(pedido));
pagoProcessor.cobrar(pedido);
return repository.guardar(pedido);
}
}
El servicio inicial no se sobrecargó con escenarios hipotéticos; cuando la necesidad apareció, se extendió de forma controlada, manteniendo el principio de desarrollar lo justo y necesario.
Desarrollar lo justo y necesario no es sinónimo de hacer menos, sino de construir con intención. Al enfocarnos en el valor comprobado, mantenemos equipos ágiles, bases de código sanas y negocios capaces de responder a los cambios con rapidez.