Hay dos asignaturas hay en mi carrera llamadas Ingeniería del Software I, y luego claro la II. Te cuentan métodos de desarrollo de software, el ciclo de vida en cascada, el iterativo, el incremental, el de espiral, el prototipado, el RUP, Métrica V3. Te cuentan que cada fase tiene sus implicados, te hacen usar el Project, asignar recursos, truquitos para saber sacar los requisitos al cliente.

Y todo eso está genial, y estoy segura de que en algún lugar del mundo algo se usará, pero a la hora de la verdad, si eres programador en un sitio normalito (como yo, que tan solo es una multinacional con 1200 personas solo en España):

- Te dirán que hay un problema.
- Te dirán que lo estudies (fase de requisitos).
- Y que lo desarrolles (fase de implementación).

Juan Palomo, yo me lo guiso, yo me lo como. Puedes hacer un diseño si el desarrollo no es muy urgente, pero la realidad es que te pondrás a programar directamente y de ahí, irás sacando dudas y metiendo la gamba mil veces hasta dejar algo parecido a lo que querían.

También me ha pasado que te den los requisitos en un papel a mano, en el que te han ido explicando de palabra lo que querían. O que una vez pones en producción un proyecto ya firmado como válido por quien lo pedía, luego te llama para decirte que lo que le has hecho no tiene nada que ver con lo que quería y no le sirve una mierda.

Es como si un albañil se construyera una casa él solo, sin arquitecto, ni planos, ni nada.