In the low-code application development platform space, some terms bounce around a lot. Let's take a minute in this article to pick apart these terms, just so we're all starting from the same place.
This is the process of developing custom software applications on a computer system that will fulfill the specific needs of an individual or more typically, an organization. Application development usually involves a toolset that will allow trained practitioners to craft software modules that will be strung together in an application framework. Throughout our profession's history, custom application development has often been an extremely risky proposition. It requires individuals who do not naturally communicate within a team to communicate closely and quite often within that team. Often these teams are broken by geography, or split across organizational boundaries. Often custom application development is feared because of the costs it incurs, the tendency it is to be late, and the tendency it is to be wrong once it is deployed. It is often expensive to maintain and because it depends on the craft of many developers building code within it, may not comply with an overall architecture that is consistent or secure.
The failure of many organizations to reliably produce custom software has led to a high degree of outsourcing this task, to the very high licensing fees paid to vendors like Microsoft and Salesforce, and to a gradual reduction in the efficiency of business as IT applications fail to keep pace with changes and needs by business to manage digital information.
It should be noted that Breakthrough Technologies has made this space its bread and butter. We have built teams that have executed within these difficult constraints. We have negotiated the hard realities of this space with small teams of dedicated programmers, analysts, testers, and project managers. To be frank, it is a tough job and the line between success and failure is often a narrow one indeed.
Low-code application development is an environment that allows users to build custom applications with a small depth of knowledge of a coding language, or using code in isolation in the application. Examples might include a drag-and-drop interface builder, but an edit field that allows you to establish validation criteria for the field when the user enters content into it. The validation criteria might be a regular expression. This is not a deeply complex language, but it does require the user to have training on the regular expression language, and this can be fairly trivial or quite complex, depending on the rules that the user wishes to implement.
Regardless, the user has in this case crossed a line from being an informally trained user to one that requires programming expertise, at least in the domain of regular expressions.
Note that the environment may by and large allow a no-code approach for many data structures, business rules, or user interface specifications.
No-code application development does not contain any of those hooks. The user is isolated in an environment and is restricted to choices that any informally trained user may be educated on. The knowledge of the syntax and use of any programming language is never required. No-code applications are truly accessible to any reasonably technical user that does not have knowledge of any programming languages.
Codeful is a term that we have invented to characterize the bait-and-switch we often see in low-code or no-code platforms. These platforms allow users to enter them with low-code aspirations, but constantly and slowly suck the users into ever-greater levels of training and complexity. Even if the knowledge of a programming language is not required, the user must master ever-more complex interfaces and specifications to get their application to perform correctly. This requires more training and even certification on the platform. Often this requires consultative services from the platform supplier. With deep specialization on the platform characteristics, and expertise constantly required and even paid to the host, how then is this platform different from how we code in today's custom programming environments? We posit that it is not. To this end, we claim these low-code platforms are "codeful" and should be considered in light of these obvious deviations from their core marketed mission.
Development Speed, Deployment Speed, and Duration of Training
Since low-code, no-code, and codeful solutions also seem to differ by degrees, are these terms really that helpful in classifying these platforms? We would offer that they are not. You could use only the non-coding features of a low-code platform and consider it a no-code platform. You could require deep expertise in a codeful platform and it would still be marketed and sold as a low-code platform.
Let us consider instead the impact on the user. The metrics of what brought us to the platform and to this category of software in the first place. We offer the following metrics:
- Platform Acquisition Speed — The amount of time required to secure an account, and begin your first application development action.
- Development Speed — The pace at which a new application can be developed from scratch.
- Deployment Speed — The time elapsed between development completion and availability of the application to its users.
- Duration of Training — The amount of time required to invest to become proficient on the platform.
We contend that these four measures are the best measures to see how well the platform fits within the original business objectives. The terms low-code or no-code are often proxies for codeful solutions that ultimately do not deliver on the four business metrics of citizen development.