Lo que olvidaron enseñarte: pensamiento sistémico (I)

Pensamiento sistémico es un área que no se incluye en los cursos de Scrum Master, Propietario de producto, o metodologías tradicionales y considero que  su exclusión está intimamente relacionada con el fracaso de varios proyectos de software.

El pensamiento sistémico y los modelos complejos son el nucleo para todos los que deseen realmente ser asertivos con la implementación y utilización del pensamiento Agile y particularmente del marco de trabajo de Scrum/DSDM. A su vez, puede ser una herramienta de principal apoyo a aquellos individuos que empleen marcos de trabajo más tradicionales.
Podrías por ejemplo llevar adelante Scrum, pero su resultado sería sin lugar a dudas menos efectivo si no conoces los modelos de pensamiento sistémico y como analizar su complejidad.

Pensamiento sistémico y el modelo tradicional
Imagínate por un segundo que tiras una moneda al aire y quieres predecir de que lado caerá. En realidad, la probabilidad de que aciertes será bastante alta.
Imagínate ahora que trabajas en una empresa que emplea metodologías tradicionales y que te solicita documentes el proceso y protocolo. Esto se podría ver algo así:

1. Se obtiene una moneda
2. Se tira al aire empleando una fuerza moderada que a su vez estimule su giro
3. Se espera a que la moneda caiga
4. Se estima que la moneda caerá aproximadamente un 49.5% cara, 49.5% cruz y 1% en el borde.
5. Se repite el proceso

Podrías predecir que el resultado final será de +- 50% cada lado; a mayor número de tiradas más será la exactitud de tu predicción. A su vez, si la empresa te solicitase dibujar un plano de una máquina para tirar monedas, ella podría desarrollarse y verificarse con los resultados aproximados descritos en el documento. El proceso podría verse algo así:

1. Análisis y caso de uso (lo realizado anteriormente)
2. Construcción del prototipo
3. Validación de los valores de resultado con estimaciones previas (49.5,% 49.5%, 1%)
4. Instalación de la máquina en donde el cliente solicite
5. Mantenimiento y reparación para el caso que algo falle
(el fallo se detectaría si la moneda no es lanzada o cuando no exista una relación entre los resultados estimados. Esto podría darse, por ejemplo, debido a que la misma ya no es lanzada con giro y aterriza siempre en la misma cara).

Imaginemos ahora otro escenario:  trabajas en una empresa y te solicitan que reduzcas el precio de un producto en 1%. Evidentemente sería posible documentar los pasos pero… ¿Podrías hacer lo mismo con las consecuencias?

Si bajas el precio del producto, esto podría traer como resultado un conjunto innumerable de consecuencias, desde un aumento de la venta, una guerra feroz con la competencia, clientes que sospecharían que la reducción implica también una bajada en la calidad o sientan que el producto no es más exclusivo, tiendas de bajo coste queriendo venderlo o de alto rechazando al mismo, etc. A su vez, esto quizá afectaría a otros productos de tu compañía, lo que podría terminar en una venta mayor a la esperada o la empresa dando quiebra unos años mas tarde. En el primer caso, podrías obtener un ascenso, lo que aumentaría tu sueldo y te permitiría comprar una casa y darle empleo a un conjunto de persona;  en el segundo, que tuvieseses que buscar un nuevo trabajo, lo que quizá te daría tiempo para estudiar sobre pensamiento sistémico y aplicarlo en tu futura posición.
Como ves, un simple y único evento acarrea un número inimaginable de consecuncias y escenarios, aunque podría también no pasar nada -aunque muy improbable-  y es otro resultado.
¿Cuál es la diferencia entre el primer y segundo ejemplo? ¿Son estos eventos totalmente impredecibles o existen reglas que permintan “domesticar” sus posibles resultados?

everythingConnected2

Cuando tiras una moneda, este evento te involucra a ti en primera persona y se realiza en un ambiente “controlado“. Cuando bajas el precio, la situación es completamente diferente ya que existe un número elevado de entidades inter-relacionadas.

“Un sistema es un conjunto de elementos interconectadas de tal forma que produce sus propios patrones de conducta”

Los clientes están conectados con el precio, competidores al valor de tu producto y margen de mercado disponible, prestigio de la marca, el gobierno a las regulaciones de mercado antimonopólicas, etc. El efecto de las consecuencias factibles es claramente ilimitado.

El modelo de pensamiento sistémico
La pregunta evidente es… ¿Porqué es esto así?
Obviamente se da como consecuencia directa de la conexión entre las partes involucradas. Si no hubiese una conexión entre ellas, el ciclo de causa-efecto pronto se dentendría de la misma forma que una rueda a la que no se le da más impulso dejaría de girar. Es interesante tener en cuenta que el ciclo de causa-efecto es a su vez retroactivo, esto es, existe un conjunto de causas que dieron como resultado la bajada de precio en el presente, por lo que la misma iniciará consecuencias en el futuro, haciendo la expansión de ellos en el tiempo y espacio.

“El ciclo causa-efecto es siempre retroactivo”

Future__Present__Past_by_JusT_ShanT

(c) 2011, Ishan Arora

Es importante destacar que el requisito indispensable por lo que ello ocurre es porque se trata de un sistema abierto, y es esa exposición la que genera la causalidad de hechos.

“Para que un sistema tenga una energía constante, el circuito debe estar abierto, ya que la energía debe ser importada del exterior, desde el exterior de sus límites .”

Déjame ponerte un ejemplo de la importancia del sistema abierto… imagínate un equipo de desarrollo de un producto de software donde no exista una retroalimentación por parte del cliente. Evidentemente la motivación y el “feedback” externo que es la energía que hace girar la rueda se irá perdiendo poco a poco hasta el punto donde los integrantes del proyecto no estén interesados en continuar adelante o hayan finalizado con todas las tareas.

“Parte de la energía es almacenada para impedir la desintegración futura, otra parte es transformada por y para las necesidades del sistema.”

Se podría adicionar más energía al sistema y así girar la rueda incrementando el salario del empleado, pero una vez que el mismo se acostumbre al monto, el proceso iría en declive hasta frenarse nuevamente. Es por ello que hay que no pasar por alto cuales son los motivos que apoyan a un equipo de personas.

Pensamiento sistémico y modelos parcialmente abiertos
En las metodologías tradicionales se tratan a los modelos como  parcialmente abiertos (una rueda con pocos agentes externos que la muevan o en ciertos momentos). Las causas suelen tener una sinergia al comienzo del proyecto y congelarse tanto como sea en etapas posteriores. Ello se logra documentando diferentes variables al inicio, como ser los requisitos y riesgos.

agujeroEllo se llevará adelante mediante la evaluación de los problemas (efectos) vistos en proyectos anteriores, esto es, que la idea de que caiga un meteorito y destruya el servidor conteniendo los códigos fuente o haya un ataque extraterrestre (mas allá del suceso del cine)  sea una posibilidad remota, por lo que se descarte.

Para el caso de aparecer un riesgo documentado durante la vida del proyecto, se seguirán los pasos articulados inicialmente en el documento. Es importante entonces preguntarse:

¿El modelo tradicional resulta efectivo cuando se trabaja con elementos inter-relacionados?

A mi parecer, la causa-efecto de un modelo medianamente cerrado tiene varios inconvenientes: un cliente podría descubrir por sí mismo nuevas formas de resolver un problema mientras se encuentra el software en etapa de desarrollo, las cuales no podrían ser fácilmente adicionadas a la aplicación por tratarse de un sistema medianamente cerrado o controlado. Cualquier adición o cambio podría introducir o abrir nuevos caminos, lo que este tipo de metodologías trata de mitigar.
Por el otro lado, podría haber riesgos no documentados y tener que interrumpir una etapa para buscar una solución o dejarlo para el final del desarrollo por no haber personas disponibles para atenderlo.
Adicionalmente, la base de las metodologías tradicionales tal cual se conocen se basan en un modelo semi-estático de piezas (o recursos) que se encajan o remueven para el fin de satisfacer una demanda (modelo Tayloriano). Esto queda claro cuando se emplean los gráficos de GANTT, en donde se adicionan o remueven personas u otros elementos a un proyecto sin evaluar su causa-efecto. El proceso funciona en base a saciar necesidades, esto es, se asocia una persona a un determinado proyecto porque tiene los conocimientos requeridos para llenar la necesidad.

Ello aunque es correcto, implica solamente una visón parcial de la situación donde no se analiza la repercusión o efecto del cambio en la cadena de conexiones en el sistema en su totalidad y su causa. Es importante preguntarse entonces:

¿En una empresa de software, la creación de un producto se parece más al ejemplo de la moneda o al de la bajada de precio?

El pensamiento sistémico ofrece una forma diferente de aproximar las situaciones, y aunque es la base del pensamiento Agile, las técnicas pueden ser empleadas en cualquier forma de trabajo.

En la segunda parte de este artículo iré más allá mostrándote porqué el nucleo de Agile y Scrum es sistémico y considero su desconocimiento puede ocasionar el fracaso de uno o más proyectos de software.

Gracias por escucharme,
Erich.

Leave a Reply