Since the dawn of the computer age, beginning with the giant vacuum-tube-powered behemoths that emerged in the 1940’s, developing computer software has largely required the ability to understand math, digital logic, and one or more programming languages to get the job done.
Classically, the more in-depth a person understands these concepts, the easier it will be for he or she to produce quality computer software, while a limited understanding would make the same task difficult to impossible.
Today, however, things have changed a lot. The advent of graphical user interfaces and more powerful machines and supporting software has enabled the low-code development effort to gain momentum, allowing people to design websites, applications, and even entire systems with little knowledge of computer science or software engineering concepts.
But what exactly is low-code development? From Wikipedia:
A low-code development platform (LCDP) is software that provides an environment programmers use to create application software through graphical user interfaces and configuration instead of traditional computer programming.
That pretty much sums it up. Low-code develpment is just that: developing software graphically while writing little to no code in the process. This article will outline some of the concepts, concerns, and available tools within the scope of low-code development.
How does it work?
Low-code development platforms provide graphical tools for designing an application or system, along with its required inputs, outputs, business logic, and other aspects. Depending on the features of the platform being used and the overall system requirements, the developer may or may not have to augment the design with some good old-fashioned code, or the platform may produce an entire working solution with no additional code required.
This process can vary widely between low-code platforms, one of which we will examine in a moment, and are as varied as the the teams of people who create them and the business needs that each platform is designed to serve. However, the general concepts remain the same and the process generally involves mapping out user interface designs, databases, APIs, and client application behavior, to produce a specification which the platform will use to assemble a working system.
From a computer’s perspective, everything is either a zero or a one, so it makes no difference whether compiled binaries, UX designs, databases, or anything else comes from a graphical specification or one that was coded by hand. However, there are advantages and disadvantages to each method.
Benefits of Low-Code
Choosing to build apps with low-code platforms can provide an organization with the means to produce complex and effective software in rapid time without having to maintain a full staff of software engineers, who are often high-priced and difficult to hire and retain (and for good reason).
Using a low-code platform, a software architect with some coding ability, for example, could single-handedly design and build a complex business application for their company at a fraction of the cost of hiring expensive developers or contracting an external firm to handle the design and development responsibilities. Likewise, an entrepreneur with average computer skills can try out new ideas and even build and release a full product with all of the desired features and functionality. This is a huge advantage for anyone who is interested in app development but doesn’t have the massive amount of time required to learn software engineering to a high enough degree to produce a competitive and reliable product.
A Few Concerns
One concern is that someone designing an application without a solid understanding of software engineering might not have the experience required to make sound decisions about how any computer system should work. A graphical low-code environment will prevent one from making pure code-related syntax errors (since there is no syntax), but in general it makes no distinction between what is a good or bad idea.
Also, low-code environments won’t have the same intuition or understanding of context that a seasoned programmer would have, so there is the ever-present risk that a low-code application might for example not support some requirement that was unforseen by the designer, such as retrieving, calculating, and storing some critical event-based historical data that is lost forever if not captured in the moment.
While such a scenario really places responsibility on the business team to properly scope the requirements, it’s a well-known fact among top software engineers that mistakes in scoping happen all the time and are often fixed by programmers on-the-fly during the development and maintenance cycles, in which the programmer has a clear picture of how well the specifications meet reality. A developer of a low-code application doesn’t have the luxury of having seasoned professionals around (real humans, not AI) who can catch these subtle but often devastating mistakes.
An Example Platform
To get a better idea of what a low-code platform looks like, we’ll take a look at a recent newcomer to the game, Microsoft PowerApps, a platform designed to quickly spec and deploy business applications.
Microsoft PowerApps offers two methods for developing low-code apps:
- Canvas Apps, in which the developer starts by designing application UX and works down into the logic and data
- Model-Driven Apps, in which the developer begins with raw data and models app behavior (such as UX) around it
These two methods vaguely resemble familiar concepts in the traditional development world: top-down vs. bottom-up design.
When taking the Canvas approach, a developer is designing the system top-down, focusing on interfaces and interactions, system requirements, and overall behavior of the app, working down into the details as necessary.
In contrast, the Data-Model approach begins with data, as one would expect. A developer starts with some amount of important data (for example, information that a company has collected for years with the intention to eventually build a product or service upon it) and then works their way up from the data and lower-level business logic requirements, producing higher-level functionality (such as UX) as required.
Microsoft PowerApps is a good example of a low-code platform that enables connectivity to both internal and external data stores (such as SQL Server) and makes it easy to design the business logic and UX that allows users to interact with the system and underlying data.
The term “low-code development” has only been around for a few years, and there are infinite ways that such a platform can be designed, so this field is likely to change drastically in the coming years. Different types of apps have different requirements, meaning that one suitable for game development would be almost useless for developing enterprise apps and vice-versa.
Here are some links to a handful of the platforms available today:
For a comparison of the top low-code platforms for 2019 along with information that can help you decide which (if any) is a good fit for your business needs, see this excellent list from G2.
Low-code development is an exciting option for both programmers and non-programmers to design and build all kinds of software ranging from simple handy utility apps to full-blown enterprise resource management systems and everything in between. When building low-code apps, special care should be taken to ensure that the design meets the requirements, as there is no team behind the curtain to silently catch and remedy common mistakes that are often made within software design in general. That being said, when used properly, low-code is an excellent choice for anyone who requires custom software but lacks the skill (or budget) to build a traditional application.
Thanks for reading, and I’d love to hear your experiences with (and opinions about) low-code development and software in general.