Pasos para automatizar un proceso — De la idea a la entrega
Lunes de Bots & Bytes — Edición #05
Hola, por acá Danilo👋 Bienvenidos nuevamente a un Lunes de Bots & Bytes 🤖
Un espacio donde comienzo los lunes enviandote un email con una idea breve de lo que haya aprendido o charlado durante la última semana acerca de Automatización y Tecnología.
Si te interesa leer acerca de automatización y tecnología, te invito a suscribirte.
Es muy común que el ritmo en los proyectos en tecnología vengan acompañados de urgencia y presión para terminar todo “para ayer”. Bajo este contexto, muchas veces caemos en la trampa de comenzar a desarrollar lo más rápido posible, sin una buena planificación.
En los últimos meses, he tenido que intervenir en varios desarrollos de RPA, porque han sido mal estructurados o porque el desarrollador se ha ido sin terminar el proyecto.
Sea cual sea el caso, el problema es el mismo. Se inició el desarrollo sin planificación y no se dejó una buena documentación.
Los proyectos no son estáticos, los proyectos van evolucionando
Lo que se ve en los requisitos o en los levantamientos iniciales, no siempre es lo que será el resultado final.
Por eso, tomarse unos días para estructurar correctamente el código desde el inicio es importantísimo. De esta forma, si ocurre algún problema o cambio de requisitos, podemos adaptarnos sin que el proyecto sea un desastre.
Es fácil comenzar con las mejores intenciones y terminar con un monstruo de Frankenstein.
Esta es la metodología que hemos adoptado en Robotipy.
Etapa 1: Levantamiento inicial con el usuario
El levantamiento inicial es la reunión donde se muestra el paso a paso de como se realiza la tarea a automatizar y se explica el por qué de lo que se realiza.
El desarrollador TIENE que entender el por qué se realiza cada paso. En el desarrollo habrá que quitar, agregar o modificar pasos para entregar una automatización eficiente y si el desarrollador no entiende lo que hace el usuario, se apegará a replicar paso a paso el camino feliz
⚠️Si has intervenido menos de 5 veces en un levantamiento, lo hiciste mal
Indaga en el proceso, haz las preguntas tontas. Mientras más específico seas en la etapa inicial, menos problemas tendrás después.
En esta primera etapa es importante que asistan al menos dos personas a la reunión:
Quien realiza la tarea cada día
Alguien con experiencia en automatización
No se imaginan cuantos desarrollos comienzan con una explicación vaga de alguien que no realiza la tarea o son levantados por alguien que no sabe como funciona un robot.
💡No olvides grabar la reunión. Siempre ten un registro de lo que se pidió.
Etapa 2: Planificación
Ya teniendo claro el proceso, lo siguiente es la planificación de lo que se hará en el ciclo de vida del proyecto.
Esta etapa la podemos dividir en 2 subetapas: diagramar y estimar.
Diagramar
Diagramar te permite tener un mapa claro de todos los pasos que debes seguir; evitar que vuelvas a ver el video todo el tiempo y algo muy importante: Alinearte con el usuario.
Luego del levantamiento, el usuario cree que explicó todo y/o tu le entendiste, tú crees que te explicó todo y/o le entendiste. En medio del desarrollo, se dan cuenta que nunca fue así.
Por eso es importante que tu diagrama sea lo más detallado posible. Es mejor tener un diagrama así 😉👇
Que tener uno así 🤨👇
La diferencia entre ambos es obvia. En la primera, puedes comunicar fácilmente si entendiste el flujo y el usuario podrá aprobarlo con confianza.
En el segundo diagrama, el usuario no sabrá si realmente lo que entendiste como “Descargar fichero” es lo que realmente se debe hacer.
Por último, un diagrama detallado te protege ante los cambios. ¿Que ocurre si en algún momento la página cambia? Tienes el diagrama con los pasos aprobados por el cliente y no queda solo en un “Descargar archivo”.
Estimar
Con el diagrama listo, lo siguiente es estimar cuanto tiempo nos tomará desarrollar el proceso.
Esta parte no es sencilla, están involucrados varios factores, y por eso me hice una fórmula para calcular en cuantos días estará un desarrollo.
Lo importante acá es encontrar todos los factores que estarán involucrados. Cuantos desarrolladores, reuniones semanales, días para paso a producción, documentación, tiempo de investigación, etc.
Por eso es importante la etapa anterior, al ver el detalle de cada paso, puedes entender como realizar cada parte. ¿Existe un componente, una API, librería? Todo esto afecta el tiempo de desarrollo.
Anota todo en un diagrama o tabla — ahora si con menos detalle — que te sirva como registro de avance. Así puedes ver rápidamente si vas atrasado o no con el desarrollo
Etapa 3: Desarrollo
Si el usuario ya te dió el OK con los pasos anteriores, toca ponerse manos a la obra.
Dependiendo del lenguaje o la herramienta que uses para automatizar, puedes tener un framework que te haga más facil estructurar el desarrollo.
Lo importante acá es seguir siempre la misma estructura para tener coherencia entre tus proyectos y así sea más fácil modificar el robot.
En algún momento ahondaremos diferentes formas de estructurar un robot, pero a mi me gusta resumirlo en 3 niveles: Iniciar, procesar, terminar.
▶️Iniciar: Creamos funciones que agrupen toda la lógica que necesita el robot para iniciar — Descargar archivos iniciales, crear variables globales, conectar con servicios, crear carpetas, etc.
🗳Procesar: Funciones con toda la lógica core del proceso — Si han desarrollado con UIPath, podriamos agrupar el Get Transaction y el Process Transaction aquí
🛑Terminar: Funciones con todo para terminar el proceso — Cerrar las aplicaciones abiertas, enviar los correos de notificación, eliminar archivos temporales, etc.
💡Recuerda dividir estos 3 niveles en funciones o subprocesos más pequeños para mantener un código limpio y escalable.
Cada una de estas tres etapas deben incluir logs que te permitan saber en que parte del flujo estás, que fila/documento/dato estás procesando e información que pueda ser útil al momento de debugear.
En esta parte te puede ayudar usar patrones o principios de diseño. Hace un año escribí como poder aplicar SOLID en RPA 👇
Etapa 4: Documentación y Entrega
Esta última etapa es igual de importante que el desarrollo y es la menos valorada. Diría incluso olvidada.
La documentación no solo ayuda al cliente, sino a todos los desarrolladores que interactuarán con el robot a futuro
🧠 La memoria es frágil y siempre se cumplirá la ley: Desarrollo entregado, desarrollo olvidado.
Se bueno documentando y serás un buen desarrollador
Esto es lo que deberías incluir en tu documento:
Descripción — Una descripción del proceso, con el propósito y que valor aporta.
Flujo del proceso — El documento final tiene que incluir el flujo aprobado por el usuario, además de los pasos detallados realizados por el robot.
Esto te protegerá ante errores por cambiosEstimación realizada — Esto ayudará al usuario a entender los tiempos de entrega y cualquier posible variación en el cronograma
Estructura de archivos — Explica como se organizan las carpetas y archivos que necesita el proceso, como logs, scripts, modulos, ejecutables. No saben cuantos proyectos fallan porque el TI borra archivos porque sí.
Como ejecutar el robot — Instrucciones de los pasos que se tienen que seguir para ejecutar el robot. Ejecutables, orquestadores, etc.
Limitantes — Acá debes colocar cualquier limitación que tenga el proceso automatizado. Por ejemplo, necesitar una interfaz gráfica
Responsables — Incluye un listado de las personas involucradas en el proceso. Los desarrolladores, PMs y usuarios.
Registro de cambios — Historial de las actualizaciones que se realizan en el robot. Incluye versiones y una descripción de por qué y qué fue modificado
Si te fijas, estos pasos pueden ir realizandose desde el inicio del proyecto. No necesitas esperar para el paso final, pero si debes dedicar un tiempo al finalizar el desarrollo para redactar una buena documentación.
Existen desarrollos que pueden durar meses, y cada uno de estos pasos involucra subtareas igual de importante que iremos abordando más adelante.
Trata de encontrar tu forma de trabajar que te permita entragar un desarrollo de calidad y a la vez te permita tener una estructura similar.
Y eso es todo por hoy! Si encontraste valor en este newsletter, considera alguna de estas cosas:
1) Suscribete a mi newsletter — Si aún no lo has hecho, considera convertirte en un suscriptor pago. Puedes ver más sobre los beneficios dando clic acá:
2) Lee con tus colegas — El mejor agradecimiento es tu recomendación. Comparte este artículo con tu compañero que le pueda interesar y consigue membresías gratuitas a través del programa de referido
Ten una gran semana! 🚀
Danilo
Excelente contenido, aun con años trabajando en automatizaciones, la parte de estimar se me va de las manos en ocasiones, y creo que es de resaltar un punto:
"Lo importante acá es seguir siempre la misma estructura para tener coherencia entre tus proyectos y así sea más fácil modificar el robot."
Creo que dicha frase incluso es igual de importante para la hora de estimar... Gran tip.