archivo

Archivos diarios: diciembre 9, 2011

No lo asegura. No lo puedes asegurar. Desde que empiezas hasta que terminas pueden pasar muchas cosas y un buen número de ellas, además, no dependerán de ti y no podrás controlarlas. Con una buena gestión del riesgo, con una metodología y esquemas de trabajo flexibles podrás solventar muchos problemas pero no podrás hacer milagros.

Nos pagan por desarrollar software, por ser profesionales, por intentar el mejor acabado posible de nuestros productos, pero no nos pagan para hacer imposibles.

Podemos tener mucha experiencia y conocimientos, conocer el negocio, conocer el cliente, ser muy metódicos en la aplicación de buenas prácticas y sin embargo no sacar adelante el proyecto.

Hay una cita de Sun Tzu que nos puede servir para reflexionar sobre este asunto, en ella habla de que puede depender de nosotros estar lo más preparados posible para conseguir el éxito en un proyecto (la victoria), ya que podemos conocer qué hace falta para alcanzarlo pero que, sin embargo, hay otros factores que no podemos controlar y que se pueden interponer entre el objetivo y nosotros: “La invencibilidad depende de uno mismo, pero la vulnerabilidad del enemigo depende de él. De esto se deduce que quien es experto en la guerra puede hacerse a si mismo invencible, pero no es seguro que sea capaz de hacer que el enemigo sea vulnerable. Dicho de otra forma: uno puede saber cómo vencer, pero esto no significa necesariamente que vaya a vencer”.

La implicación (de verdad) de los stakeholders en el proyecto es esencial para que tengamos posibilidades de éxito, de manera que es fundamental que cada cual desempeñe su rol de forma adecuada y en equilibrio y sincronía con los demás.

El desarrollador, autor y divulgador holandés Jurgen Appelo, lo describe muy bien en un tweet: “No puedes dirigir una organización, cuando la rueda izquierda va más lenta que la derecha”. Lo mismo pasa en un proyecto de desarrollo de software, donde una parte no puede estar tirando continuamente de las demás porque esto no solo supone un esfuerzo considerable, sino que está comprobado que no produce buenos resultados.

Para que un proyecto de desarrollo de software se lleve a cabo con éxito no hay recetas, solo una serie de buenas prácticas, condiciones de partida y contexto que disminuyen el riesgo de que salga mal, sin embargo la incertidumbre a la que están sometidos provoca que todo se pueda ir al traste si no se gestiona de manera adecuada los cambios que se producen o si estos son demasiado sensibles y constantes.

Sun Tzu, enumera cinco casos en los que puede predecirse la victoria, en cada uno de ellos se puede buscar una analogía con el desarrollo de software (teniendo en cuenta que no predicen el éxito, pero sí suponen una buena base para que las cosas salgan bien): “Hay cinco casos en los que puede predecirse la victoria:

1.- El que sabe cuando puede luchar y cuando no, saldrá victorioso.
2.- El que comprende cómo luchar, de acuerdo con las fuerzas del adversario, saldrá victorioso.
3.- Aquél cuyas filas estén unidas en un propósito, saldrá victorioso.
4.- El que está bien preparado y descansa a la espera de un enemigo que no esté bien preparado, saldrá victorioso.
5.- Aquel cuyos generales son capaces y no sufren interferencias por parte de su soberano, saldrá victorioso.”

Estas son las analogías:

1.- Estudio de la viabilidad del sistema / Gestión del riesgo.
2.- Conocer las características del sistema de información a desarrollar, del entorno tecnológico, del cliente, etc…
3.- Stakeholders implicados y con enfoque a un objetivo común que supera a otros objetivos individuales (o que por lo menos tienen el mismo peso).
4.- Establecer unas condiciones de partida adecuadas para realizar el proyecto: presupuesto, plazos, metodología, conocimiento y aceptación de la metodología y estrategia de desarrollo.
5.- Equipos de proyecto bien dirigidos y coordinados.