8.25.2008

planificación inconsciente en desarrollo de software

Estoy leyendo el libro "práctica de la inteligencia emocional", una referencia según la gente que parece que sabe del tema. En uno de los capítulos hacen referencia a la toma de decisiones, como actúan las diferentes partes del cerebro, como se reaciona en diversas situaciones (estrés, tranquilidad, etc) y en qué forma las tomamos. En resumen habla de dos formas, una de ellas meditada y consciente y otra de ellas inconsciente.

La primera de ellas viene a ser las decisiones en las que razonamos en base a lo que vemos y la segunda es en base a un tick, al sexto sentido o como lo quiera que se llame. Cuantas veces me ha pasado que "algo" me decía que no debía hacer algo, finalmente lo hice razonando la decisión y al final la mangué. El libro da explicación a esto: el cerebro, subconcientemente, es capaz de dar resultados a tomas de decisiones muy rápidamente en base a la experiencia vivida anteriormente.

Actualmente estoy dentro de una implantación de CMM2, en la cual me han indicado que tenía que dar una serie de patrones para esblecer el tamaño y complejidad de una tarea dentro del proyecto del que soy responsable (en realidad soy juez y parte :P), de esta forma, gracias a estas medidas y la experiencia acumulada a lo largo del tiempo en diferentes tareas se pueda extrapolar el tiempo en una futura tarea.

Realmente esto es bonito, da igual quien esté que si alguien planifica una tarea, el tiempo se podrá estimar, con un ratio de error, toda la maquinaria funcionará perfectamente en base al conocimiento plasmado en tablas de datos, sobre tiempos, complejidades, tamaños y demás.

Lo cierto es que mi cerebro ya hace eso, cuando alguien me pregunta "oye, cuánto crees que tardarás en hacer tal cosa", mi cerebro ya sabe qué preguntas debo hacer, por donde pueden venir los problemas y cuando tiempo puedo tardar. Y lo mejor, a medida que pasa el tiempo lo hago mejor e incluso me dice el tiempo que podría tardar otra persona. Mi cerebro está tomando decisiones sin que yo tenga que pensar, mi sexto sentido programadoril (R) me dice lo que está pasando cual sentido aracnido a espiderman, de ahí la introducción de este post.

Esto no es tan bonito cara a una empresa, si el fulano encargado de hacer esas estimaciones se va, la empresa se queda en bragas, así que quizás un modelo híbrido sea lo mejor, sobretodo para pequeñas empresas, aunque en este caso, y como opinión personal, me vale más la opinión de una persona con experiencia que mil hojas de excel y mucho más en entornos con cambios rápidos de requisitos.




3 comentarios:

JM dijo...

De acuerdo... pero sólo en parte (:

Te voy a dar dos respuestas:

1) Como persona que está implantando CMMI (respuesta pro-cmmi):

La idea de CMMI y otros procesos clásicos es eliminar al máximo el factor humano. Como los humanos tenemos la fea costumbre de equivocarnos, cuantas menos decisiones les dejes, mejor (:
Justo lo contrario que las metodologías ágiles que prefieren a las personas sobre los procesos.

Además de lo que comentas (como se vaya el "estimador" la lías), también dependes de ciertas características del "estimador", y estas irán cambiando según cambien las personas, o incluso dependiendo del estado de ánimo o motivación de ese día. Esto hace que tu proceso de estimación sea muy variable y poco predecible (otro palabro mágico de CMMI)
El objetivo es eliminar la subjetividad y fomentar los procesos predecibles y repetibles, sacrificando esa "chispa" que tenemos a veces los humanos.

2) Ahora mi opinión personal (pro-ágil):
Yo tambíen estoy seguro que tú estimas mejor y más rápido de forma inconsciente (a ojímetro como solemos decir), pero desgraciadamente eso no se cumplirá con la mayoría de la gente: los hay más pesimistas u optimistas (también dependiendo del día), los hay que tienen en cuenta posibles problemas y otros que no, algunos suman a la estimación el tiempo de corrección de errores, otros "inflan" las estimaciones para tener tiempo extra para otro café (no hablo de nuestro caso, sino empresas grandes tipo factoría/consultoría donde la motivación brilla por su ausencia)... en definitiva, la estimación depende al 100% de factores como la persona que lo hace, el momento en que se haga, etc.
Por eso el corazón de las metodologías ágiles es un equipo de gente de muy alto nivel y continuamente motivada (no sé cual de las dos es más complicado de conseguir). Si tienes gente con esas características, entonces te sobra un proceso de estimación estilo CMMI

Por cierto, yo también soy partidario de un sistema mixto, donde tengamos parte basada en los datos históricos y parte basada en esa "chispa" personal (cuando vuelvas por aquí vas a tener el placer de empezar a usarlo, así que estarás deseando que se te acaben las vacaciones :)

Saluditos!

JM

javi santana dijo...

precisamente la parte más personal de la estimación es lo más interesante. Hay momentos que requiere algo conservador, otras veces algo arriesgado, etc.

Es verdad que muchas cosas se dejan a la elección puramente subjetiva y la persona que estima te la puede colar, pero ahí está la diferencia entre alguien que lo hace bien y mal.

Por lo que comentas, que estemos implantando en unkasoft cmmi quiere decir que no somos los mejores o qué? XD

JM dijo...

jeje, en unkasoft estamos los mejores, eso está claro, pero los de cmmi no están tan convencidos, así que por eso nos obligan a hacer estimaciones objetivas.

(;