Low code is Bullshit

8 minute read Published: 2024-05-15

Low Code is Bullshit. Here is why. Obviously all of this is just my opinion but if you are currently invested in one of these stupid "low code" BS platforms I hope you lose all your money.

What is "Low Code"? "Low Code" refers to a platform or application that enables development of automation or workflow tasks through a graphical interface rather than writing code in an editor. There has been a proliferation of these so-called "Low Code" platforms in the last few years. The purpose of them is supposedly to ease development of certain tasks and "enables faster delivery of applications through minimal hand-coding"1. This goes along with the idea of "citizen" developers. The idea is that you don't need a "real" developer, instead a user or manager or whomever can build things themselves.

The problem with this, of course, is that it doesn't fucking work. There are two main reasons for this that I have found. The first is that the reason the business manager or the dude from HR can't build something themselves is not that they don't know javascript or python. The problem is that they don't (generally) have practice breaking a problem or process down into the steps and rules that a computer can understand. Turning some of those into pretty little boxes that you drag around instead of code in a text editor doesn't fix that problem.

Don't worry though, I'm sure AI will fix it.

The other issue is that eventually you run into something that isn't easily solved by the colored boxes and squiggly lines so you need to use the escape hatch, hopefully they thought to leave you an escape hatch, which means you still need a developer to do it. Except now you have robbed them of all of their tools. Tools that have been developed over decades of people building software are gone. Now you are relying on the debugging and testing functionality that whoever built this particular low-code monstrosity thought to give you. You are also saddled with all of their bugs. And there will be bugs.

I have experience with 2 main "low-code" platforms and some minimal experience with a third. The number of times an inscrutable tangle of colorful boxes and squiggly lines could have been replaced with 12 lines of javascript or python (or anything else) is absurd. This is not easier. This is not better to maintain. I don't know what it's doing and I just finished building it.

Perl used to have a slogan or tag line of sorts "Making Easy Things Easy and Hard Things Possible". I think the slogan of these low code platforms is "Making almost everything as painful as possible". Once you need to use the escape hatch everything gets so... incredibly... painful... I promise any time you saved because doing X was just dragging a magic box on the screen is eaten by the time you spend trying to do X but only on Wednesday because now you have to use the GUI editor to copy/paste in javascript to figure out what day of the week it is except you can't test it without the whole workflow and waiting 3 minutes for it to finish to test 2 lines of javascript. You are doing all the same things except worse.

Have I mentioned they took away all of our tools?

Have you seen how some of these things are migrated?.

How do migrage Azure Logic Apps? You stick a big gnarly inscrutable chunk of JSON in version control. Do you need to know what changed between last week and today? Good luck diffing this massive CF of JSON. Did somebody accidentally delete a magic rectangle and commit it and now you want it back? Yeah good luck cherry picking that out of a line up. Also all of your references are broken and you need to fix them by hand. Your logic apps are version controlled, in that there is something in version control. Good luck actually doing version control things with them though.

The other major "low code" thing I have used is ServiceNow Flows. ServiceNow migration has always been absolutely terrible, this just makes the terrible totally inscrutable. What little ability you had to see what changed in an update is gone.

Do you need to refactor something or swap some logic out?

Good luck. I have had an entire workflow break because I deleted a step at the beginning which renumbered every step after it breaking tons of references and required manually updating each one. No automatic, syntax aware refactoring for you.

Do you need to figure why something isn't working?

You definitely don't get an actual debugger, or to print to stdout or a file so you can look at it live or after the fact. You get to use a horrific, bloated web UI to click a bunch of different colored boxes and hope that the platform and/or you remembered to dump enough information for you to actually know what is going on. It is miserable.

Sometimes you run out of escape hatch.

With traditional development there is the sense that if it is doable with a computer you can build it. It may take forever, it may be expensive and it may suck but it is possible. With these things at some point you may run out of what they are designed to do and can handle.

What it feels like when building with these things is that you never make progress. Either everything works or you have to rebuild everything because these things are incredibly brittle. At any moment a change could break the entire thing and require who knows how much rework and retesting and re-jiggling.

Traditional development isn't perfect either. You bang your head against the wall, stuff breaks, the compiler yells at you but at least you have tools. At least you can google for answers that a thousand people have asked before. Unless you are really pressing new ground in which case you probably don't need google, your particular error or roadblock probably isn't unique.

Some more on ServiceNow Flows & Flow Designer.

ServiceNow Flow Designer are riddled with bugs. The first time I started working with Flows I spent part of an afternoon wondering if it was some sort of elaborate joke, someone lost a dare and had to find out how broken something could be and still release and charge money for it.

I will give you an example.

If you are making a custom REST Action and need to use a script to send an x-www-form-urlencoded request the Script box that you are forced to enter your code into will pre-populate with an example of how to use a provided utility to generate the request body. That provided utility doesn't return a www-form-urlencoded body. It returns JSON. If you don't know what that means just know that these are two, very different, incompatible ways of sending the same information. It is a little like if I asked you to send me a USB thumb-drive and instead you mailed me a CD. It is so obviously broken that clearly this very simple bit of functionality was never tested before getting shipped to customers.

To a certain extent though I can't blame them. How could you possibly robustly test one of these "low code" platforms, how could you cover all of the use cases and weird things that people will try to do. It must be an incredible amount of effort to build and test and maintain these platforms which gets to my last point.

There is a huge amount of effort being poured into these platforms. Why?

Who is actually benefiting from these. It doesn't actually seem to be making "citizen developers" as promised. I've never seen a flow or a pipeline or a logic app that someone without development experience could actually build, or test, or maintain. It isn't the developers who now have to build things without any tools, but with much banging their head against the wall.

I think the target market for these things are salespeople and managers who will never have to use them.

These platforms are great for sales people. They love them because you can make a POC that works in 10 minutes and sell it to the people who decide on things but don't use them without having to explain that to go from POC to functioning anything will be another 6 weeks of development hell for the reasons I mentioned before. Managers also love them because they get to look at something pretty, never underestimate the desire of mid level managers to look at shit that is pretty.

Also someone (but definitely not me) just accidentally deleted the wrong pretty box so you have to manually update your whole pipeline now.