It seems that the term low code has been entering the conversation a lot lately. Sometimes in articles that like to demonstrate how developers will be out of their job in the near future because low code will make them obsolete. Others simply tout the advantages of extending coding to less technical people in a company. I think that low code is actually somewhere in the spectrum and that it fills a very specific niche.
First things first, what is meant by low code and how does it work? Well for what I can see the term low code is applied to tools used to build data driven applications that renders data from a database and where the users can perform CRUD (create, read, update, delete) operations. Sometimes they also allow workflows to be started based on these operations like sending emails when an item is modified. Examples of low code include things like Monday.com, AirTable and AppSheet.
Each of these services offer a very similar set of features as well with things like:
- Integrated database where to store the state of the app.
- Mobile apps usually as HTML5 apps. This allows you to deploy to the phone without having to go through the app stores and since their mobile apps expose special APIs to the JavaScript (like camera access) they do get to behave almost like native apps.
- Formula based programming language that is used for customizing the behavior of the app when fiels are entered, perform calculations, initializations, etc... This is (usually) a very limited form of programming language loosely based on the formulas available in spreadsheets.
These tools allow you to build your own apps to solve very specific problems. This is not a negative per se since these tools are sold as a way for employees to solve their own problems without having to rely on an IT team that builds all of the apps.
Eventually as new features are added to the app, specially if the app is succesful within the company, the users will hit a wall. The main limitation is in the very name low code. The formula based logic, while easy to learn, is incredibly limiting. This will lead to spaghetti code and overly complex formulas in an attempt to workaroudn these limitations, much in the same way Excel spreadsheets grow to drive entire companies.
Related to this is the problem that these apps are going to encounter is the lack of good practices. There's no version control, reviews, quality control, etc... The apps are published as soon as they are saved. That can cause havok if a bad change is done, specially if the app becomes critical of the functioning of the company.
I don't think that developer jobs are at stake here. I think that these apps are right now at best utilities that can solve very specific problems. Because of this I see low code more as a way to empower end users and as a way to freeup time in IT departments so they can take on other problems.
I think that a much better solution to this problem is to create a fully fledged programming environment with a simple to learn language. Something like the original Visual Basic would be perfect here (I miss VB6 so much) but evolved for the Cloud first world.
With a visual environment to create the UI and a complete (yet simple) language to back it up you can create great applications. With good practices built into the tools (code quality, versioning, source control, etc...) it can help ensure that the produced apps are maintainable and, even more importantly, dependable.
Having such a language available could make cloud even more available for everybody, much in the same way that Visual Basic did for Windows applications.