Building RPA skillset
Glimpse at decades of RPA
The faster and more efficiently a company can deliver a service, the wider its margins. Outsourcing increased margins in the 80s and 90s by moving functions to lower cost labor markets. IT projects in the late 90s and 00s automated functions by turning manual functions into custom lines of code.
Both delivered linear improvements to efficiency, but both required significant capital investments. RPA has grown in popularity because it requires less capital expense and lets business people integrate systems that don’t have usable APIs, but businesses have found that maintaining rule-based RPA is costly due to exceptions and constaint bot retraining.
The last frontier in business efficiency is the automation of decision-based cognitive work, which represents 60 to 70% of the typical business process in most industries.
In this article we would like to share thoughts about skills needed to be a good RPA Developer nowadays. Often we notice a bit of confusion about what it means to be a RPA Developer, especially when many tools are claiming to be ‘no code’ or ‘low code’ solutions, which might be a bit misleading.
Some RPA vendors claim that anyone can become a RPA Developer, that you can relatively easy retrain people from the business operation teams and they eventually become decent developers. While we can name a few examples where it has happened we wouldn’t bet on it as a mainstream approach for a few reasons we will describe later.
Let us start with a bit of history. Around 5-10 years ago a big wave of Business Process Management (BPM) tools appeared on the market and fought for attention of IT executives. One of the main selling points of BPM was an ease of configuration of the tool and a ‘no code’ approach. There were plenty of showcases how a good business analyst can easily configure BPM systems on the flight to create a new workflow and literally create new applications from scratch, almost in no time. There were plenty of buzz happening that finally anyone from the business operations side would be able to automate their business processes and business executives were over the moon with uncovered opportunities. While all these things were happening, in the background a new armies of hardcore BPM developers with Java skills were raised and successfully deployed for the same clients who were so successfully bought into the idea of business operations create their own apps.
Why this happened and is RPA going to follow the same path or there is something fundamentally different this time? In order to answer this question let us investigate what skills involved in RPA development, why they are so important and how these skills can be learnt.
Typical RPA development
Design and build workflows of robots
Skills needed:
- Basic workflow design skills: decision diamonds, decision trees, decision tables, state machines
- Familiarity with UML diagrams, understanding of BPMN notations
Importance: Having the ability to draw Visio diagrams is not enough to build robots workflows. They should be built with 100% accuracy, all possible infinite loops must be identified and resolved, all possible paths should be well thought of and test cases for all of them must be created.
Ways to learn: Computer Science degree should cover this topic. Without it, courses in business process modelling and optimization should be taken together with a specific course on BPMN and design of computer algorithms.
Build activities to search for particular UI elements and perform operations on them
Skills needed:
- Knowledge of XPath
- Advanced understanding of Document Object Model, familiarity with HTML tags, JavaScript and Java awareness and ability to write JavaScript code when necessary. Ability to search using relative elements is indispensable
Importance: Searching for an element on the web-page is not usually just pointing at a web-page element in the recorder and using it by default. Quite often we have dynamic web-pages or pages powered with JavaScript, so knowledge of Document Object Model (DOM) and reading of Source Code of the page is a must for every RPA developer. Let us look at an example. If you have an element with dynamic ids, then you have two options:
- Use a relative place of this element on the webpage DOM, something like XPath would help here.
- Use a label to search for an element, which would involve creating a set of selectors. Both of these cases assume a developer knows HTML code and a tree structure of the page as well as understands why IDs of an elements might be dynamic and what consequences it would have on a robustness of a robot. We don’t want to increase the burden for our RPA support team.
Ways to learn: A couple of courses in web development will be extremely useful. At least one of them should cover JavaScript and dynamic layouts.
Perform operations with numerical data
Skills needed:
- Understanding types of variables, arrays, dictionaries
- Ability to perform operations on datasets. Understanding scope of variables is an essential skill
Importance: Computers operate differently to humans and while one can copy exact steps of a person when doing calculations, like clicking particular fields and keystrokes in MS Excel it won’t be the most efficient neither the most robust way of calculation. Every so often I see an example of using RPA tool on a big array of data in MS Excel and iterating through it either cell by cell or by using keystrokes and mouse clicks. The former option is so slow that it might ruin the whole business case while the latter option is too brittle to be considered seriously.
Ways to learn: Computer Science degree should cover this topic. Without it, basic programming courses with any language (Python is a good one for new learners) and at least six months experience in development of algorithms would suffice.
Perform operations with text
Skills needed:
- Advanced knowledge of string operations
- Fluency in using regular expressions (regex)
Importance: Most of RPA implementations use text as an input or output. In the most cases this text should be processed with some string operations or regular expressions, like extracting dates, addresses, VIN numbers, account numbers, and so on. A properly applied regex can save hours and days of work trying to parse through the text, so it is an absolute must to learn it by heart.
Ways to learn: Practice, practice and practice. One can start with a basic programming course, but this thing comes only from a real practice use.
Perform operations with databases
Skills needed:
- Advanced knowledge of SQL
- Understanding relational database structures
Importance: Quite often data that bots can use is available in company-wide databases, most of which are relational. While humans usually access this data through the built-in reports, it might be by far more efficient for bots to read this data through proper SQL-queries. That will speed up bots operations and make them significantly more robust. When there are many bots implemented it is a good idea to store data about their performance, exceptions encountered and tasks processed in a database, so later it can be properly analysed and used to improve robots efficiency.
Ways to learn: Computer Science degree should cover this topic. Without it, a basic course on a relational database design and SQL is a must to learn.
Debug and test robots
Skills needed:
- Basic knowledge of debugging methods
- Understanding testing concepts like equivalence classes and boundary testing
Importance: Robots are not always work as you planned from the first time, hence one need to a have a solid understanding of how to find bugs in the code, script, or workflow depending on the tool. You need to know how to isolate a piece with error, how to find a culprit and how to make sure that this won’t happen again. To put a proper amounts of tests in place one need to know how to identify edge cases and how to identify only tests that are really needed for a particular bot.
Ways to learn: A good book and a course regarding Testing should be handy. I also can’t imagine mastering testing without a real practice with applications, hence at least six months development and testing experience needed to get a sense of it.
Overcome software glitches
Skills needed:
- Advanced knowledge of Microsoft Windows
- Being able to perform minor administrative tasks on the system and applications
Importance: This particular topic is by far the one who missed from any education programs. There is always, always issues with different software. Sometimes RPA software doesn’t work as it supposed to and one need to find why. Sometimes a setting on the 10th tab might not be a correct one, sometimes you just need to restart the system, sometimes you need to uninstall and install back a particular service. I once had a long list of weirdness's that might happen with RPA tool, but my laptop decided it is better for my mental health to lose it. Overcoming system issues is not an exception in RPA developer work, it is a significant part of it and one need to love it or at least being able to cope with it.
Ways to learn: This thing comes with years of practice with different tools on different operating systems in different environments. While there are theoretical courses on computer architecture and particular OS ‘under the hood’ I don’t think there are any shortcuts exist to this piece. One just need to love to work ‘under the hood’.
Integration via APIs
Skills needed:
- Advanced knowledge of XML and XSD; JSON
- Understanding of REST usage
- Familiarity with SOAP
Importance: In most of the cases all integration in RPA bot happens on UI layer of systems, but every so often there is a need to send API request or being triggered by API if it already exists. These can make a vital difference for a particular project when this need arise.
Ways to learn: A real practice of development enterprise-ready IT systems or being a part of this environment is essential. The courses of modern software development might be useful.
Summary
Let us stop here on the 8 main activities any RPA Developer would perform on a daily basis. None of these activities have actually involve coding itself, so they should fit ‘no code’ or ‘low code’ category of RPA tools.
Is it possible to learn all of it by people from business operations side? How long it might take to actually learn and master them?
In a nutshell, I think it all boiled down to a motivation, persistence and sense of enjoyment in the area one is going to work in and not an essential quality of the tools being ‘no code’ or business-users friendly. In our opinion, there is no fundamental difference between being RPA tool or being BPM tool or even being a set of tools for Machine Learning. All of them are possible to learn, but neither of them are easy to learn and it won’t happen in a couple of weeks or a couple of months. It is a persistent hard work over a long period of time, but it doesn’t matter if one is enjoying the process.