Contexto



Fabiola es una alumna de primer semestre del Tecmilenio, y uno de sus principales objetivos personales es mantenerse activa. Ella conoce muy bien los beneficios que trae el realizar ejercicio de forma periódica, no sólo para su salud, sino también para sus estudios, por lo que ha decidido entrar al equipo de básquetbol de su campus. Ella, al igual de la mayoría de sus compañeras de equipo, no tiene mucha experiencia en este deporte, así que confía que su entrenador le ayude a mejorar poco a poco.

Después de varias sesiones, su entrenador les asignó sus posiciones, según sus habilidades. A cada una le explicaba qué técnicas debía aplicar a la defensiva y la ofensiva. Fueron muchas horas de esfuerzo individual y grupal. Se notaba el vínculo que construyeron y lo motivado que estaba el equipo completo en cada entrenamiento. Los avances del equipo eran notables. Cada miembro daba el 100% de sus capacidades, lo que les permitió llegar a ser campeones en los dos torneos en los que participaron. Al igual que el equipo de básquetbol de Fabiola, los equipos de trabajo que se forman para desarrollar un software requieren tener integrantes dispuestos a trabajar en equipo, además de un coach que los guíe y los motive a dar lo mejor de sí mismos. Los proyectos de desarrollo de software requieren un proceso de entrenamiento o capacitación que aclare la forma en que trabajarán de manera colaborativa, que se dividan las tareas y se asignen responsabilidades. Cada miembro del equipo debe conocer qué se espera de él y la importancia que tiene el colaborar con sus compañeros para producir la mejor versión de software que espera el usuario.

¿Cómo se sabe si una organización puede ser capaz de enfrentar el reto que impone el desarrollo de sistema? ¿Qué estrategias se pueden seguir para trabajar en equipo? ¿Cuál es el rol de la motivación del equipo en el proceso de desarrollo de software?

Explicación


7.1 Perfiles del personal

Los proyectos de software en particular requieren involucrar a un grupo de personas con capacidades técnicas específicas y además capacidades de colaboración. El perfil de la mayoría de los equipos de programadores, que te podrás encontrar en las organizaciones dedicadas al desarrollo de software, generalmente son personas introvertidas que prefieren trabajar aisladas con el mínimo de contacto personal. Incluso suelen preferir la comunicación escrita a la comunicación persona a persona. Esto entraña una serie de dificultades cuando se requiere de coordinación y colaboración de las personas. Por ello es muy importante determinar qué perfil se necesita para el trabajo que se espera hacer en un proyecto desde antes de iniciar. Añadir personal una vez iniciado el proyecto traerá mayores costos y retrasará irremediablemente al proyecto.

El éxito en un equipo de trabajo reside en los siguientes factores:

  1. Un líder genuino que motive y ayude a tomar buenas decisiones al equipo.
  2. Un equipo que conozca que su misión es exigente pero alcanzable.
  3. Miembros del equipo comprometidos a alcanzar la meta establecida.
  4. Recursos adecuadamente capacitados, con herramientas y apoyo necesarios.

“Hasta los mejores equipos de trabajo no alcanzan el éxito cuando saben que su misión es imposible” (Humphrey, 2006).


Perfiles:

En un equipo de desarrollo de software puedes encontrar diferentes funciones, sin embargo, existen dos principales características que los describen:

Especialistas

Son personas que han dedicado varios años a un aspecto del desarrollo de sistemas.
Los especialistas son frecuentemente utilizados en proyectos grandes de desarrollo de sistemas.

Generalistas

Son personas que pueden llevar a cabo varias funciones en un proyecto.
Son una buena opción para proyectos de corto alcance o lanzamiento de nuevos productos.


Ejercicios para formar un equipo

Humphrey (2006) asegura que un equipo trabaja de manera cohesiva cuando ha pasado por una situación estresante. Así que una estrategia para formar equipos es realizar alguna aventura al aire libre, donde las personas deban realizar alguna actividad física, por ejemplo, expediciones en balsa donde realicen rafting o senderismo en una montaña difícil. Estas experiencias permitirán que los miembros del equipo se conozcan a un nivel personal, lejos de la actividad de oficina a la que están acostumbrados, y pongan toda su voluntad en alcanzar la meta propuesta.

La experiencia que vivan como equipo en una situación de relativo estrés puede ser un mecanismo que les ayude a comprender la importancia del trabajo en equipo y puedan trasladarlo a las tareas del proyecto de desarrollo de software. Generalmente la conformación del equipo de trabajo no depende del líder. Muchas veces los equipos se encuentran ya conformados, sin embargo, cuando sea parte del proceso de selección de los miembros del equipo es importante que consideres los siguientes aspectos:

Haz clic en cada aspecto para conocer más detalles

En el desarrollo de software no siempre se requiere crear una aplicación de cero, sino también incluir alguna funcionalidad a un sistema existente, corregir alguna función o mejorar el desempeño del sistema. Para cada una de estas acciones, los perfiles de los miembros de un equipo serán diferentes. Mientras en algunos se requieren expertos especialistas, en otros serviría mejor tener un grupo con habilidades generales.

Recuerda que, en algunos equipos, todos son especialistas en algún área específica por lo general tienen objetivos e intereses diferentes, que hacen difícil que exista cohesión en el equipo completo. Existirán situaciones, sobre todo en equipos grandes, donde formar pequeños equipos de una misma especialidad sea una mejor opción para asegurar la calidad del producto.

La forma de planear, diseñar, generar reportes, utilizar métricas, mantener los registros y trabajar con calidad son temas que deben conocer en el equipo. Es preferible hacer una breve capacitación sobre la importancia de estandarizar estos temas antes de iniciar el trabajo en equipo y evitar asumir que todos lo saben.

Impacto de la motivación en los equipos de trabajo

“La motivación es una de las tareas más efectivas e importantes que enfrenta cualquier gerente” (Jensen, 2014).

El impacto que tiene la motivación en los proyectos de desarrollo permite que un empleado pase de realizar el mínimo esfuerzo (sólo para cubrir sus necesidades básicas), haciendo uso del 20% de sus habilidades, a utilizar el 90% de su habilidad donde su productividad sería mayor, permitiéndoles cubrir sus necesidades de autorrealización y logro.

La motivación representa el 80% de la productividad de una organización, y sólo se alcanza cuando los objetivos personales de los miembros del equipo de trabajo se encuentran alineados con los objetivos de la organización.

En opinión de Sommerville (2011), la motivación del equipo de trabajo está directamente relacionada con la calidad del producto de software. La forma en que se organice el trabajo y se genere un ambiente laboral adecuado propiciará que los miembros del equipo trabajen tan eficientemente como sea posible.

Imagen tomada del libro: Jensen, R. (2014). Improving Software Development Productivity: Effective Leadership and Quantitative Methods in Software Management. EEUU: Prentice Hall. Solo para fines educativos.


“Si las personas no están motivadas, no estarán interesadas en la actividad que realizan. Así que trabajarán con lentitud, y será más probable que cometan errores y que no contribuyan con las metas más amplias del equipo o la organización.”

7.2 Planificación de la capacidad de la organización

A continuación se describen algunos aspectos importantes para planear la capacidad de una organización al desarrollar un software:

Haz clic para conocer más detalles

7.3 Estrategias del equipo de trabajo

TSP propone dos posibles estrategias para desarrollar un software, que dependen de tener una idea general del tamaño del software que se tendrá que realizar. El tamaño permite dividirlo en pequeñas partes que puedan ser manejables por los equipos de trabajo. Para determinar el tamaño general del software de una forma rápida, TSP sugiere realizar las siguientes preguntas al equipo de trabajo:

  • ¿Qué tan grande considera que será el producto?
    La respuesta podría estar basada en otros desarrollos realizados con anterioridad. Lo que se necesita es un estimado grosso modo que rápidamente nos dé información.
  • ¿Cómo podrían dividir el trabajo?
    Se pueden considerar las siguientes opciones:
    Enfoque por componentes: dividir al trabajo en partes funcionales independientes que son asignadas a un miembro del equipo para su desarrollo y pruebas.
    Enfoque funcional evolutivo: se seleccionan algunas funciones para crear un sistema básico. Una vez terminado se incorporan mejoras e integran otras funciones.
    Enfoque combinado: se inicia por un componente central base y después se incorporan otros componentes. En cada nueva versión se pueden incorporar mejoras a los componentes existentes.

Una vez que se contestaron las preguntas anteriores se puede decidir la mejor estrategia del trabajo en equipo a utilizar.

Estrategias

La construcción de un sistema puede ser abordada por un equipo de trabajo a través de las siguientes estrategias:

  • Enfoque Big Bang o cascada.
    Los desarrolladores del software diseñan y construyen todas las partes de un sistema, las ensamblan y revisan si funciona. En opinión de Humphrey (2006) este enfoque es un desastre para desarrollos que son razonablemente grandes, principalmente porque los defectos del sistema son muy difíciles de detectar y corregir a tiempo.

  • Enfoque por etapas o versiones incrementales.
    Otra estrategia es abordar la construcción del software en partes más pequeñas o versiones, en las que se pueda aplicar todo el proceso de desarrollo. Esto permite administrar mejor el desempeño de cada parte enfocando el esfuerzo del equipo.
    En opinión de Humphrey (2006), esta estrategia permite mejorar un sistema de una manera más rápida, ya que el desarrollo de una nueva versión parte de un sistema base con el que es posible identificar problemas de interfaz, seguridad y desempeño, de una manera más rápida. Además es posible obtener retroalimentación del usuario cuando la versión es funcional y es puesta a prueba.

Seleccionar una adecuada estrategia permite al equipo tener la certeza de cómo estarán trabajando y colaborando en la construcción de un software de calidad.

Cierre



Gran parte del éxito de muchas empresas dedicadas a la fabricación de software radica en el talento de su personal, en el trabajo en equipo y en ambientes de trabajo adecuados. Cuando hablamos de talento, estas organizaciones invierten mucho tiempo y esfuerzo en reclutar al personal idóneo para las tareas que se requieren hacer. Tener al ingeniero de software con las habilidades adecuadas para afrontar el reto de un proyecto de desarrollo deberá ser el objetivo de toda organización de software, sin olvidar que no sólo se requieren habilidades técnicas sino de trabajo en equipo. Tal y como sucede en el deporte, no basta con reclutar a los mejores jugadores para ganar campeonatos, se requiere un trabajo del coach que identifique las habilidades individuales, ubique a los jugadores en la posición adecuada y motive a los jugadores a trabajar en equipo. El trabajo en equipo puede hacer la diferencia entre obtener la mejor versión de software o el sacar un producto de software lleno de defectos, que no cumpla con los tiempos de entrega y, lo que podría más grave, sin relación con las necesidades del cliente.

El ambiente de trabajo es otro de los elementos fundamentales de las empresas exitosas. En la actualidad existe una tendencia entre las empresas dedicadas a la construcción de software a crear ambientes de trabajo relajados, que propicien la creatividad y el contacto con sus compañeros, en un afán por establecer una cultura laboral que motive a todos sus empleados en el trabajo colaborativo. Estos ambientes son altamente apreciados por los ingenieros de software porque mantienen una baja dosis de formulismos y son prácticamente una extensión del ambiente que se vive en las universidades. Sin embargo, estas empresas deben también ser cuidadosas en establecer políticas claras en cuanto al uso de sus recursos y el cumplimiento de sus compromisos con sus clientes. De poco serviría tener instalaciones de vanguardia si el resultado del trabajo es deficiente.

Checkpoint


Asegúrate de poder:

  • Reconocer los elementos que permiten calcular la capacidad de una organización para afrontar el reto de un proyecto de desarrollo de software.
  • Diferenciar los perfiles del personal que puede participar en un proyecto de desarrollo para aprovechar sus características según el tipo de proyecto de software.
  • Identificar la estrategia que puede servir para abordar la mejor manera de desarrollar un proyecto de software.

Referencias


  • Humphrey, W. (2006). TSP(SM) Coaching Development Teams. USA: Pearson.
  • Jensen, R. (2014). Improving Software Development Productivity: Effective Leadership and Quantitative Methods in Software Management. USA: Prentice Hall.
  • Sommerville, I. (2011). Ingeniería de Software (9ª ed.). México: Pearson.