Hablamos de desarrollo de software, y de cualquier cosa que venga a cuento de eso.
Un poco en joda, un poco en serio, depende el humor del día.

lunes, 20 de octubre de 2008

Estimaciones y responsabilidad.

Me han quedado dando vueltas por el fin de semana las cuestiones que planteaba en el último artículo, Estimaciones y compromisos.

Por un lado lo he charlado un rato con los colegas del trabajo. También se lo he referido a Yuki en su blog De consultor a Director de TI. Pueden ver su respuesta en los comentarios de esta entrada.

Quisiera desarrollar el tema de la responsabilidad, que surge de la transformación de la estimación en un compromiso, situación comentada en La masa, el ladrillo, la bota, el bocadillo... de la siguiente manera:

Generalmente cuando recibimos estimaciones es porque nos encontramos en una situación de autoridad dentro del proyecto y nunca debemos olvidar que la autoridad conlleva responsabilidad. Somos responsables de cómo tratamos estas estimaciones. Y la máxima es clara: No conviertas las estimaciones que recibes en compromisos.

Desarrollando esa idea, desde el punto de vista de los desarrolladores que elaboran esas estimaciones, había escrito:

¿Somos responsables del error? Del error de asumir el compromiso en ciertos términos, quiero decir. No digo del error de estimación, ya que no considero que la estimación sea errónea (¿lo es?). Por más desviada que esté, ese desvío refleja nuestro desconocimiento al momento de hacerla. Creo que no es lo mismo que un error (que sí sería uno de cálculo por ejemplo).

El hecho de si una estimación fallida es un "error" o no es una cuestión casi teórico-filosófica. El hecho es que el proyecto se encuentra desviado respecto de ella, y punto.

En las causas del desvío pueden converger un sinfín de factores. Tiendo a pensar ahora que el de más peso es la falta de experiencia. Estamos estimando, y obviamente no tenemos información completa. De todas maneras, toda información está referida al pasado, a un contexto diferente y en situaciones que no tienen garantía de repetirse. Pretender lo contrario sería requerir una bola de cristal.

Estimamos entonces utilizando nuestra experiencia. Y ponemos en juego nuestra habilidad para extrapolar esas situaciones al futuro, reconociendo similitudes y diferencias y tratando de asignarles un valor en horas.

¿Y si no tenemos experiencia? Bueno, por algún lado se empieza. Prueba y error, y probablemente al principio sean todos errores.

Ahora, el tema de la responsabilidad. En un proyecto cerrado hay que comprometer una fecha con el cliente. Esto es inevitable y razonable, son las reglas del juego. Es un compromiso que no puede eludirse.

Entonces, ante las preguntas que había planteado:

¿Nos hacemos cargo del compromiso asumido, dado que no hemos sido nosotros quienes lo hemos hecho? ¿Cómo? ¿Trabajamos más horas? ¿Aceptamos hacerlo gratis? ¿Hasta qué punto?

Creo que la primera respuesta es . Nos hacemos cargo del compromiso, porque no podemos pretender que ignorábamos las reglas del juego al momento de estimar. El tema es cómo.

Tenemos la responsabilidad de llegar a determinada fecha. Y de ser imposible, tenemos la responsabilidad de avisar apenas seamos conscientes de este hecho. Responsabilidad no implica hacer lo imposible, sino hacer todo lo posible.

¿Y qué es "todo lo posible"? Ahí está el punto. Sólo cada uno de nosotros sabe qué es lo que está dispuesto a dar. "Todo lo posible" es, en lo material, muy diferente para un joven recién egresado (digamos que vive solo y sin muchos compromisos familiares) y para una persona casada y con hijos (sobre todo) que siente una responsabilidad "de estar presente" mucho mayor para con ellos. Es, en todo caso, un tema personal.

Lo que no es personal es el compromiso para con el equipo. Que se traduce en dejar en claro de qué manera y bajo qué condiciones estamos disponibles. Se trata de volvernos previsibles, de dar predictibilidad al proyecto, de dar toda la información (incluso aquélla que nos deja en una situación incierta) que tenemos disponible para que los responsables formales puedan tomar una decisión.

Se trata, en definitiva, de ayudar a tomar una decisión con respecto al camino a seguir de forma que podamos estar de acuerdo con ella y apoyarla. Y si no podemos estar de acuerdo y acompañar, se trata de explicitarlo y asumir las consecuencias.

Es, por otro lado, no ceder ante la presión aceptando de palabra una situación que luego, en los hechos, no toleraríamos. Hacerlo sería mentir, engañar. Me imagino, por ejemplo, el clásico lugar común en el que un integrante del equipo "dice que sí a todo" y mientras se busca otro trabajo (pura imaginación, aclaro, es sólo un ejemplo). Esto último sí me parece moralmente reprochable. Es planear "con premeditación y alevosía" bajarse del proyecto mientras se lo envía con rumbo desconocido.

En resumen, ¿cuál es nuestra responsabilidad ante un desvío, error o como se llame en la estimación? Avisar y ser abiertos y sinceros al momento de buscar los caminos de acción posibles, dar información confiable. Creo que es un compromiso más razonable que el aceptar trabajar 15 horas al día sólo para decir, cuando todo se vaya al diablo, "yo hice todo lo posible".

Bookmark on Delicious Twit this votar Compartir en Facebook Suscríbete al feed Menéalo