Una guía para principiantes sobre la gestión del desarrollo de software con Kanban y Trello

Publicado: 2022-03-11

Todo el mundo es un director de proyecto. Ya sea que esté administrando el desarrollo de una nueva aplicación y haciendo crecer su startup, trabajando en un nuevo proyecto empresarial de mil millones de dólares o simplemente tratando de animar su jardín con un poco de paisajismo de bricolaje, siempre está administrando un proyecto.

El éxito de su proyecto depende de muchos factores, pero una de las razones más comunes por las que los proyectos fracasan es la falta de gestión o una mala gestión del proyecto. No importa cuán pequeño sea su equipo o cuán claramente estén documentados sus requisitos, si no administra su equipo adecuadamente, su proyecto está destinado a fracasar.

Cada minuto que pasa gestionando su proyecto es tiempo bien empleado. Le acercará a la finalización exitosa de su proyecto.

La gestión ágil de proyectos es un método ampliamente aceptado para abordar proyectos modernos de desarrollo de software. Pero, ¿qué significa realmente Agile?

Los proyectos ágiles aceptan el cambio frecuente de alcance y requisitos como parte integral del proceso.

Para una inmersión más profunda en los principios ágiles, sugiero leer nuestra Guía definitiva para la gestión ágil de proyectos.

En esta publicación, explicaremos los conceptos básicos de la gestión ágil de proyectos con Kanban.

Incluso si es un gerente de proyectos experimentado que comprende los principios ágiles de principio a fin, debe refrescar su memoria y recordar los conceptos básicos. Los ciclos de innovación en el desarrollo de software se aceleran constantemente, lo que hace que la gestión de proyectos sea más compleja con cada iteración. Siempre es importante volver a los principios fundamentales y consolidar los principios básicos de Agile. Después de todo, la repetición es la madre de todo conocimiento.

Kanban es uno de los métodos más fáciles de administrar cualquier proyecto de desarrollo de software Agile. Puede manejar fácilmente un equipo de desarrollo local que trabaja desde la misma oficina o un equipo distribuido, distribuido en varias zonas horarias.

Kanban no es un proceso. Es una forma de administrar cualquier proceso con cambios mínimos en las actividades operativas establecidas del equipo.

Para aplicar los principios de Kanban a su trabajo, debe aplicar dos reglas simples:

  1. Visualiza tu proceso.
  2. Limite el trabajo en curso.

Visualice su proceso

La visualización de datos es una forma rápida y fácil de transmitir información de una manera universal y fácil de entender. Al mirar imágenes, el cerebro humano puede procesar varias piezas de información simultáneamente. Algunas investigaciones dicen que esto puede ser hasta 60.000 veces más rápido que leer un texto.

Las neuronas cerebrales para nuestra percepción visual representan el 30 por ciento de la materia gris del cerebro.

La forma más popular de visualizar un proceso es un tablero Kanban. Un tablero Kanban es un tablero dividido verticalmente en varias columnas, donde cada columna representa un estado en su proceso.

Echemos un vistazo a cómo se vería una placa de desarrollo de software simple. Primero, necesitamos definir estados para nuestras características de desarrollo:

  1. Tareas pendientes: la función está a la espera de desarrollo
  2. Desarrollo : la función se asigna a un desarrollador y él / ella está trabajando en ella
  3. Garantía de calidad : la característica está en revisión
  4. Implementado : la función se acepta y se incluye en la versión de la aplicación

Basado en esto, su tablero debe tener el siguiente diseño:

Un tablero de Trello con cuatro columnas: Tareas pendientes, Desarrollo, Control de calidad e Implementado.

Visualizar tareas individuales es tan fácil como crear una tarjeta simple (muy parecida a un Post-it) que represente el trabajo que debe realizarse. Puede nombrar la tarea, agregar el nombre del desarrollador asignado, la fecha de vencimiento y cualquier otra información relevante a esta tarjeta.

Cuando agrega esa tarjeta a una columna en el Tablero Kanban, ha visualizado que, por ejemplo, un desarrollador específico está trabajando en una tarea particular que vence en una fecha determinada y actualmente está en desarrollo.

Primer plano de una tarjeta de Trello, con etiquetas que resaltan la etiqueta de color de la tarea, el título de la tarea, la fecha de vencimiento de la tarea, el indicador de presencia de la descripción de la tarea, el contador de comentarios, el contador de archivos adjuntos, los elementos de la lista de verificación hechos fuera del total de la fracción y el indicador de personas asignadas.

Limitar trabajo en curso (WIP)

La multitarea humana es una ilusión. En lugar de prestar atención a una o dos cosas simultáneamente, nuestros cerebros cambian de una a otra muy rápidamente.

Esto es más visible en el desarrollo de software que en cualquier otro lugar. Los desarrolladores pueden trabajar solo en una pieza de código a la vez, y cambiar a otra característica causará demoras y afectará su concentración y rendimiento.

Esto no significa que deba limitar el número de asignaciones a una sola a la vez. El desarrollo es un trabajo complejo y creativo, algunas tareas toman más tiempo y otras toman menos tiempo para completarse, y siempre hay un retraso mientras un desarrollador está esperando algo o alguien. Lo importante es limitar las tareas asignadas a un número razonable que no produzca caos (esto suele ser de tres a cinco tareas a la vez).

Suponiendo que su equipo de desarrollo esté compuesto por dos desarrolladores y un ingeniero de control de calidad, su placa podría tener los siguientes límites WIP:

  • Tareas - Ilimitado
  • Desarrollo: límite de seis tarjetas (dos desarrolladores, cada uno limitado a un máximo de tres tareas)
  • Garantía de calidad: límite de tres tarjetas (1 ingeniero de control de calidad limitado a un máximo de tres tarjetas)
  • Implementado - Ilimitado
No espere que los desarrolladores sean sabios y limiten su WIP por su cuenta. Si arroja todo, desde la lista de tareas pendientes hasta los desarrolladores, será como darle demasiados juguetes a un niño. En lugar de jugar con un juguete, simplemente los arrojarán, creando caos en su hogar ordenado y, aún así, no estarán contentos y puede esperar rabietas.

Es su trabajo, como gerente de proyecto, asegurarse de que la lista de tareas pendientes se priorice correctamente y que las tareas se asignen a los desarrolladores no antes de lo necesario.

Un tablero de Trello similar al primero, pero con su segunda columna llamada WIP y una línea roja llamada "LÍMITE DE WIP" dibujada debajo de su tercera tarjeta.

Un tablero Kanban administrado correctamente le dará una imagen clara del estado de su proyecto de un vistazo. Puede ver que sus desarrolladores tienen suficiente trabajo, que ha preparado nuevas tareas que pueden asumir una vez que hayan terminado sus asignaciones y que su ingeniero de control de calidad está esperando nuevas tareas para revisar.

Use Trello para administrar su tablero Kanban

Trello es una aplicación de gestión de proyectos Kanban basada en la web. Permite una colaboración fácil y en tiempo real entre los miembros del equipo e incluso entre varios equipos y proyectos.

Para crear un tablero en Trello, haga clic en el elemento de menú "Crear nuevo tablero..." y establezca un título para su tablero.

Captura de pantalla de la creación de un tablero en Trello. Hay un solo campo para el título del tablero.

Empezarás con un tablero vacío. Utilice el cuadro "Agregar lista..." para crear columnas para sus tarjetas Kanban.

Captura de pantalla de la adición de una columna de tareas en Trello. El título de la nueva columna es editable y hay botones Guardar y X debajo.

Al hacer clic en "Agregar una tarjeta..." en la parte inferior de cualquiera de las listas, puede crear fácilmente una tarea. Cada tarjeta que cree debe representar una tarea que será ejecutada por un miembro del equipo.

Las tarjetas en Trello se pueden personalizar de muchas maneras:

  • Asignar miembros del equipo responsables de ejecutar una tarea
  • Codifíquelos con colores según las agrupaciones específicas que le gustaría agregar
  • Establecer fechas de vencimiento
  • Agregar archivos adjuntos
  • Agregue campos personalizados, como una lista de verificación, donde puede realizar un seguimiento del progreso de los elementos más pequeños que componen una tarea.
  • Los miembros del equipo pueden comentar en una tarjeta y todos serán notificados de cualquier cambio que se realice.

Captura de pantalla de la vista detallada de una tarjeta de Trello, que muestra su título, secciones para listas de verificación, comentarios e historial de actividades, y posibles acciones a nivel de tarjeta en una barra lateral.

La visualización lo es todo en Kanban, así es como se ve una tarjeta en el tablero:

Una captura de pantalla de la tarjeta anterior cuando se ve en el tablero de Trello, con los mismos elementos descritos anteriormente, pero que coinciden con los detalles de la tarjeta más reciente.

Con solo mirar la tarjeta, sin abrir la vista detallada, puede ver que:

  1. La tarea para configurar el repositorio de código de GitHub está a la espera de ser ejecutada en la lista de tareas pendientes.
  2. La tarea vence el 27 de enero.
  3. La tarea tiene una descripción.
  4. Hay un comentario sobre la tarea.
  5. Hay una lista de verificación de dos elementos, y ninguno de estos elementos se ha completado actualmente.
  6. La tarea se asigna al usuario DS, quien la recogerá a continuación.
  7. La tarea pertenece a un grupo de tarjetas de color verde, lo que significa que se requiere antes de iniciar el proyecto.

Tiempo estimado y complejidad del trabajo de desarrollo

La planificación y gestión de un proyecto es imposible sin comprender el esfuerzo y el tiempo necesarios para completar una determinada tarea. Sin embargo, una de las cosas más difíciles de hacer en el desarrollo de software es determinar cuánto tiempo llevará entregar un nuevo producto o función de software.

Scrum, uno de los principios ágiles más populares, se basa en gran medida en las estimaciones, ya sea que se basen en el tiempo o en "puntos de complejidad".

El equipo debe dedicar un tiempo considerable a determinar el alcance de la tarea.

Esto se debe a que Scrum se basa en intervalos de tiempo, cuando se espera que se complete un determinado grupo de tareas. Para planificar la entrega, debe tener una comprensión completa de todo el trabajo planificado para ese período de tiempo.

Kanban no se basa en entregas con plazos fijos y puede planificar la entrega diaria si lo desea. Se basa en optimizar el flujo, lo que significa que el enfoque del equipo es completar y vaciar la columna WIP lo antes posible.

El equipo no dedica tiempo a estimar el trabajo con mucha anticipación. Un desarrollador seleccionará el siguiente elemento de To-Do; completarlo lo antes posible; y retomar otra tarea.

Esto no significa que un equipo no deba estimar el volumen de su carga de trabajo.

Puede usar sus llamadas semanales o diarias para actualizar y verificar las fechas de vencimiento.

Sin embargo, para un equipo pequeño, es más importante asegurarse de que los desarrolladores estén trabajando en la tarea de mayor prioridad en un momento dado y que no haya cuellos de botella que obliguen a un desarrollador a pausar su trabajo.

Eventualmente, su proyecto crecerá y necesitará comenzar a estimar la cantidad de trabajo de desarrollo con más detalle. Cuando llegue a esta situación, dedique algún tiempo a leer nuestra guía para la estimación de costos de software en la gestión ágil de proyectos.

Prácticas de gestión imprescindibles

Hasta ahora, aprendió sobre la importancia de visualizar su proceso y limitar WIP, y cómo usar Trello para administrar su proyecto.

Sin embargo, un proyecto de software no solo se puede administrar con tarjetas y columnas. Por lo tanto, también es importante implementar las mejores prácticas ágiles:

  • Organice una reunión regular del equipo.
    Haga esto al menos semanalmente para revisar lo que se hizo y refinar y priorizar el trabajo pendiente (lista de tareas pendientes) si es necesario. De esta manera, todo el equipo recibirá actualizaciones al mismo tiempo y se podrán compartir ideas. En estas reuniones, es importante contar con una parte interesada del proyecto (cliente, director de tecnología de la empresa o cualquier persona del equipo del producto que pueda tomar una decisión y responder preguntas) para que eventualmente brinde comentarios no técnicos.

  • Asegurar una comunicación constante con los miembros individuales del equipo.
    Esto facilitará mucho el trabajo diario de todos. Mantenga estas reuniones o sincronizaciones muy breves y sencillas, basta con una actualización rápida en su programa de chat favorito. Es útil tener registros diarios, que podrían ser una reunión diaria de ~15 minutos que tenga con su equipo. En esta reunión, cada miembro del equipo habla por unos segundos diciendo:

  • Lo que trabajaron ayer.
  • En qué planean trabajar hoy.
  • Qué desafíos o cuellos de botella enfrentan.


Tome notas durante la llamada y preste atención para encontrar posibles problemas (bloqueadores, enfoque incorrecto en la tarea, desafíos técnicos inesperados) y trabaje en ellos con el equipo.

Bootstrap su proyecto de desarrollo de software

Si bien cada proyecto de desarrollo de software es diferente, hay ciertas tareas que encontrará en casi todos ellos. Estas son algunas de las tareas que debe planificar al iniciar un proyecto de desarrollo de software:

  • Configure el control de versiones del código y un repositorio.
    El seguimiento de los cambios y el control del código son extremadamente importantes, especialmente cuando se colabora en proyectos en los que varias personas actualizarán el mismo código.

    Uno de los servicios más populares para el control de versiones de código es GitHub. GitHub es un repositorio de control de versiones o Git basado en la web que ofrece todas las funciones de control de versiones distribuidas y administración de código fuente (SCM) de Git.

    Proporciona control de acceso y varias funciones de colaboración, como seguimiento de errores, solicitudes de funciones, administración de tareas y wikis para cada proyecto.

  • Defina una política de copia de seguridad de la base de datos.
    El uso de servicios como GitHub garantizará que se realice una copia de seguridad de su código con regularidad.

    Las bases de datos, por lo general, no forman parte de su sistema de control de versiones, y también debe configurar copias de seguridad frecuentes de la base de datos.

    El proceso de desarrollo es propenso a errores y es fácil cometer un error y actualizar los datos incorrectos durante el desarrollo. Tener una copia de seguridad le ahorrará el problema si ocurre tal problema.

  • Configure herramientas de colaboración y uso compartido de archivos.
    La documentación del proyecto, las especificaciones funcionales, los archivos de diseño y cualquier otra documentación y archivos que se utilicen durante el desarrollo del proyecto se actualizan constantemente y deben distribuirse a su equipo.

    Puede utilizar varios servicios diferentes para compartir estos archivos. Google permite una solución simple y rentable a este problema. Use Google Drive, Documentos de Google, Hojas de cálculo de Google y otras aplicaciones de Google para compartir y colaborar en archivos.

  • Configure servidores de desarrollo y prueba separados.
    El proceso de desarrollo debe continuar en todo momento.

    Los desarrolladores no deben esperar los resultados de las pruebas de la aplicación y deben continuar trabajando en sus asignaciones mientras Control de calidad revisa las funcionalidades completas.

    Al mismo tiempo, el cliente debería poder comprobar el estado actual de la aplicación en cualquier momento, sin esperar al equipo de desarrollo. Tener un servidor de prueba dedicado que se actualice regularmente eliminará todos los cuellos de botella en este proceso y garantizará que su equipo funcione sin interrupciones.

  • Defina una hora fija para las llamadas semanales del equipo y una hora fija para las llamadas o chats diarios de recuperación del equipo.
    Haga que todos los miembros de su equipo programen una hora en su calendario para llamadas y reuniones. Esto le da a su equipo un horario estable sin interrupciones en el trabajo.

Quitar

La gestión de proyectos es una actividad compleja y, con demasiada frecuencia, muy estresante. Agregarle estructura y hacer que el estado del proyecto sea visible y preciso en todo momento alivia gran parte de este estrés. Emplear el método Kanban y los principios ágiles, combinados con las herramientas adecuadas, le ahorrará mucho tiempo.

Dicho esto, no existe ninguna herramienta o metodología que compense el tiempo que usted, como gerente de proyecto, debe dedicar a administrar el proyecto.

Y el hecho de que un proyecto sea pequeño no significa necesariamente que requiera menos tiempo. Esta mentalidad es una gran receta para un gran dolor de cabeza en el futuro.

Aquí hay una lista de verificación simple para ayudarlo a verificar si su proyecto se está administrando adecuadamente o no:

  1. ¿Se visualiza correctamente su proceso?
  2. ¿El WIP para cada miembro del equipo está limitado y minimizado?
  3. ¿Su equipo tiene una reunión programada constantemente, ya sea semanal o diariamente?
  4. ¿Se actualiza periódicamente su tablero Kanban?
  5. ¿Tiene un repositorio de código en su lugar?
  6. ¿Ha programado copias de seguridad de la base de datos?
  7. ¿Ha configurado herramientas de comunicación y colaboración en equipo?
  8. ¿Está su entorno de desarrollo separado de las pruebas, la aceptación y la producción?

Tenga en cuenta que esta lista está lejos de ser definitiva y completa; es sólo el comienzo.

Deje sus comentarios y comparta sus consejos y prácticas con los gerentes de proyectos que recién comienzan su viaje interminable de empoderar a los equipos de desarrollo de software.