Javier señala que los requisitos cambiantes son un hecho difícil de la vida. Yo también me siento frustrado por estas situaciones ya que con demasiada frecuencia me encuentro trabajando en un producto en el que el desarrollador tiene que tomar decisiones. Mi opinión solía ser "¿Por qué la gerencia no puede resolver esto con el cliente?" O "¿Por qué comenzamos este proyecto si el cliente no sabe lo que quería?", "Es mucho dolor de cabeza cuando cambian tanto tarde en el desarrollo ".
Hecho simple: esto siempre sucederá, no solo en la programación / desarrollo de software sino en todos los ámbitos de la vida. El mundo sería simplemente un lugar muy aburrido y muy diferente si las personas nunca cambiaran de opinión, nunca se adaptaran, nunca abordaran el cambio. Las personas tienden a mirar lo que reciben y a mejorarlo. ¿No haces lo mismo con tu código? Si tengo un bloque de código con el que no estoy satisfecho (es ineficiente, desordenado), lo mejoraré. (¿El sistema operativo se queja de mí? ... a veces, si estoy usando un determinado sistema operativo sin nombre, pero generalmente no)
Como programadores, necesitamos aprovechar las oportunidades para mejorar las cosas, y no deprimirnos ni molestarnos por ellos. Aproveche la oportunidad de hablar con la gente, mejorar su estilo, mejorar su ética de trabajo, abordar las cosas con una mente abierta, esforzarse por ser mejor de lo que era ayer. Avanza en tu carrera y no te conformes fácilmente.
Entiendo que no todos estarán de acuerdo con esta respuesta, pero creo que es importante que las respuestas a esta pregunta cubran una perspectiva más amplia.