Inside The Rocketship
Viorel Canja on What You Should Know about Working as an Engineer at UiPath
We have some talented colleagues in R&D. They are passionate, they are resourceful and they're willing to create something that’s never been created before. And because they work on such interesting projects, we want to share more of that with you, our readers.
We have three main hubs at UiPath based in Seattle, Bucharest, and Bengaluru (Bangalore) and six smaller ones in Lviv, Cluj, Hyderabad, Netherlands, Denver, and Brooklyn. Our teams take care of different parts of our end-to-end automation platform, but they all have the same goal: to deliver the best automation product out there.
We spent some time with Viorel Canja, VP Software Engineering, to go through some of the questions he got, either while interviewing for his team or in different conversations.
The UiPath platform offers our customers the opportunity to build their own automations. We provide them with a low-code environment and a set of tools to interact with the applications they want to automate. Our API covers a series of automation methods, including the application UI. No matter if you want to automate a Windows, Web, Android or IOS application, you can now use a common set of components.
In most companies, the way the business processes are built with manual steps or repetitive tasks brings a lot of inefficiencies. If these are eliminated, the entire process can become faster and more efficient. We help our customers win back their time and use it to design new products, projects or services or to spend it on more strategic areas.
We automate activities that are easy to process by a human but extremely difficult for a computer. One example is the Document Understanding project that the teams in Romania are currently working on. In all companies, there are a lot of tasks that require reading unstructured documents (e.g., getting some information from different images) and converting them into a well-defined format. This is usually a manual task – there are employees who need to read that information and type it into a system. This type of work is really time consuming and certainly not meaningful. It is also quite difficult to automate, but we are up to the challenge. We use OCR technologies and try to obtain high-level semantic information and extract from the unstructured text things like a vendor’s address, the total payment, or non-standard contract clauses. Everything we can so that we reduce the effort that a person needs to do to get that information.
Integrating this technology into our platform means that we can send the information we gather to any external systems and generate actions that allow any complex integration flow.
One other interesting aspect is the fact that we support both cloud and the private infrastructure of our customers for this functionality. We have already started migrating to a native cloud-based architecture that will allow us to have a code base with minimal differences between the two mediums. We tackle difficult problems while scaling the applications we deliver. We need to be able to run on one computer or on hundreds of distributed systems, depending on the context. Our goal is to run our technology in such a way that it can be used on any platform.
UiPath grew exponentially while keeping the bar high. The fact that we have a lot of customers using our cloud services imposes high performance standards. We need to find ways to minimize our service downtime as a lot of critical infrastructure processes depend on it. This also has implications for our architecture. We need to offer high availability, transparent failover, rapid scaling, we need to be present in all geographic regions to cover support. These are tough technical problems that all companies delivering cloud services on a global scale must deal with.
At UiPath we try to solve a tough problem: create an end-to-end automation platform on top of which you can run all the business processes of a company. This translates into interesting software engineering problems like building a scalable platform, with great user experience that makes it easy to use or tackling high performance computing challenges. We try new deployment models work with technologies that are not yet mature, but we believe that in the future they will become critical and widespread. We push boundaries and learn a lot in the process. On top of everything, the scale on which we operate in Cloud keeps us on our toes, always looking for more effective solutions.
The main stack we used in UiPath was heavily focused on Windows and C# for a while, but we started changing that to be able to scale our teams faster. Part of our services already run on Kubernetes where we use a multitude of tech stacks – Python, Java, Go. We experiment with solutions like Blazor or Webassembly that will allow us to be cross platform and use the browser to expand the mediums the UiPath platform can run on. We’re constantly adapting to the cloud native environment. And we’re always learning, keeping ourselves up to date with all the new technologies.
If you’re interested in joining our engineering team, check out the jobs available on our career page.