Indice de contenidos
Seiri (Separar)
Esta primera fase consiste en separar lo necesario de lo innecesario. Definiremos como algo necesario los elementos que se necesitan a corto y medio plazo.
Cuando tengamos dudas de si un elemento es necesario los identificaremos. Una vez identificados fijamos un periodo de tiempo, si no es usado durante ese periodo lo marcaremos como innecesario. Todos los elementos innecesarios serán eliminados.
A continuación nombraré una serie de elementos que bajo mi experiencia son innecesarios en el mundo del software, aunque seguro que se os ocurren muchos otros:
- Documentación física o en línea que no se usa.
- Código fuente en ramas que ya no es necesario.
- Código que no es ejecutable o comentado.
- Comentarios desfasados.
- Procesos. servidores, scripts que ya no se usan.
- Requisitos que ya no son necesarios.
- PBIs obsoletos.
Como mínimo, eliminar estos elementos, repercutirá en un menor mantenimiento y una disminución de los errores.
Seiton (Ordenar)
Tal y como indica Lean 5S, el orden redunda directamente en la disminución del tiempo de búsqueda. También facilita detectar si falta algún elemento necesario. Esta fase se puede resumir en la frase “Un lugar para cada cosa y cada cosa en su lugar”.
Para llevar a cabo este paso primero tendremos que determinar cómo vamos a ordenar las cosas. Tendremos que poner las cosas que más usamos más accesibles, como los accesos directos en el escritorio.
Una vez acordado habrá que preparar los elementos conforme al orden establecido. Si por ejemplo, queremos un orden con los distintos pipelines de jenkins.
Tengamos en cuenta que el orden puede ser relativo a una posición, donde colocamos las tareas urgentes, o a una cantidad, cuantas tareas pueden estar en ejecución a la vez.
Además tendremos que ilustrar de alguna forma el orden acordado. La recomendación a este respecto es que sea lo más visual posible.
Por último, y no menos importante, tendremos que mantener esta cultura del orden manteniéndolo de forma cotidiana.
A parte de las ya comentadas, añadiré otros ejemplos a continuación:
- Nombre de los paquetes, clases e interfaces.
- Estructura de documentación.
- Lugar donde se ubican los post-it, rotuladores además de diseñar un sistema que permita visualizar cuando necesitamos adquirir más.
- Bibliografía y documentación de referencia.
- El Product Backlog y el Sprint Backlog
En este punto quería compartir una anécdota. En uno de mis primeros trabajos mi Jefe de Proyecto nos obligó a mantener una estructura de directorios igual a todos los miembros del equipo. A lo largo de mi vida profesional, he terminado echando de menos ese orden cada vez que necesitaba el ordenador de un compañero.
Seiso (Limpieza)
El objetivo de esta fase es limpiar el entorno. De esta forma será más sencillo encontrar cualquier desperfecto. Esta limpieza debe ser asumida como parte del trabajo diario para garantizar que el entorno esté siempre limpio. La idea detrás de esta fase es la anticipación para prevenir defectos.
Tras esta fase hay muchas de las ideas detrás de Clean code como por ejemplo:
- Mantener nombres significativos
- Eliminación de comentarios innecesarios.
- Mantener clases, funciones y métodos pequeños.
Además podemos pensar en otros sitios donde tendríamos que limpiar:
- Directorios y archivos temporales.
- Test que prueban demasiadas cosas.
- Capturas de pantalla o referencias a versiones antiguas.
- Versiones de librerías.
- Funcionalidades que ya no se usan.
Aquí además yo incluiría la calidad de los test. Unos buenos test automáticos son la primera barrera para prevenir defectos.
Seiketsu (Estandarizar)
Una vez ejecutadas las primeras fases de Lean 5S llega el momento de la estandarización. Esto supone buscar un método para garantizar que los tres pasos anteriores se puedan mantener.
Es cierto que, a veces, en el mundo del desarrollo huimos de la estandarización. Pero si no mantenemos ciertos estándares todo el trabajo realizado anteriormente se habrá perdido, algunos de ellos pueden ser:
- Cobertura mínima de código.
- Acuerdos sobre código estático (líneas máximas, complejidad ciclomática…).
- Formato de la documentación y de las capturas de pantalla.
- Nomenclatura.
Por suerte en el mundo del desarrollo existen herramientas que nos pueden ayudar a contestar a alguna de estas preguntas de forma automática.
La importancia de esta fase es ser capaz de detectar rápidamente si nos estamos alejando del estándar. Por este motivo tendremos que buscar la forma de poder visualizarlo ya sea en monitores, paneles etc.
Shitsuke (Disciplina)
Podría resumir esta fase de Lean 5s como realizar auditorías y ejecutar acciones correctoras. Obviamente el objetivo de esta fase es mantener en el tiempo lo conseguido en las anteriores.
Para ello es necesario buscar un conjunto de herramientas o de procesos que permitan comparar el estado actual de nuestro desarrollo con el estándar que habíamos marcado.
Conclusiones
Aunque Lean nació en la industria, sus herramientas se pueden aplicar al mundo del software. Su aplicación, sin duda, repercutirá en la mejora que se observa en otros sectores donde ya aplican Lean 5S.
En este post he ilustrado algunos ejemplos aunque estoy seguro que muchos de vosotros podéis añadir muchos más.
Creado por mi amigo Jose Manuel Gomez Fraile