As part of a cross-functional development team, I was recently asked to get certified as an OutSystems developer. I’ve coded in many languages, but this would be my first steps with a “Low-Code” platform. I’ll admit to being a little apprehensive, the name “Low-Code” conjures up something less, something taken away. Will I still be stimulated and challenged by the problem solving of code development?
And yet low-code is not an unfamiliar environment to me, there are a lot of similarities to the SCADA systems where I started, and Microsoft Visual Studio where I learned the trade (a very different beast to Visual Studio Code). Both of which rely heavily on reusable components, data sources, interconnections, and the occasional flow chart.
It’s clearly all about productivity, and the low-code approach is to accept that most applications are doing similar things with common UI components. So, in theory, if the relevant patterns and components have been identified you can do what you need – with less code. Let’s face it, a lot of what we do, can be described as hooking up a data source to a UI, with some logic in-between.
So far, there are still problems to solve, but they’re different to before. Low code issues focus on the what the client wants, and how users expect things to work. Less worrying about the layout and fancy effects. Which is great for me, I always found tweaking the front-end time consuming for what you get back.
The premise of re-use and extend, rather than re-invent, can take some developers a while to adopt, I certainly did. I’m grateful for npm and everything open source, OutSystems isn't quite open source, but it is open within its own ecosystem, and ultimately, it’s built on the same principle of re-use.
The open question for me is, when things get complicated, will it still be a “productivity” gain? Flow charts are great when used for one-way branches, that fit on the screen. but what about loops and recursion, and collections and pipelines? My guess is this where good low code developers will distinguish themselves, with simplified and modular logic in the most appropriate layer. The ability to extend with C# widgets, and to connect to external services also provides a “get of out jail” card. Which gives me, as a developer, the option of using the best tool for the job.
Is it future of coding, or a future I want a part of? It already has a long history, so it’s more a question of how much can, and should it be used for? I can’t answer that yet, but it is an excellent fit for backend and power-user applications.
In the meantime,it’s another arrow to the bow. It’s been good to learn something new, and work across the full stack again. As such, it will contribute towards me being a better developer and solution architect. Whether you can see yourself as a “low coder” or not - it’s here to stay, so yes, I want a part of it.