Hace eones construíamos una aplicación para una administración pública en la que el arquitecto software no se decidía nunca por ningún diseño para la aplicación. Y si múltiples usuarios se conectan a la vez? Y si se vende a otras administraciones y se multiplican los accesos? Mejor añadir más colas de mensajes, y throttling, y límites por cuenta, y…
Nada era nunca suficiente y la aplicación no se empezaba a desarrollar. La realidad es que el servicio solo tenía tres técnicos en Las Palmas. Quizás otros dos o tres más en Tenerife. Aunque todas las comunidades autónomas del país migraran a nuestro sistema, probablemente tendríamos menos de 170 posibles usuarios en total. Cuántos podrían estar conectados a la vez a las 9:35 de la mañana o a las 12:51? Cinco, diez?
Parálisis por análisis lo llaman. A veces los ingenieros software usamos la tecnología como excusa para no tomar decisiones, para no poner el cuchillo entre los dientes y empezar a programar. Era más importante que nunca evitar la complejidad innecesaria, la over-engineering, o aplicar el principio YAGNI (You Aren’t Gonna Need it).
Por más vueltas que les des no vas a evitar al 100% la posibilidad de cometer un error. Nunca. Siempre podrás mejorar el diseño 2 años después de haber propuesto el primer diseño. Y otros 2 años más tarde también pensarás que la nueva propuesta era aún bastante mejorable. Y así indefinidamente.
Haz un borrador, pruébalo, mejóralo luego y vuelve a probar. Todo diseño se basará en trade-offs. Todos son una apuesta. Si solo piensas en las desventajas, nunca aprovecharás ninguna ventaja.
