Low-code is meant for applications, not software
Recently I heard the software guru Martin Fowler state “low-code misses the abstractions you need for making software”.
A widespread misunderstanding which feeds the scepticism about low-code is that low-code would be used for software development. Most low-code platforms are meant to produce applications, not software.
What is the difference? Applications are made with software, software is made of code. Of course, you can make applications with software. But the low-code technologies have made clear that it is more efficient to use ready-to-use software components to make an application. A low-code platform is actually a combination of three elements: (1) a large and general-usable library, (2) a framework, and (3) an integrated development environment. Let’s examine these three to see where the software development differs from application development.
Coding behind the curtains
The library of a low-code platform provides the most general and usable components one needs for making an application. The library usually contains a large set of visual components for presentation purposes (from containers, buttons to graphical objects), and a set of functions. Functions can range from calculations, text manipulations, file handling etc. It is here that usually a loophole to high-coding is offered, and the platform earns its label “low”: the possibility to make your own functions by coding. This loophole can be large or small, and lacks completely in no-code. Essential is that in low-code platform the coding is behind the curtains, so to say.?
领英推荐
Guarantee
The framework of a low-code platform is fundamental. The framework guarantees that all components work together, that when you put some components together, the resulting app really works. Technically it includes e.g. the data storage behind the design, the compiler or interpreter, memory management etc. The framework also defines the paradigm of the platform, it defines the way of working, what you need to do in order to get things working. Some platforms e.g. require that you start defining the user interface first, and then put other elements like data in the graphical design. Other platforms require that you start defining the data structure first, and then the graphical designs are derived from the data structures. The essential feature of low-code platforms is that the framework is integral, not partial. Composing the components in a low-code environment is guaranteed to work.
Coherence
Then there is the integrated development environment (IDE). Typical for low-code platforms is that the IDE not only integrates the user interface for the developer, but also integrates the tools behind the several stages of application development: requirements defining, design, versioning, testing, deploying. Low-code platforms offer these development functions holistically and coherently.?
In the use of an IDE the software and application developers meet. That is the source for the misunderstanding. Software engineers are usually not happy when confronted with the IDE of a low-code platform. They miss the freedom to make “abstractions”, as Martin Fowler puts it. The first thing a software developer does with a low-code platform is looking for the loophole for coding custom functions.?
Different goals
The point is: application developers miss the restrictions in the high-code environments, and get lost in possibilities and errors. The application developer, also called the citizen developer, wants to produce a working app in minutes, not losing time with technical issues. The starting point of the application developer is the business and a business goal. Is the application developer missing possibilities, does it restrict the value of applications? I think here the true value of the software developer comes in: it is the software developer who makes the low-code platforms, and thus creates the boundaries and paradigm on which the low-code platform is based. The application developer is the user of low-code platforms, and requires the needed restrictions in order to produce applications at a fast and steady pace. The software developer has the goal to abstract as much as possible. What is better than make these abstractions available to the users of a platform? Software developers and application developers have a completely different goal. There is no case for degrading any of them. They need each other.
Empowering Sales with AI
2 年it is a very good point: I want to build a low code platform: I need to write software; I need to deploy an e-commerce app, I can use a low code-no code platform. My only question is: a RDMS, let's say Oracle, is an app, a low code tool, a platform? SAP FICO is a low code platform? or it is a packaged solution? Excel and/or Airtables? What about good RAD or Case Modelling tools? I understand and agree on your points in your very good article; but I always found difficult to categorize. Some artifacts in the real world, have a self organization, because this is the way they are build. A good example is the taxonomic rank in biology: Domain, Kingdom, Phylum, Class, Order, Family, Genus, Species, "surges" from evolution. I could not find that taxonomy in software systems (applications, IT, software engineering, etc) #imho
Architecte d'Affaires | Business Architect at ALITHYA
2 年Well said!
Program manager | MiRA
2 年I agree with you Alcedo. Parties involved should manage expectations here. Introducing low-code often comes with "you don't need software developers anymore" without proper explanation.