What is low-code?
I’ve been working with DSLs since 2009, but I’ve recently become aware of the term low code. Looking at Wikipedia, it seems the term first appears in a Forrester report from 2014. Prior to that there were application development (RAP) and fourth-generation programming languages. The idea was always the same: improve the development speed by having more high level tools. So, what are these platforms and what do they do? First, I would like two consider two things: the abstract view and the commercial view of these platforms.
Abstract View of DSL/Model-based platform
To throw some clarity on the terminology, we need to look at the technology that enables this kind of platforms. At the very bottom, we usually have the metamodeling layer. The metamodeling layer allows to describe the models in an abstract way. On top of the metamodeling layer, we have the DSL layer. The DSL layer acts as a presentation layer for the metamodeling layer. You can, for example, have several DSLs allowing to describe the same model. The DSL can be graphical, textual or a combination of both. Finally, we have the DSL Tooling, which enables the handling of the DSL files and does something with the DSL. This can be as simple as a compiler or as complex as a full-fledged IDE or web-based low-code platform. The DSL development environment usually creates an artifact. This can be some text files, source code, an application, etc. The full view can be seen in the diagram in Figure 1.
Commercial View of DSL/Model-based platform
Each domain usually has its owns terms for the same thing. The typical example are clients. If you are a lawyer you call them clients, if you are in the retail industry, they are called customers, or if you are a doctor, they are called patients.
The same applies for DSL/Model-based platforms. Depending on the industry you have different names. In the software world, the DSL tooling is usually called code generator, IDE or build tool plugin. The artifact produced is usually code, documentation, both or something else. Other engineering firms call these tools modelers, the generated artifact can be also code, simulators, or even another model. Finally, we have the “enterprise” world, where these tools are called low-code platforms and the artifacts are apps, business workflows, automation, and other business related-software (like landing pages).
As you can see, the part that determines the name of the “platform” is the visible part, i.e. the DSL Tooling and the artifacts created. The parts that are under the hood are the same, independently of the application.
So… What are these low-code platforms?
Here is my take on what are low-code platforms:
A low-code platform is a software that enables the creation of business applications by providing the user with a very high level language to develop the application. This high level language allows the user to define her application at a level of abstraction that is very close the business, and uses concepts that the user is already familiar with. The higher lever of abstraction enables the user to write less code, while the concepts available in the language enable the business user to develop with minimal training in the platform itself.
What do you think? Is this definition accurate? What would you add? What would you change?