Desarrollo de Software, Liderazgo y Valores Humanos (parte I)

-->
 “Lo que quizás más me entusiasma  . . . es que los valores humanos finalmente están por encima de valores mecanicistas o la tecnología como un fín en sí mismo, en un mundo cada vez más tecnológico. Las empresas, especialmente las de alta tecnología, no son máquinas. Son conjuntos de gente tremendamente motivada y creativa, y es su motivación intrínseca y su creatividad lo que hace toda la diferencia”

Eric Schmidt, Google CEO

Ser inteligente, más allá de las competencias específicas, se evidencia en la actitud de participar en la consecución de objetivos compartidos para el logro de un proyecto en el que participan distintos actores. Ahora bien, esta inteligencia debe estar alineada con un horizonte de valores humanos, por ejemplo: creatividad, responsabilidad, espíritu de equipo, calidad, respeto, integridad, entre otros, y con las conductas que concretan, en el trabajo cotidiano, dichos valores.
Cuando el objetivo compartido es el desarrollo de software de calidad, vemos que la complejidad de los proyectos no puede manejarse y reducirse en forma sustentable sin recurrir al trabajo en equipo guiado por valores humanos.
Destacamos además la importancia del papel del liderazgo resonante ya que todo proyecto de desarrollo por ser innovador requiere de una visión prospectiva y de una metodología de trabajo en equipo ágil y eficaz.
Se trata de lograr que todos los actores del desarrollo, en toda su complejidad, se involucren con un firme compromiso, con una clara orientación al objetivo compartido, con la disposición a crealogar (crear a travès del diálogo) y con la pasión que se manifiesta cuando se trabaja con entusiasmo y convicción en lo que se hace.

Los proyectos de desarrollo de software incluyen varios actores, cada uno con objetivos especìficos
Desarrollar software es una tarea compleja en la que los cambios tecnológicos, el carácter cambiante y a veces difuso de los requerimientos, y las características “intangibles” del producto a crear se funden y potencian, generando una complejidad que puede tornarse inmanejable.
Mucho se ha escrito sobre cómo reducir o mantener bajo control la complejidad en los proyectos de desarrollo de software, junto con la creación y perfeccionamiento de diversas metodologías y herramientas. En este sentido, los Métodos Agiles nos permiten reducir la complejidad y aumentar la eficacia de los equipos a través de desarrollos iterativos, control empírico de procesos y empowerment de los equipos y sus integrantes.
Sin embargo poco se ha escrito sobre la relación entre el desarrollo de software valioso y de alta calidad con los valores humanos compartidos y cultivados entre las personas que participan en los proyectos de desarrollo.

A los efectos de nuestro análisis vamos a clasificar a los diversos participantes de un projecto de software en cuatro grupos bien diferenciados en base sus roles:
- Compradores: son los gerentes de área, gerentes generales, y otros directivos que deciden la contratación (interna o externa) del servicio de desarrollo de software
- Equipo de Desarrollo: personas que realizan el trabajo de análisis, arquitectura, diseño, programación y testing del producto de software
- Usuarios: las personas que van a utilizar el producto final
- Departamento de IT: quienes ponen en producción o instalan el producto y tienen a cargo las tareas operativas y de soporte técnico del producto.
Esta clasificación, si bien simplificada y enfocada al desarrollo de software comercial para empresas, nos permitirá avanzar en nuestro análisis de objetivos generales y objetivos especìficos de los diversos actores en un proyecto de desarrollo de software.

Objetivo general y objetivos específicos
Compradores, Equipos de Desarrollo, Usuarios e integrantes del Departamento de IT usualmente comparten un objetivo común:

Como participantes del proyecto queremos crear (o mejorar) un producto de software que permita a los usuarios realizar sus tareas y cumplir con sus objetivos.
Si se trata de tareas y objetivos nuevos, buscamos proveer a los usuarios de una herramienta que les permita afrontar sus nuevas responsabilidades con éxito.
Si se trata de tareas y objetivos existentes, buscamos que el producto de software (nuevo o mejorado) permita a los usuarios mejorar su performance en cuanto a calidad y/o cantidad de trabajo realizado.

Este objetivo general, que es compartido por todos los actores del proyecto y es muy sinérgico, siempre se complementa con objetivos específicos de cada actor que reflejan los intereses particulares de las diferentes áreas de la empresa:
- Los gerentes (compradores) tienen como prioridad que el proyecto cueste lo menos posible
- El equipo de desarrollo desea utilizar la última tecnología disponible, tener tiempo suficiente para investigar los temas técnicos más complejos del producto, escribir algoritmos novedosos, y resolver problemas de una forma elegante y novedosa que los haga sentir orgullosos del código que escriben.
- Los usuarios desean que el producto nuevo o mejorado les permita realizar su trabajo mejor, más rápido y sin errores, sin tener que cambiar demasiado la forma actual de hacer las cosas.
- El departamento de IT (sistemas) quiere que el producto cumpla con los requisitos técnicos actuales, y que en lo posible utilice la tecnología que se considera actualmente como standard en la empresa. Adicionalmente quieren que sea simple de instalar, que no requiera mantenimiento, y que no incremente los pedidos de ayuda técnica de los usuarios.

En una primera observación podemos percibir que tanto el objetivo general como los objetivos específicos de cada rol/actor son complementarios.
Por ejemplo los gerentes desean que se utilice la mejor tecnología (objetivo específico del equipo de desarrollo), así también como los integrantes del equipo de desarrollo desean que no se gaste dinero o tiempo de más (objetivo específico de los gerentes).
Pero los problemas aparecen cuando la presión (propia o externa, real o percibida) de uno o varios actores no permite evaluar y balancear las necesidades y los  objetivos de los demás grupos, convirtiendo a los proyectos en una sucesión de Situaciones de Suma Cero –situaciones en las que sólo podemos ganar o prevalecer a expensas del otro, o aún peor: un campo de batalla con Situaciones de Suma Negativa que hacen peligrar a los proyectos e inclusive la salud de las personas.
 
Ante la complejidad de los proyectos de desarrollo de software y la diversidad de objetivos específicos de los diversos actores de un proyecto se requiere de un entorno de colaboración y diálogo con valores humanos. De esta forma se lubrica la comunicación y se facilita la búsqueda de sinergias entre las necesidades, objetivos e intereses específicos de gerentes, grupos de desarrollo, usuarios y personal de IT.
En la segunda parte de este artìculo analizaremos el aporte que realizan el Espíritu de Equipo, la Creatividad, la Responsabilidad, el Respeto y la Integridad en los proyectos de desarrollo de software.