What are low code platforms?
A low-code (development) platform allows to create applications through graphical user interfaces and/or configuration instead of traditional computer programming. They can be a great tool for enterprise companies to reduce the cost of development mainly in two ways:
- by giving a software that non-developers can use to create apps tailored for their needs
- by giving programmers a system to quickly develop small applications
In this article we explain what are low-code platforms, when you should use them and when you should not use them. We are also going to see going to see some of them and take a look at how it is working with them.
wait, they look just like…
I am sure that the initial description of the term low-code platform sounded similar to other things you have seen in the past. Well, you are not wrong. The term low-code platform includes a mix of both new and useful paradigms related to programming and old ideas repackaged for marketing reasons. In this paragraph we are going to describe a few associated terms, while in the next one we are going to see how they differ from low-code platforms.
The first term that comes to mind is code generation. Code generation employs tools to create the source code from some model, either obtained through a description written in some format or produced from some configuration UI.
Code generation tools are designed for programmers and can generate everything from just small parts of the code or the entire application. The programmers that use them can also integrate the output with their own code. If you want to know more about code generation you may want to read this article we wrote on that topic.
You might also think about Domain Specific Languages, for which we have written a complete guide on real DSLs. These are languages designed to accomplish one task, but to do it exceptionally well.
They allow the user to write code (i.e., instructions) in a simple and clear format and to easily accomplish the task at hand. They are designed to be used by people with expertise in the task, so they can also be designed for non-developers. For instance, a DSL for accountants would allow them to write a formula to indicate how much taxes a person with a certain level of income would have to pay. The value of DSLs is that they put the specific knowledge of a business into code, that can then be manipulated and used in the most efficient way.
There are also automation platforms like IFTTT or Zapier that connect different services and provide methods to perform simple tasks by combining two or more applications. For instance, they allow you to send a tweet every time a new line is added to a Google Sheet.
Finally, the concept has also a close sibling: no-code platforms, in which the platforms requires and allows no coding at all.
With no-code platforms essentially all development is done through filling forms or other methods to insert information inside a predefined structure. This limits the flexibility but guarantees a certain level of quality and a standard, familiar experience for all users.
When to use low-code platforms and when to use an alternative?
Code generation employs tools to create source code or entire applications from a description in a custom format or some configuration. So, in both cases you input information in some form to get a program in output. The key differences between the two concepts are audiences and results. Code generation tools are designed for programmers and can generate everything from just small parts of the code or the entire application. On the other hand low-code platforms are designed to be used both by the average user and by programmers; they usually generates entire programs. In specific cases, low-code platforms they can also host the application when appropriate (e.g., web apps used for clients or internally by the company).
An example application for code generation is a parser generator, like ANTLR. A developer writes a formal description of a language (i.e., a grammar) and the parser generator creates a parser that can parse that language. Code generation works perfectly in this case because a language can be described using a standard notation and designing an effective parser by hand requires specialized knowledge that most programmers do not have.
The relationship with the close sibling: no-code platforms is a bit more complex. The sibling sits on one end of the spectrum in which the platforms requires and allows no coding at all. With no-code platforms essentially all development is done through filling forms or other methods to insert information inside a predefined structure. The other end of the spectrum is real coding done with specialized tools like code generations and DSLs. The idea of low-code platforms stands somewhere in the middle of these two extremes in terms of complexity of programming. In short, no-code platforms can be considered a simplified version of low-code platforms: easier but also less powerful.
This also helps defining the audience: on one end you have essentially specialized programmers (i.e., for code generation, using a DSL), while on the other end you have normal users filling forms. The first requires both specialized knowledge in the topic and a specific competence in using that language or tool, the second requires just specialized knowledge in the field to understand what is happening. That is because the tool uses standard methods and interfaces that should be familiar to anyone. Therefore low-code platforms can generally be used both by programmers and non-programmers alike. Although this can vary depending on the platform, generally all you need is understanding the field in which the app will be used.
As a category of software, the only thing simpler than low-code platforms are automation platform like Zapier. They allow only to connect different platforms, so they have limited power and few complications.
When to use low code platforms
Now that the terms and context are clear, we can understand when it makes sense to use low-code platforms. The main benefit of low-code platform is essentially that you get a complete application that you can immediately use. Sometimes this means a web application that is hosted by the platform itself, sometimes you get a smartphone app that you can upload on a store.
This is a key difference from more powerful and complex tools like Code generation or DSLs tools, and from simpler ones like automation tools. With such tools you usually get something that must be refined or inserted in a larger program and it is not directly accessible to the user.
With low-code platforms instead you get a complete ready-to-use application. They are ideally suited for three kind of applications:
- applications used internally by your business
- simple common applications to gather data
Let’s see why for each case.
Internal applications can be created by a system administrator, that usually has some programming skills, or even someone that just understands the topic at hand. For instance, you can get somebody from accounting creating an app for reimbursement of expenses using a low-code platform. It is task that is simple, well-defined and understood by the person that need to make the app and to handle the process behind the app.
One of the greatest issues with making software used by the general public is refining it and avoiding any crashing-bug. You do not really need anything refined for internal software, you just need something that works. And using a low-code platform, that is already well-tested, you also reduce the risk that the software will crash for simple programming errors, like forgetting to check that a value is acceptable for a certain input.
Another good use for low-code platform is prototyping, that is to say to create prototypes or early versions of real applications. Low-code platform can provide a quick and simple way to create an application. This can be great to test its viability on the market or to put out something quickly. Prototypes are a great way to learn what works and to iterate quickly. Then you can re-create the application with traditional techniques when you are ready to launch.
Given their standard structure, low-code platforms can also be great to realize simple applications that use a standard interface. These are the kind of applications that anybody from HR and Marketing understand how to use and might need from time to time. For instance, you can create an application to collect curriculums and data for job interviews. The end result might essentially be nothing more that a series of forms, so it is something that an HR employee can create and manage on its own, without asking for help to the developers.
In short, low-code platforms are great for applications that require fast time-to-market and that benefit from simple, standard interfaces.
When not to use low code platforms
There are fundamentally two kinds of applications that you should not create using low-code platforms. The first one are complex applications that can do many different things. If an application require constant development and maintenance, complex behavior, to integrate multiple API from third-parties, etc. a low-code platform is not the best way to create one. It is better to assign the development of such apps to real developers. Otherwise you will be forced to make compromises in terms of quality and ease-of-use.
The second kind of applications that you should not create using low-code platforms are applications that represent your core business. If your business is focused on an app, for instance, you are a dating company which works as an app. Then, using a low-code platform is a bad choice. Any choice you will make will be limited by your platform. This is actually a good thing for simple apps, because the learning curve is simplified. However, it is bad when you need to develop a killer app or functionality.
In some cases you might also want to avoid apps designed to be used by end-users. That is because many low-code platform may charge you a per-user fee. So if your business model relies on freemium apps this cost structure might not work for you.
The kind of software you can build
Let’s go more into detail into the kind of software you can build with low-code platforms.
It’s forms all the way down…
The main type of application that you can build with any low-code platforms is a data-centric app. This is essentially an app that allows the user to input information, usually with forms, and then it elaborates the data in some way. For instance, it can be a way to replace a simple contact form into a multi-step process to sort contact messages from users to the different departments of your business.
However, an app can be much more complex than a simple series of forms: either in the backend or in the way the data it is presented. For instance, the platform could allow sophisticate analysis of the data in the backend. It could also facilitate integration of the input from the user with multiple sources of data already available. Once the data is elaborated, it can also be presented to the user through graphs or easily integrated elements, like embedded maps.
…but you also build much more
You can build much more than simple data-centric apps. You can create complex workflows or special apps for your business. For example, you can create an app that allows your employees to work from their smartphone when working in the field. You could create instructions or a script to design a custom chatbot to interact with your customers.
It is software for businesses
Essentially low-code platforms are designed to build custom software for businesses in a cheaper, quicker way than with traditional methods. In particular the integration inherent in these platforms might them best suited for apps uses internally by your business, i.e. directly by your employees. In fact this is typically the focus of many templates/example apps that are included ready-to-use in the platform.
The businesses that can gain the most for these platforms are the ones that needs a lot of small custom software for different employees or have special needs. For instance, you can find software for event management, but if your company manages events for kids or families the usual model might not be optimal for you. So it is better to develop a custom app specifically designed for you.
Businesses can also find useful the integration that these platforms offers. For instance, you can probably find a standalone invoicing app that costs less and is better supported than whatever your IT team can assemble. However, it can still be better for your business to create a custom app that is integrated with the rest of your custom software in some cases. For example, if you need your employees on the field to be able to quickly create an invoice on-the-fly, without having access to an accountant.
Let’s start with the low-code platforms designed to create data-centric apps. We are going to see in details how to work with these low-code platforms, that represents most of the platforms you will find.
What they offer
We are going to see two examples of the kind of platforms used to create data-centric apps: FileMaker and Airtable.
You might know FileMaker as the creator of the eponymous database. It’s the same company, but the product is evolved into a low-code platform. It supports the creation of both traditional apps for desktop and smartphone and web apps that can be either hosted on AWS or on your own infrastructure. The product is created by an Apple subsidiary, so support for Apple platforms is excellent. There is complete support for Apple devices: you can create apps on the desktop (MacOS and Windows) and use them on mobile (iOS). You can also use apps on any platforms that has access to the Web.
In practice, by the FileMaker platforms we mean that you can use FileMaker Pro Advanced to create the apps, and use them on iOS (FileMaker Go) or run them on the cloud (FileMaker Cloud) or your own servers (FileMaker Server). You can see a nice video overview of the FileMaker platform on their website.
The focus of FileMaker is custom software for businesses, so that you can easily create all the apps your company needs to run smoothly. For instance, there is an example of a custom app designed to manage the assets of a bike share business. The following image comes directly from the FileMaker website.
This focus and the availability of the platform on mobile systems means that FileMaker can be a great choice if your workforce spend a lot of time on the field. This allows to deploy all your apps to your workers in an easy way. The company has many customer stories related to this use case. For instance, you can make your workers on the field collect data on clients that can be fed directly to your infrastructure or send all data to your agents so they can use it with your clients.
There are many videos on the website and YouTube channel of Claris, the developer of FileMaker. Here we embed the one that shows the process to create a custom app.
You could also find interesting the one that introduces how to use one of the ready-to-use templates: Introducing the Membership Template. These videos are the best one to watch to get a feeling of how it is working with the platform.
In short, if you have ever used the graphic tools in a modern IDE, like a UI Designer, a SQL query editor or a model designer, you will find developing with the FileMaker platform quite familiar.
For instance, this is a screenshot of the tools to design the interface of an app. Even if you are not a developer, you can grasp the functionalities of the tool in a few hours.
The same can be said for the creation of the database that hosts the information collected through the app.
It is simply a sequence of forms that has to be filled.
You can also create scripts to be executed when the user interacts with the app (e.g., they clicks a button). These scripts can be created through forms, for instance this script that sends an email was create with the following form.
So there is no technical hurdle that looks particularly hostile to non-developers (e.g., learning to write a long and syntactically correct sequence of commands). However, something that we experience by developing with DSLs is that obstacles for letting non-developers create programs are rarely technical. Rather, the main problem is that non-developers often lacks the mindset to organize a program and to create a coherent structure.
FileMaker removes all the technical hurdles of development, because basically it just makes you filling a lot of forms and diagrams. However you still need to give this power in the hand of people that can use it effectively.
The pricing structure of the FileMaker platform is geared towards enterprises. You can buy an individual copy of FileMaker Pro Advanced (to develop apps on the desktop). However the you cannot buy individual access to, for instance, FileMaker Go, to run the apps. To run apps, and accessing the whole FileMaker platform, you need one of the two main packages. This would cost you minimum 900$ or 2300$ for 5 users depending on whether you host the apps yourself with FileMaker Server or on the FileMaker cloud. Special pricing is available if you have 100+ users.
The pricing is based upon the users of your app, so this means that is geared towards apps that are used internally by your business rather than directly available to the public.
Airtable defines itself as part spreadsheet and part database. At its core it is a platform that allows you to interact with data and organize it in a flexible way: a sort of smart and collaborative Excel designed to better organize your work. This is their presentation video.
You may think that this has nothing to do with low-code platforms. In reality this is an example of a kind of software that is an hybrid of a low-code platforms and a traditional service. It is designed for the same objective of low-code platform: to develop internal apps to improve the work of your team. It allows to easily access data stored in a database, although the difference is that the UI is limited to predefined formats such as a spreadsheet, kanban, etc. Another important difference is that external users can only submit data through a standard method (i.e., with forms). So it is certainly less powerful than a more traditional low-code platform, but it works well enough for a large set of uses.
In many ways it can be considered a simpler and cheaper version of a normal low-code platforms. If you are a small company, these kinds of services can be a great first step to move your organization from relying on Excel too much. Instead you can start working with software that can be easily customized to the needs of your company. You get a simple software that can be used to gather data from your employees and from your clients.
In practice, with Airtable you add fields that can accepts free text, selected values or even photos. Then you can group these fields into groups (tabs) and connect values from different groups. For instance, in the following example from Airtable documentation, the value in the column Assignee comes from a list of values into the tab Assignee.
In Airtable an app, is called a base, and is a collection of tables to handle some data. The platform allows the easy creation and sharing of these bases, so you can create a base template and re-use it with different datasets (e.g., a project management base to manage each of your projects). You can also use a base template created by the community. Airtable also supports basic integration of external services via Zapier (an automation platform). Finally, you can use a feature called Blocks to handle complex visualizations and manipulations. For instance, you can visualize 3D objects, display the data of your bases into charts and even perform simple actions, like sending SMSs using the information saved in your bases.
The pricing structure of Airtable is much closer to that of a traditional webservice: you still pay for users, but the costs range in 10/20$ dollar per user all-inclusive instead of the thousands necessary for traditional low-code platforms. Obviously the range of apps that you can create is different, but it can be an interesting solution for some businesses.
All Kinds of Mobile and Web Apps
This kind of low-code platforms are not just focused on data-centric apps, but have features to develop every kind of mobile and web app.
Mendix defines itself as a low-code platforms and it is fundamentally a combination of a development platform and a project management tool all in one. It is designed to facilitate the participation of every member of your team into the development process. This means allowing all the stakeholders to provide input (e.g., requirements and comments) to the developers and even to make non-developers help in the construction of the app.
As you can see from the presentation video, non-developers can participate in the development process, but it seems difficult to say that the entire development process can be left to them. Sure, you can have domain experts create a data model for the application and there is a simplified web development tool (mx Studio) in addition to a standard Mendix IDE (mx Studio Pro). However everything, from the terminology to the functionalities of the platforms, is geared more toward enhancing the collaboration of every member of your team, rather than replacing any one of them.
In other words, Mendix is designed to improve the productivity of your domain experts and developers, to facilitate the development and deployment of applications. It helps to coordinate and to bring all your people together. In fact there is also an IDE called mx Studio Pro, that is designed for professional Java developers. They can use this version of the IDE to develop enhancements for your apps or custom add-ons. These custom add-ons can also be shared (and sold) through their App Store.
This last feature is a great option to allow a whole range of development strategies. For instance, you can keep developing as usual your business critical services and develop custom add-ons to allow integration with the Mendix platform. So you can use these add-ons to integrate your business critical services with small apps developed on Mendix. For instance, the marketing experts can develop themselves simple apps to collect data that will be fed to your business critical backends. So, your expert developers can keep working on the platform they already know and your marketing agents can quickly experiment with new ideas. Of course you can also completely move your development on the Mendix platform: this would allow you to develop once and create web and native mobile apps in one place.
Once you develop the apps, you can ran them on a few PaaS, any IaaS provider or even on the premises. Mendix supports a few PaaS: the dedicated Mendix Cloud, the IBM Cloud and SAP Cloud. The parternships with both IBM and SAP extend beyond the simple support of their cloud offering and also include integration with their respective services. You can read more about these parternships by following the links. These integrations are possible because Mendix is based upon Cloud Foundry, a common PaaS platforms.
Mendix also supports the more common IaaS platforms (i.e., AWS, Azure, Google Cloud) in different ways, listed in this table, from their documentation.
Finally you can also run in on the premises, i.e., on your servers, by installing their tools that configure common software (e.g., the Nginx web server) and combine them together to run Mendix apps.
As we mentioned, the development experience is varied: the mx Studio Pro is essentially a traditional desktop IDE that runs on Windows. It comes with command-line tools that can be used for development and related tasks, like any other development environment. For instance, mx build is a tool to deploy the Java artifacts that are created. This IDE can work completely offline. Although you want to sync any change with the remote Mendix TeamServer, so to share your code with other developers and non-developers (that can use mx Studio).
On the other hand, mx Studio is a web-based development environment. If you have any experience with low-code platforms, this tool also follows their traditional patterns for development. There is a section to develop the model, once for the UI and simple ways to implement the logic of the app. Given that there is a more complex tool for professional developers, this environment is simple and easy to use. This means that can you do everything graphically and this makes it more accessible to non-developers.
Of course, as always happens, the elimination of technical hurdles does not necessarily means that non-developers are actually capable of using this platform. That is unless they already have the right mindset to create and handle coherent structure. For instance, the Mendix documentation uses terms as nanoflow, to indicate very short-lived application logic, and microflow, to indicate short-lived application logic. On the technical side the difference is very clear: nanoflow is for client code, while microflow is for server code. However, I do not think that a non-developer can easily grasp the difference between the two, just because one is said to be for short-lived stuff and the other is for very short-lived stuff.
This is not a failure of Mendix documentation, which is quite good. This is simply a natural consequence of the complexity of development. If you think about it, even developers probably know by experience what goes on where, but they would also have difficulty create an exact definition of what goes on the client and what on the server.
Mendix does offer a tool to help inexperienced users: Mendix Assist. This is essentially a smart agent that suggests checks and additions to your model or logic. These suggestions are based on past behavior of similar apps.
For instance, in this image you can see that Mendix Assist suggests some actions that are commonly executed when you create a new user, such as changing the object currentUser in the app.
The pricing of Mendix is a bit perplexing: there is a free tier, but there seems to be no standard pricing for any professional level. There is an example monthly pricing of 1875€ for 50 users (and a 3-year commitment). The pricing is based on users, but an external users (i.e., a client) counts only as 1/10 of a user in Mendix calculations. Instead an internal users counts as 1 user. This is typical enterprise software pricing: it all depends on the deal you can get, so you will have to contact them to get an exact picture of the costs.
Resources to Know More
In this article we have seen what low-code platforms are and what they can be used for.
We could not give an exhaustive discussion of the topic, since there are too many perspective to take into account, from the ones of the CTOs to that of the developers. We gave you a solid introduction to low-code platforms, so you can now understand whether they can work for you. Deciding whether it makes sense for your company to adopt a low-code platform will require long discussions and evaluation of the available options. Here we can provide a few resources to continue your research.
Other Notable Platforms
We also reviewed a few of the available platforms in order to give you an idea of how it is working with a low-code platform. We chose to reviews these platforms because there were notable for some unique feature they provide or they were the most known. However, we could not review all of the available platforms. Some of the more notable that we had to exclude are:
- Appsheet, a data-centric platform with lower prices, designed to create mobile and desktops apps. It has many ready-to-use templates that shorten the time of development. It also has a flexible pricing scheme that makes it suitable to develop consumer-facing apps. It is a great place to start trying low-code platforms, even if you are not an enterprise company.
- Microsoft PowerApps, a platform from Microsoft used to create apps. It could be a great solution if you are already using Office 365 and you want to trick your users into thinking they are still using Excel. The issue is that is not really one platform, but rather a collection of services. Even without counting other Microsoft services (like Microsoft Flow), there are a myriad of different ways to create apps, like Portals (for websites), Model apps (data-centric apps with standard UIs) and Canvas app (data-centric apps with custom UIs). It can easily became confusing for non-developers to learn how to use a bunch of different services.
- Outsystems, a big player in the low-code platform world for all kinds of apps. We opted to review Mendix instead of Outsystems because Mendix has a couple of unique features (like the separate development environment for developers and non-developers). On the other hand Outsystems also has a pricing structure that makes it suitable to create and deploy customer facing apps. It costs at minimum 15 000$, but it is affordable for enterprises and an interesting option if you want to go full low-code. It also has a great deal of information to compare the different platforms with studies made by Gartner and Forrester
- Appian, another big player in the low-code development platform. Similarly to Mendix and Outsystems is geared toward enterprise companies. It has an interesting pricing option to allow unlimited users (but you will have to negotiate with them a fixed priced). It has support for AI: itoffer easy integration with both ready-to-use machine learning models and also external-AI services from Google. It also support external-AI services from Amazon and Microsoft, but they requires some work to be integrated.
Comparisons and Resources
The well known magazine CIO.com has an article on low-code platforms from the perspective of, well, CIOs.
You can see a slightly outdated comparison of low-code platforms by PCMag, it is quite accessible and thus ideal to get a general idea of what is out there.
The G2 website is a good place where to find software for businesses with many reviews from other business users. It also has a section for low-code development platforms.
LowCode.com is a website dedicated to analyzing the benefits of low-code development platforms. It contains studies, reports and a list of the most important people in the sector. Notice that is a website maintained by Appian, a company that develops a low-code platform.
Low-code platforms can be a powerful solution for the companies that need a solution to develop internal apps. They allow to create apps quicker and without the need of the constant intervention of developers. You can give domain experts and business analysts a tool to create the apps they need to accomplish a task with less involvement of the IT department.
Traditional low-code platforms are geared toward enterprises: their pricing makes them usually suitable only for companies which can save the wage of few developers by using them. For these kind of companies they offer a one-stop solution to develop and host their applications with a clear pricing structure. You know how much you pay and you get all you need. They are usually not ideal to develop software used by clients, unless in the case of B2B companies.
For smaller companies, and the ones with consumer clients, they might often become too costly or too restrictive. However, these companies can use new low-code platforms and hybrid services that have prices closer to traditional web services. They offer lower costs at the price of less flexibility in the apps or deployment of the apps.
A Guide to Code Generation
Get this pdf in your inbox along with additional tips on language engineering!