Cómo mejorar como RPA Developer 🤖
Una mirada desde mi experiencia como desarrollador de software
Hey, por acá Danilo👋
Bienvenido a la primera edición de Robotipy. En esta ocación te cuento desde mi perspectiva como desarrollador de software y desarrollador RPA, 5 puntos que debes saber para empezar o mejorar como RPA Developer.
Desde hace un tiempo, una de las consultas que me han hecho es como comenzar a construir robots, o que aprender técnicamente para mejorar en el mundo del RPA.
Acá te comparto mi perspectiva y consejos para ayudar tanto a quienes están comenzando en RPA, como a quienes buscan mejorar sus habilidades y conocimiento.
Utilizaré esta publicación como guía para las siguientes publicaciones donde entraré en más detalle en cada uno de los puntos. Espero que encuentres útil esta información!
🧑💻 Aprende a programar
No necesitas ser experto en programación, pero tienes que tener una sólida comprensión de la lógica.
Hoy en día los software de RPA permiten automatizar procesos sin escribir código, pero saber programar en lenguajes como Python, Javascript o C# te darán una clara ventaja
Te recomiendo comenzar con el lenguaje de programación de tu RPA de preferencia y comenzar a armar script sencillos. No pierdas tiempo construyendo software, automatiza un proceso desde cero con código puro.
Nota👀: Scripts = Código
Algunos conceptos que tienes que saber:
Condiciones, bucles y control de errores
Diferencia entre un For y un While
Cuando usar un If y cuando un try catch
Tipos de variables
Librerías más usadas según el lenguaje de programación que te interese
Una librería transversal al lenguaje de programación es selenium. Una librería para automatizar el navegador y hacer webscraping
🤔 Entiende los sistemas que automatizas
Ya sean aplicaciones web o desktop, apis o terminales, tienes que entender como funciona lo que quieres automatizar.
Dedica tiempo a conocer a fondo las herramientas y sistemas que controlarás en tus automatizaciones, y con el tiempo serás cada vez más eficiente a la hora de desarrollar.
Para mí existen 4 tipos de sistemas o aplicaciones para controlar.
🌐 Aplicaciones web: Aplicaciones que corren sobre navegadores como Chrome, Firefox, Zafari
💻 Aplicaciones Desktop: Aplicaciones que instalas en tu máquina como SAP o Excel
🔗 APIs, protocolos: Interfaz que te permite interactuar con un sistema. Acá podemos incluir Email, FTP, APIs Rest
🗄️ Bases de datos: Herramientas para guardar información de forma organizada
📟 Terminales: Aplicaciones que corren sobre una terminal como AS400
Veamos que tienes que conocer para cada uno
🌐Aplicaciones Web
Cuando se trata de automatizar aplicaciones web tienes que familiarizarte con conceptos como Xpath, Iframes, etiquetas HTML, estilos en CSS, Captchas.
Además, comprender las herramientas para desarrolladores y cada una de sus pestañas. El inspector de elementos, la consola y la pestaña network tienen que ser tus mejores aliados a la hora de controlar el navegador
Escribí acerca de como puedes crear tus xpath aquí 👇
💻Aplicaciones Desktop
Automatizar aplicaciones de escritorio es todo un mundo diferente a web. Mientras que la construcción de una página web se centra en su mayoría en HTML, CSS y Javascript, las aplicaciones de escritorio pueden ser construidas con diferentes tecnologías.
Clasifiquemos las aplicaciones en 3 tipos según la forma de automatizar
Con APIs o Scripting propio — Te permiten acceder a los métodos internos particulares. Acá encontramos aplicaciones de MS Office como Excel o Word y aplicaciones SAP como SAP R3 y SAP B1.
WinForms, JavaForm y Scripting — Son similares a una página web por tener un “selector” para cada elemento en la aplicación. Acá podemos incluir apps de Oracle Forms o la mayoría de apps creadas en C#
Electron y virtualización — Acá dejaremos el resto de aplicaciones. Apps que no permitan scripting donde tendrás que controlarlas utilizando el mouse y tomando captura de pantalla para llegar a cada uno de sus elementos
Aprender a diferenciar este tipo de aplicaciones te ayudará a evitar errores y retrasos en el desarrollo. En siguientes publicaciones explicaré más en detalle, trucos para automatizar cada una de estas aplicaciones
🚨 En mi experiencia, virtualización o coordenadas absolutas debes ser siempre tu última opción.
Investiga si tu software de RPA cuenta con Grabadores o componentes para automatizar la aplicación que necesitan y utiliza esas opciones
🔗 APIs y protocolos
Las APIs te ahorrarán un montón de trabajo! Si el sistema cuenta con una API puedes evitar perder tiempo haciendo webscraping para manejar información y comunicarte directamente con el sistema sin necesitar una interfaz gráfica.
Al trabajar con APIs es escencial que te familiarices con estos conceptos:
Métodos HTTP (GET, POST, PUT, DELETE)
Formatos de respuesta (JSON, XML)
Autenticación (API Keys, Tokens, OAuth)
Además de las APIs, entiende como funcionan otros protocolos como FTP o SMTP para automatizar tareas relacionadas a la transferencia de archivos o correos y cuando te enfrentes a un nuevo proceso para automatizar, en lugar de automatizar la aplicación que usas, verifica si existe una API o una forma de enviar y extraer información directa, esto te ahorrará muchos dolores de cabeza.
🗄️ Bases de datos
Las bases de datos son el corazón de muchas empresas y conocer como funcionan es clave. Conocimientos que necesitarás son:
Consultas. SELECT, INSERT, UPDATE, DELETE, etc
Tipos de base de datos y configuración de drivers
Optimización de consultas
Stored Procedure
Aprende los conceptos base de SQL y podrás hacer casi todo con base de datos.
📟 Terminales
Las aplicaciones basadas en terminal o las llamadas “aplicaciones legacy” pueden ser un dolor de cabeza para algunos desarrolladores RPA ya que no es tan visual y en algunos casos se tiene que usar solo el teclado. Acá algunas cosas a tener en mente:
⏩Aprende los shortcut de la aplicación. ¿Para que moverte con las flechas a una opción si puedes hacer lo mismo con dos teclas?
🖥️ Evita automatizar la terminal y busca controlar un emulador “en segundo plano”
✳️Aprende a usar expresiones regulares y otras técnicas para procesar y extraer texto
🧩Expresiones regulares
Conozco pocas personas expertas en expresiones regulares (o RegEx) así que basta con que sepas que son y aprendas lo básico.
Las Regex son una herramienta poderosísima que te permiten buscar, extraer y modificar textos de manera más rápida y eficiente que otras formas para procesar el texto
Existen páginas especializadas donde puedes probar tus regex y te generan el código en el lenguaje de programación que quieras. Mi favorita es Regex101 porque puedes acceder a referencias y te explica las expresiones que usas.
Si quieres explorar a fondo, escribimos un post sobre esto:
Aquí dejo algunas cosas sencillas que tienes que aprender:
Carácteres especiales: Algunos carácteres tienen un significado especial en RegEx, como
.
(cualquier carácter),^
(comienzo de la línea),$
(final de la línea) y\
(escapar otros caracteres especiales).Cuantificadores: Los cuantificadores te permiten especificar la cantidad de repeticiones que estás buscando. Por ejemplo,
*
(cero o más),+
(una o más) y{n}
(exactamente n repeticiones).Grupos: Los grupos te permiten agrupar caracteres y aplicar cuantificadores a esos grupos. Los grupos se crean utilizando paréntesis
()
. Por ejemplo,(ab)+
buscará una o más repeticiones de "ab".Conjuntos de caracteres: Los conjuntos de caracteres te permiten especificar un conjunto de caracteres para buscar en una posición. Se crean utilizando corchetes
[]
. Por ejemplo,[aeiou]
buscará cualquier vocal.Alternancia: La alternancia te permite buscar una de varias opciones. Se realiza utilizando el símbolo
|
. Por ejemplo,ab|cd
buscará "ab" o "cd".
A medida que vayas usando expresiones regulares se te hará más sencillo
🔎 Profundiza en el funcionamiento de los ambientes
Cada semana veo algún desarrollo que ha tomado meses de esfuerzo, fallar en producción por no saber como funciona el ambiente donde trabajará el robot. Dedica tiempo a conocer el ambiente donde jugará tu robot antes, durante y después del desarrollo.
Antes de escribir la primera línea, echa un vistazo al ambiente de producción o pregunta si es necesario. Muchas veces asumimos cosas que pueden ser obvias y luego tenemos sorpresas. Te dejo algunas preguntas que hago (o me hago) antes de comenzar a programar
💽Sistema operativo: Parece absurdo pero es importante saber cual es el sistema operativo donde va a correr tu robot. En algunos casos no solo es importante saber si es Windows o Linux, sino también saber que versiones o distribuciones
📊Aplicaciones: Asegurate de usar las mismas aplicaciones donde se ejecutará el robot. Si tu robot lee hojas de cálculo con Excel, la máquina de producción tiene instalado y licenciado Office?
📏Políticas de la máquina: Esto es importante! La máquina se apaga, reinicia o suspende? Tu robot podrá trabajar sin una sesión activa o una interfaz? Existen bloqueos de red, vpn, proxies? Estas preguntas pueden ahorrarte varios días de ida y vuelta en tu paso a producción
🤼Ambiente compartido: Ten claro si la máquina o cuentas serán utilizadas por otros usuarios o robots, y si es posible coordinarte con ellos. Si tu proceso no permite paralelismo tienes que coordinar horarios para asegurarte que no interfieran entre si
🎯Resolución de pantalla: Algunos procesos pueden ser sensibles al cambio de resolución y si la máquina donde correrán no permite usar tu resolución en desarrollo, será un problema grande!
🧹Se ordenado y proactivo
El RPA no es solo hablidades técnicas, también es importante tener buena organización y comunicación. Sé ordenado desde el inicio y todo será más fácil.
📑 Trabaja siempre con un Diagrama de Flujo
A veces entendemos rápido el proceso que tenemos que automatizar y comenzamos a desarrollar nuestros robots de inmediato. Días después no recordamos lo que hicimos o cual es el flujo que tenemos que seguir.
Para evitar esto, diagrama los procesos desde el principio. Esto te ayudará a mantener un registro de lo que tienes que hacer, podrás visualizar cada una de las partes que tiene que tener tu robot y asegurarte que entendiste lo que necesita el cliente
📝 Crea una documentación
Una de las cosas más importante y a la vez olvidadas en el mundo de la programación, es la documentación. Documenta todo, lo requerimientos iniciales, los cambios realizados, el funcionamiento del robot y como mantenerlo.
Sé que a veces no hay tiempo, pero documentar, a largo plazo, es ahorro de tiempo
📣 Mantén los stakeholders informados
En tu proyecto hay mucha gente involucrada: el cliente, el dueño del proceso, el líder técnico, la parte comercial, etc.
Mantén a todas estas personas informadas del progreso de tu robot, cambios de requerimientos o problemas que surgan y copia a quien sea necesario en los correos (ante la duda, agrégalos a la copia)
💡Mantén comunicación con otros desarrolladores de tu equipo y comparte nuevas soluciones o ideas que encuentres. Un problema recurrente en equipos de RPA es la creación de islas de equipos, evítalos tanto como puedas.
🧱 Modulariza tu Robot y Sigue buenas Prácticas
Es importante que tu robot esté bien estructurado y sea fácil de leer.
Hace unos meses compartí en mi Linkedin un post de Ganesh Bhat que habla sobre los Beneficios de modular robots de RPA donde suguiere dos método: basado en pantallas y basado en lógica de negocios.
Estos enfoques te ayudarán a construir robots más manejables, pero más allá de la estructura que elijas, lo importante de la modularización de tus robots (crear subrobots o bots hijos) está en como te permiten construir robots que sean escalables y flexibles. La modularización te permite modificar, reutilizar y escalar partes sin tener que revisar todo el funcionamiento del robot. Ahorras tiempo y esfuerzo.
Y eso es todo por hoy! Si consideras que olvidé compartir algún punto, te invito escribirme un comentario y ahodamos más en ese punto en las siguientes publicaciones.
Si encontraste valor en este newsletter, considera compartirlo con tu equipo ❣️
Ten una gran semana! 🚀
Danilo
Está bueno!
Perfecto