Tips para Enfrentar la Problemática Actual en el Desarrollo de Software

Publicado en

Autor

El desarrollo de software es una de las áreas de especialización con mayor auge en las últimas décadas. Cada día la tecnología evoluciona, y al mismo tiempo, los campos de aplicación de los sistemas informáticos se van ampliando, pasando desde la realización de un portal de compras, hasta software para la automatización robótica para operaciones quirúrgicas, proyectos de explotación de millones de registros de información y automatización de procesos de todo tipo; dicho crecimiento se da tanto en la iniciativa privada como en el sector educativo y gubernamental.

Diversos organismos y comunidades han realizado un gran trabajo en definir modelos de procesos, metodologías, disciplinas, estándares buscando que las empresas desarrollen productos que cubran la satisfacción del cliente a través de proyectos exitosos, tales como: CMMI, ISO9001:2000, SPICE, Unified Process, ITmark, MoProSoft, CompetiSoft, COBIT, TSP/PSP, Scrum, Extreme programming, entre otros.

Adicionalmente se cuenta con herramientas ALM (Application Lifecycle Management) para apoyar en la gestión del ciclo de vida de desarrollo. Existen opciones comerciales de marcas como IBM, HPE, Atlassian y Thoughtworks, entre otros, así como algunas open source como Tuleap y Endeavour Agile ALM. A pesar de esto, el porcentaje de empresas en el mundo que utilizan tanto un modelo de proceso efectivo como herramientas para su gestión sigue siendo bastante pequeño.

Aun cuando podemos hacer uso de esta infraestructura que nos facilita la ejecución de un proyecto de software, existen diversos problemas a los cuales nos enfrentamos en los proyectos. Algunos de los más comunes son:

  • Proyectos de software sin un alcance claro.

  • Productos de software de baja calidad.

  • Falta de métricas para estimar proyectos.

  • Proyectos que rebasan significativamente las estimaciones iniciales de tiempo y/o costo.

  • Desconocer habilidades y capacidades de las personas previo a la asignación de roles en el proyecto.

  • Procesos para el desarrollo de software ineficientes.

  • Falta de capacidades técnicas en los integrantes del equipo de trabajo.

  • Gestión del proyecto inadecuada.

De acuerdo a mi experiencia existen algunas acciones clave que podemos realizar para mejorar el porcentaje de proyectos exitosos (aquellos que terminen en el tiempo, esfuerzo y alcance pactado), entre las cuales destacan las siguientes:

Implementación de un modelo de procesos adecuado

El mejor modelo de procesos a implementar es el que se ajuste a la forma de operar de la empresa. Cuando en un proyecto el equipo de trabajo enfoca más esfuerzo al proceso que al producto, es una señal de que se debe invertir esfuerzo en analizar y ajustar los procesos de desarrollo. Es por esto que el tomar la decisión de implementar un proceso debemos considerar que éste permita ser tan ligero o tan robusto como lo necesite el proyecto.

Enfocar a los equipos en generar productos de alta calidad

Existen diferentes estrategias para verificar la calidad de los productos de software, revisiones personales, revisiones entre pares, caminatas e inspecciones de código entre otras. Dentro de los procesos institucionales es recomendable definir y promover el uso de checklist de revisión para efectuar dichas estrategias, de esta manera el costo de la calidad se reducirá de manera significativa. Debemos cambiar la mentalidad de ver al área de QA como aquellas personas que encuentran mis errores, y verlos como aquellos que garantizan que el producto cumpla satisfactoriamente con lo que el cliente espera y pago por ello.

Utilizar estándares para generar los productos de software

El uso de estándares nos permite homologar la manera en la que construimos los productos requeridos en un proyecto de software, sin ellos, cada uno de los integrantes del equipo genera “a su manera” las actividades asignadas y puede ocasionar un gran descontrol; lo cual se transforma en re-trabajo, defectos e incremento de costos para todos los involucrados.

Análisis de métricas de ejecución del proyecto

Al finalizar cada proyecto, es muy recomendable realizar una sesión de trabajo para analizar el desempeño del equipo en el proyecto y obtener métricas de trabajo enfocados a la mejora continua de los involucrados, tales como desviación en la estimación de esfuerzo, tiempo, datos enfocados a calidad del producto , cantidad de productos añadidos posteriores al arranque del proyecto, entre otros. De esta manera en proyectos posteriores se reducirá gradualmente el porcentaje de desviación e incrementaremos la satisfacción del cliente

Contar con un plan de carrera y capacitación

Los procesos necesitan personas para ser ejecutados, por lo que el capital humano es un factor crítico de éxito para los proyectos. En muchas ocasiones se piensa que al tener un modelo de proceso implementado es la solución, sin embargo, las habilidades y capacidades técnicas y administrativas de cada uno de los participantes en este proceso son primordiales. Recomiendo considerar los siguientes puntos:

  • Plan de carrera: Tener planes de carrera individualizados permite establecer trazabilidad del crecimiento profesional de cada persona, y lo más importante, ellos lo saben, lo cual ocasiona certidumbre y confiabilidad en la institución; reduciendo la rotación de personal. En este punto es donde podemos incluir a los recién egresados como servicio social y practicantes, pensando en ellos a mediano plazo y planeando una estadía mínima de 5 años en la institución.

  • Capacitación de acuerdo al rol que desempeñan: Como ya se mencionó anteriormente, los procesos necesitan personas y las personas conocimiento y habilidades, en caso de carecer o tener debilidad en algunas de ellas, dentro del plan de carrera se debería de considerar la capacitación y certificación del personal, generando un valor agregado a la institución y a las personas. La empresa no es la única responsable de capacitar al personal, deben incentivar a la capacitación a través de cursos en línea o ser autodidactas.

Establecer vínculos de confianza entre involucrados

La confianza es la base de toda relación entre las personas. Al momento en que un cliente contrata a una empresa para realizar un proyecto y la empresa integra un equipo de trabajo para ejecutarlo, se están creando vínculos de confianza que debe ser mantenida durante todo el proyecto. Si los involucrados en el proyecto como cliente, usuarios, equipo de desarrollo y gerencia tienen comunicación efectiva, compromiso y caminan hacia un mismo objetivo, la confianza se mantendrá y fortalecerá. Es muy fácil perder la confianza, y recuperarla no garantiza que todo sea igual que antes; es como romper un jarrón y pegarlo, sigue siendo el mismo objeto pero quedan marcas de la ruptura.

Adecuada gestión del proyecto

La gestión del proyecto es un tema crítico en el éxito o fracaso, podemos contar con personal con mucha experiencia y con excelentes conocimientos técnicos y un modelo de proceso institucionalizado y ejecutado. Sin embargo, si la gestión del proyecto, desde la fase de planeación e identificación del alcance, hasta el cierre, es deficiente, los problemas seguirán existiendo y caminaremos rumbo al fracaso y frustración. Al día de hoy contamos buenas prácticas enfocadas a esta área de conocimiento pero no siempre se lleva a cabo de la mejor manera; por lo que es importante que el administrador del proyecto y el líder técnico del equipo tenga en claro sus responsabilidades y exista un adecuado canal de comunicación.

Otro punto adicional es reducir el compromiso de fechas de entrega sin consultar el equipo de trabajo ya que generalmente esto ocasiona presión excesiva y que estos compromisos no se cumplan y por ende, la satisfacción del cliente no sea la deseada.

La operación día a día provocan que no realicemos un análisis de las cosas que realizamos bien y cuáles debemos mejorar en cada proyecto, lo cual ocasiona que sigamos cometiendo los mismos errores y muchas veces no los cuantificamos; es importante hacer un alto y reflexionar para poder realizar los ajustes donde sea necesario con la finalidad de finalizar proyectos exitosos y con alta calidad.

Referencias

  1. G. Cuevas, et al. Gestión del Proceso Software. Editorial Centro de Estudios Ramón Areces, 2005.

  2. W. S. Humphrey, et al. Team Software Process (TSP) Body of Knowledge. http://swgu.ru/sm

 

Bio

Iván Lozada ha desempeñado diversas funciones tanto en el sector público como en la iniciativa privada, actualmente su función es TSP Coach en INFOTEC. ilozada@gmail.com