"The simplest thing that could possibly work"
Hola a todos, en primer lugar felicitaros por la pagina ya que de momento no es facil encontrar mucha información sobre metodologías ágiles en españa y mas dificil aún encontrar gente interesada y con conocimientos del tema.
Ultimamente he estado leyendo el Extremme programming explained y una de las normas de diseño que proponen los autores de eXtreme Programming es precisamente la frase del titulo del post, dicen que hay que hacer el diseño lo más sencillo posible olvidandose de algo que hacemos casi todos los diseñadores: anticipar problemas futuros. Segun ellos hay que quitarse la costumbre de anticipar problemas y desarrollar el habito de mantener el diseño lo más sencillo posible.
Según ellos no es bueno anticipar problemas porque estamos especulando con problemas o ampliaciones futuras que quizas nunca se presenten, por tanto ese trabajo extra de hacer un diseño con mas posibilidades sera un trabajo en ocasiones desaprovechado. El otro punto importante de esto es que según la metodología XP no se diseña una vez y luego se programa en base a ese diseño, lo que se hace es rediseñar el sistema todos los días refactorizando. De este modo cuando haya que añdir una nueva caracteristica se hara de la forma mas sencilla posible y posteriormente se intentara refactorizar la solucion inicial para mantener el diseño simple.
mas o menos el desarrollo sería algo así.
nueva caracteristica: se implementa de la forma más rapida -> se pasan los test -> se refactoriza para conseguir un diseño más simple -> se pasan los test -> hemos terminado
Segun este modelo de desarrollo la siguiente nueva caracteristica sera facil de añadir porque el diseño siempre es simple, y como el diseño siempre se mantiene lo mas simple posible las refactorizaciones también son simples.
Más o menos esto es lo que dicen segun mi interpretación, yo reconozco tener la tendencia a anticipar problemas y posibles nuevos requisitos y me baso en la norma de: "implementa para hoy, diseña para mañana", de momento me ha ido bien así pero si tengo que reconocer que en ocasiones "se me ha ido la mano" con el diseño y he construido diseños muy complicados para resolver problemas muy simples, y luego las cosas no se han desarrollado como yo preveia y no he reutilizado ese codigo como pensaba, por tanto, en ocasiones es cierto que he perdido el tiempo y complicado en demasia los programas tal como dicen estos señores del XP.
No tengo muy claro si estan en lo cierto o no, por mi experiencia el anticipar problemas me ha servido para ahorrar bastante tiempo en desarrollos que han venido despues, pero claro nunca he intentado hacer lo que proponen estos del XP, como dicen que año nuevo vida nueva este año me voy a intentar plantear seriamente empezar a diseñar de este modo a ver que tal me va, creo que estas cosas hasta que uno no las prueba en sus carnes no sabe si realmente funcionan.
¿Que os parece a vosotros todo esto?,¿aplicais esta norma en vuestros diseños o por el contrario creeis que anticipar problemas en los diseños es positivo?.

