Building your first app with the Outsystems platform is as the character Dave Bowman describes in 2001 A Space Odyssey when he enters an unknown alien monolith floating in Jupiter space: “My God, it’s full of stars”. While you are working with Outsystems stars appear frequently. When they do, you know the platform has just auto generated a lot of code to help you accelerate the development process. As with Bowman, you don’t have a clue what happens under the hood, but that’s not a problem when you are focused on the high end goals of your journey. You want to solve a problem and find a way to fix it. There are not a lot of platforms that are able build solutions as fast as Outsystems.
As a junior developer -introduced to the world of programming just over a year ago- I’m happy to give my view of the Outsystems platform. After attending an Bootcamp and finishing the associate Outsystems developer exam, I can say I have a good image of the basics of Outsystems development. To give interested developers an insight on the subject of Rapid Application Development (RAD) I will discuss the platform in the context of recent general developments and expectations as well as zooming in on a few features of Outsystems.
From high level to low level development
An RAD is an implementation of Model Driven Development (MDD). Low-code or No-code RAD-platforms have been viewed as a way to make development accessible to the boarder public: ‘Citizen Developers’. With the demand for resilient and scalable (cloud-native) applications growing faster than the amount of available skilled developers to build them, faster building solutions become more in need. You don’t need to be a coding expert to start working with an RAD-platform. Because of the functional modules with which you work and the easy-to-understand processes you can start building apps with little experience. This way less skilled workers or workers from another field can team up with Outsystems professionals to build apps faster.
However, ‘Citizen Developers’ do not provide the only way of benefiting from MDD. To me MDD provides a different angle on the learning aspect of development. While traditional development is learned from low level hand-coded programming to high abstraction level programming, in MDD it is possible to learn the other way around. You can build working apps almost instantly. Important first lessons are about the business end of developing. Starting from the business point of view has productivity, user-experience and priority choice benefits.
Why a starting developer likes outsystems
The simple reason why a developer can instantly enjoy working with Outsystems is because of has a beautiful interface. Outsystems is a low-code enterprise RAD platform that can create, deploy, change and manage custom mobile or web applications. More importantly on the long term it provides an environment that lets you dive into either back-end or frond-end programming to the extent of your capabilities. One of the most difficult decisions a starting developer has to make, is to choose a technology or language to specialize in. After learning the basics of programming I wasn’t sure if I wanted keep programming in Java. I wanted to explore front end languages as well. In Outsystems I can do both. Java (or .Net) is used for back end and CSS and JavaScript for front end programming.
As you become more experienced using the platform you can learn about the underlying code and start tweaking the preprogrammed parts. Expanding your capabilities makes you become more efficient in achieving project goals. It’s a way of making a contribution first and self-improve along the way.
Nice outsystems features
Low-code development accelerates application delivery and improves agility by encapsulating and abstracting code, reusing components and making deployment to the cloud easy. Low-code development environment is often separated into three layers: interface, logic and data. Outsystems is no exception. Broadly speaking the data layer handles database entities, the logic layer handles client and server actions, integrations, roles and exceptions and the interface layer handles UI flows, themes and scripts.
The Outsystems interface layer provides some great features for development. Scaffolding patterns allow you to create list and detail screens with CRUD operations, popups, navigation and list sorting in just a few steps. Reusable screen parts called Web Blocks allow you to reuse UI over different screens. Outsystems supports Ajax interaction to allow content to change dynamically without reloading the entire screen. In the one-click test and deployment area you can easily find the source of an error or use the debugger to go through logic step by step.
Considerations
Outsystems is a platform that of course has some limitations and these should be considered. When starting with Outsystems you will obviously look for answers online. The online community working with Outsystems is growing very fast, but it is still not a big one. Finding answers for advanced questions is quite tricky. It is required to be assertive on the Outsystems community forum to get the answers you want. The best way to learn fast is from colleagues that have more experience. Outsystems teams at any company usually have at least one experienced developer.
Then there is the open source programming restriction. The platform uses open source languages like Java, but the platform itself is not open source. You will need the platform to view or modify the application. Outsystems does have an online source of usable add-ons and applications called the Forge, with which you can extend the applications capabilities. Another issue is the absence of a testing environment. The platform performs a lot of tests under the hood, but you cannot (yet) add your own tests in the Outsystems workspace. External tools are needed for that. Lastly there is the costs. Publishing your own apps is too expensive with Outsystems. It’s something only companies can afford. You can use a free cloud space to build your own applications for personal use and learning purposes.
At this moment I do not yet oversee the entire extend possibilities and limitations of Outsystems and in that sense I still feel a bit like Dave Bowman on his odyssey to the unknown. But all things considered I think platform provides a solid learning environment and I have confidence in a bright future in working with one of the fastest growing RAD-platforms.