return to table of content

I'm skeptical of low-code

dexwiz
37 replies
19h22m

I am on the other side of low code, building the builders for the most part, here is what I see.

Low code is very easy to sell. All you have to do is make a boogie man out of the IT department, and play on existing frustrations. Then play a demo where a sign up form is made in ten minutes and say your IT department would have taken 3 months. You just make sure to walk the happy path during the demo and don’t stress the tool.

Many things could be low code. Why do you need a developer for a sign up form if you are just making an API call in the end? Wiring up a form shouldn’t take html, js, and a serverside language.

On the flip side, don’t put your core business logic in low code. Low code builders assume anything complex will be offloaded to a specialized system. The best ones provide escape hatches by calling remote APIs or calling a code module.

Low code gets sold to smaller customers because it’s touted as a developer replacement. But really it’s most powerful in larger enterprises where individual teams may have technical people who have business knowledge but not much much IT power. It’s easy to get them to configure something in a SaaS they already use, than get a custom solution from IT. Also low code often comes with guardrails and permission sets tied to existing users.

I see low code as a tech equivalent of the last mile problem in logistics. It addresses a large number of concerns with simple tools, but doesn’t scale well and needs to work in tandem with a stronger central system. End to end low code is a trap, but low code at the fringes is a multiplier.

Groxx
12 replies
18h46m

Low code with an escape hatch is quite nice, because yeah - many things can and probably should be low-code. It's a big productivity and standardization enhancer.

That escape hatch is absolutely necessary for longevity though. It lets you keep your low-code environment simple because you can leave it and write real code when necessary, rather than forcing everything into an over-complicated and under-capable custom thing with no editor tooling.

mdbauman
3 replies
18h4m

Agreed, with the caveat that you also need a policy/culture that the escape hatch should be avoided whenever possible and the low-code work should not be done by developers.

Whenever I've discussed this, the common theme is that business users continue to request features that would be easily achieved in the low-code platform being used. It's hard to blame them; that's been standard procedure for them for their entire career.

But if you're not strict about saying "no", you still end up writing all the same methods but now on top of that you have a GUI that's not providing any value. Or maybe worse, your developers end up maintaining all of the low-code stuff too when they could have just written the code, switching context pointlessly and (probably, depending on the platform) not using source control.

closeparen
2 replies
17h17m

An interesting thing with developers getting involved in those boxes-and-arrows UI things is outages. I made a mistake with one once, and the postmortem quite reasonably asked:

* Where was the design doc?

* Where were the alerts?

* Where was the code review?

* Why didn't you write an integration test?

* What do you mean it just rolled out to production instantly?

When we're considering options in advance of building something, it's a more time-efficient, less wasteful alternative to programming. But having built it, everyone acknowledges that what we have done is programming, and now they wonder why we've programmed so badly.

Maybe the standard IDEs, Git, code review, CI, metrics, and incremental deploy workflows were fine actually?

Towaway69
1 replies
5h10m

For me, none of the learnings is a direct result of using a low-code, arrow-boxes environment. I can deploy instantly to production using any programming environment, if I don't automatically have design documents when using a much-code environment.

Without discipline, any programming environment can lead to failures.

It is true that there aren't any well-defined workflows for using an arrow-boxes environments but that does not mean that these environments don't support specific workflows.

closeparen
0 replies
1h30m

Are these environments attractive because boxes and arrows are actually better than characters for expressing programs? Or are they attractive because they encourage you to skip steps that turn out to have been important? Sure, you can replicate a normal, responsible development process with a no-code tool, but at that point do you really have a compelling alternative to a more traditional programming environment?

throwup238
2 replies
18h2m

Low-code tools have a market fit problem because of that escape hatch. The players keep trying to sell it as a solution to IT deficiencies but it should be sold as an IT empowerment tool. It really doesn't matter how good your last mile delivery is if the shipping container with the product isn’t where it’s supposed to be to begin with.

All the components and modules that low code tools provide should be nothing more than an onboarding tutorial like the first few levels of Factorio, before letting the engineering team loose hand in hand with the users. It shouldn’t be an escape hatch, it should be the front door.

As such all these low code tools make the mistake of making it really difficult to bring the engineering team into the fold: modularization, logging, debugging, version control, and development tools are absolute garbage so instead of engineering providing a few sane company specific building blocks that they can tend and nurture, it inevitably turns into a shitshow because you can’t use a tool that ultimately depends on the IT department to fix the IT department!

The best “low-code” tools have already been around for over a decade: it’s the headless CMS and autogenerated admin pages ala Django and Wagtail. They’ve been focused on solving the content management problem for e-commerce and marketing, but IMO it’s the write path for other groups too. The engineers write the pages and blocks and components while defining an input/configuration schema for an automated tool that is usable by laymen. Up the level of abstraction to a well curated (by the engineers at the customer level) IFTTT layer and bam, you’ve 95% of use of low code without the 5% that inevitably ruins it.

hitchstory
0 replies
6h37m

The escape hatch is where most low code products fall down, I think. This is because of market fit as you correctly point out, but not only that.

It's also because knowing where the escape hatch and how to use it requires greater than average development skill and finesse and it isn't at all obvious when this is required.

The people who use these platforms aren't usually able to tell what kind of problem requires a developer and what kind of problem requires them doing just a bit more research. They're usually vaguely aware that the limit is out there somewhere but in the specific instances when they hit it they often don't know it's happened.

I've also seen some low code platforms get a little excitable about the idea of nearly or even fully reinventing the turing complete programming language to introduce more flexibility to their platform and make that their escape hatch. This is when things go really downhill.

TristanBall
0 replies
17h22m

I totally agree on the "IT empowerment" perspective, but unfortunately the price model of these tools makes it hard for many IT departments to introduce them, at least in established corporate environments, for internal use. Startup and public facing stuff is different of course but my experience is medium enterprise internal IT..

Per end user rather than per developer means they're far too expensive to introduce as a general IT toolbox item, they need to be part of a major strategic project where the $5-30/month per staff user has a hope of being justified.

But that also often takes it outside the "IT Dept", which is often just "infrastructure and pc fleet" support, not development ( at least, that's my experience ). IT might do internal scripting and some service interface tooling, but business tooling and software is rarer, that's usually either dev teams or ERP teams. The ERP teams will already using ERP platform tooling, so that further narrows the market.

I don't have a good solution for this, but it's always been the hurdle I've tripped on working for medium size enterprises.

There would seem to be an opportunity for "open source platform, commercial training and support" here, but vendors seem to gravitate to per user head and cloud only for more immediate revenue and easier support., but again many enterprises still have huge internal only IT landscape's, because cloud is still expensive and the value often isn't seen in relatively static envs.

It's possible this niche has been filled now too, it's been a while since I looked...

Possibly they can be introduced on a "just those who need it" basis, but honestly that's just so bloody tiring for internal tools, not to mention demotivating as you can no longer build tools for "everyone or anyone", it's back to specific narrow business cases, not IT empowerment, but narrow business case also means your usually competing with cots tools or consultants.

mgl
1 replies
17h54m

I really like your take on the escape hatch.

The success of low code implementations often comes with a curse of investing man-years of development effort to build increasingly complex applications in proprietary low code languages executable in a closed ecosystem (and commercial terms) of a specific vendor.

I believe there is a place for enterprise app platforms which are a) open source, b) not based on proprietary languages, c) with low code capabilities, fueled with AI code generation, d) runnable anywhere without staying dependent on typically user-based commercial model.

Shameless plus: we are working on such a thing, and competing with traditional low code platforms is not easy, I could tell a few stories about what we have tried, what works and what not really, if you are interested. I would be also extremely thankful for any comments and hints you may have, see https://openkoda.com

bb88
0 replies
9h5m

effort to build increasingly complex applications in proprietary low code languages executable in a closed ecosystem (and commercial terms) of a specific vendor.

That's the definition of vendor lock-in. Once the vendor has it's hooks in your organization, good luck removing it. Sometimes it's just the cost of doing business, but the more the hooks, the greater the chance that a vendor triples or quintuples the cost of their product that affects your organization's secret sauce.

I feel like the goal of low-code solutions is to get you over the barrel. Much in the same way AWS tries to get into your company's operating costs.

addled
1 replies
17h6m

Having escape hatches is critical, but they should also be well built, or it can cause just as much headache.

Example from us using Azure Data Factory: You can add a step to call out to an API, which we did for a data flow that had a lot of calls. Performance was atrocious. Dug into it, and the API getting called was replying in 100ms or so, but ADF's "escape hatch" was adding 5-10 seconds of overhead to send the POST and parse the HTTP status code.

Microsoft Support said that's normal, expected behavior for the service.

In the end, we had to write an additional batching layer ourselves.

nnurmanov
0 replies
13h33m

This ADF abbreviation remind me of another framework we used, it is Oracle ADF (application development framework) and it was awesome low-code tool! You can literally create CRUD with entry form within minutes, we Spring Boot and ReactJs it could take substantially longer. The good part of the tool is that the code is available and you can make any changes you want. In the enterprise they prefer time to market over beauty or UX, so it did its job perfectly.

onion2k
0 replies
8h41m

That escape hatch is absolutely necessary for longevity though.

I'd be really interested in knowing how often escape hatches like that are actually used. I'd guess it's less than a fraction of a percent, if ever.

robjan
2 replies
15h53m

We tried low code (citizen development) as a solution to the "IT dept sucks" problem. It worked pretty well at the start but eventually became a data governance nightmare and as soon as we needed to restructure the business we ended up with ownerless applications and datastores all over the place.

It eventually turned out there was a prioritisation problem rather than a development capacity problem.

kukkeliskuu
1 replies
10h44m

Can you elaborate about the prioritisation vs. development capacity problem?

gardenhedge
0 replies
7h14m

my guess: There's enough developers but things need to be prioritised one by one. If everything is a priority and everything is being worked on at the same time then there's not enough devs to go round.

kfk
2 replies
19h12m

I like your analogy to the last mile problem in logistics. I would argue in that case people know they are using bespoke, last mile only, systems because there is no other option. Low code vendors promise much more than that, end to end capabilities.

travisjungroth
1 replies
18h50m

I adopted an official personal policy of not working on any data project referred to as "last mile". It's a big sign it's going to be under-resourced and under-appreciated. The last mile is brutal. And that's in the physical world!

You can tell when your last warehouse is close to the customer by looking at a map. You can't tell when your tool is close to what the user needs with nearly the same accuracy. There are a ton of gotchas, and as part of the "last mile", it's now your responsibility.

mycall
0 replies
18h28m

as part of the "last mile", it's now your responsibility.

You also are at the whim of the SaaS vendor to give you the help you need. If they can't do something you think it should, good luck making a hacked workaround to function as it must.

juujian
2 replies
18h38m

I'm curious, do you ever mention anything along the lines of "don't put your core business logic or mission critical stuff in this" ? That could backfire, but it needs to be said.

heatmiser
1 replies
18h17m

I believe the parent says exactly that, no?

abeyer
0 replies
13h46m

I think the question was less "Do you say this pseudonymously to other developers?" than "Do your salespeople say this to your prospective customers?"

siliconc0w
1 replies
18h53m

This is still usually tech solving an organization problem. Launching normal apps gets gated under security, product, or technical reviews but the low code tool becomes a backdoor to all that.

If you just deleted a bunch of processes, or just reserved it to when it actually matters, you wouldn't need to pay a low code vendor to basically allow your team to do their job.

dalyons
0 replies
17h51m

I’m sure OP knows this. But practically that just never happens. Big companies are bureaucratic and process filled with exception

jrumbut
1 replies
14h34m

But really it’s most powerful in larger enterprises where individual teams may have technical people who have business knowledge but not much much IT power.

It's not just business knowledge, it allows the people who are most committed to project success to do the work.

I think that's the real pain point with IT departments in large organizations. They aren't feeling the pain that made you need the software in the first place.

bigfudge
0 replies
13h13m

I agree, but maybe the solution is to attach developers to teams directly. Avoid the centralisation, except for infra that benefits from it.

jrochkind1
1 replies
3h5m

Low code is very easy to sell. All you have to do is make a boogie man out of the IT department, and play on existing frustrations. Then play a demo where a sign up form is made in ten minutes and say your IT department would have taken 3 months. You just make sure to walk the happy path during the demo and don’t stress the tool.

I feel like you just explained how salespeople can scam decision-makers into thinking low-code solutions will do more than they can do, and in no way countered any of the arguments in the OP about it's dangers.

throwup238
0 replies
2h8m

Not every HN comment needs to be argumentative.

Roark66
1 replies
8h46m

Many things could be low code. Why do you need a developer for a sign up form if you are just making an API call in the end?

Oh my... Many, many, maaaany reasons.

For example, your entire stack is built in a certain way and you don't want to introduce new dependencies.

What if your cicd requires your config and code is separate and that you build a code artefact, and let's say 3 config artefacts (dev, cert, prod), all these are then uploaded to a central repo and handed over to some proprietary security/code scanning thing every time you merge new code. Then let's say your deployment is done the same way, you have your "deployment config" artefacts for each environment, but an infrastructure team manages all the infrastructure-as-code artefacts that take your config.

I worked in a bunch of big companies each having their own version of such process.

In such an environment, creating an "example project" that contains all of the scaffolding required and just writing that sign on form is going to take waaaaay less time than even initial planning how to integrate the "no code" tool into our processes.

spinningslate
0 replies
7h26m

this is simultaneously a valid reason not to use low code tools - and why they find favour in many organisations.

In such an environment, creating an "example project" that contains all of the scaffolding required and just writing that sign on form is going to take waaaaay less time than even initial planning how to integrate the "no code" tool into our processes.

I've also seen the opposite. Someone in the org wants a simple site. Maybe a sign up form, or CMS/wiki for internal docs, etc. The dev team says "sure, that'll be 6 months". A large part of which is constrained capacity - the devs need to fit it in alongside a buch of other stuff. Another part is tech choice: the corporate stack uses e.g. React on the front end, calling web services written in Java, backed off to Postgres for storage (or whatever). The devs estimate for building the CMS/wiki/whatever from scratch - because it has to fit the tech stack.

At that point the (internal) customer screws up their face and utters all the familiar frustrations about "IT". Someone somewhere mentions to them that there's a way to sidestep it all, and do it yourself. In their position it's very hard not to see that alternative as attractive.

It's a hard problem. That same internal customer will similtaneously rail against the recharge in their budget for IT. It's a cost: a drag on their P&L. IT says they're under-resourced, and they could do it quicker with more people - but that would increase the P&L drag. Vicious circle.

Software is a sociotechnical endeavour yet we too often focus on the technical and ignore the social aspect. Yet "Low Code" and similar emanate primarily from the social side. Coming back to your post though, not exclusively. Development teams can be equally culpable when zeroing in on tech stacks that aren't a good fit for the problems at hand. Or, perhaps, stacks that are a good fit for the problems they were chosen to solve - but not so much when the new requirement comes along.

Of course, low code is no panacea either. Most non-technologists have no perception of the need for ongoing evolution, even if there's no new feature development. Patching/upgrading is a must. And new features always emerge - most after the original "citizen developer" has moved on / lost interest / whatever. So the whole shebang gets foisted on IT, who are expected to operate and maintain it. Usually with no tests, automated builds, documentation, ...

It's pernicious. At heart, though, it's primarily a social problem that needs a good underlying relationship between the customers/users and the developers. It's Conway's Law. Of course tech choice still matters. But no tech stack is going to magic away problems rooted in organisational friction.

NikolaNovak
1 replies
16h47m

So from a certain perspective, the positive niche / need it would fill is enabling the local power users who might also do complex Excel queries, or have their own MS Access, etc?

dexwiz
0 replies
14h1m

Similar, low code is a bit broader and is usually associated with a business process like taking in a lead, providing a quote, or approving a transaction. Excel can do the calculations for these things but still requires a lot of human interaction. Low code can do a bit more like generating a form, evaluating branching logic, or handling an async process over time.

wegfawefgawefg
0 replies
18h56m

The user is sort of expected to know that it should be used like this, but theyre set up for failure having it sold to them with the wrong framing.

Imagine I bought a vacuum cleaner expecting it to clean all my floors, and never finding out what i bought was a pack of pocket tissues.

Pocket tissues are useful but not when im trying to clean my floor with them.

noobermin
0 replies
8h50m

In this analogy low code is actually the brt or metro as the last mile part is the hard part.

m3047
0 replies
57m

I see low code as a tech equivalent of the last mile problem in logistics.

Ironically it's the OT and logistics people who've figured this out, with low / no code solutions fit for purpose, which don't necessarily run in the cloud, which have full microservice / SQL integration... and baked in OT drivers, RFID and bar codes.

luizsantana
0 replies
12h42m

I never thought of the selling point. It indeed makes a lot easy to sell it, but from my experience, companies always regret using it.

Did you have any positive experience on the after seeking low code?

actionfromafar
0 replies
19h12m

Very mature comment grounded in the human experience as opposed to "tech" pros and cons.

siliconc0w
13 replies
19h19m

As an SRE that occasionally encounters low-code things I'm also pretty skeptical..

* there is like no source control, or if there is the source controlled thing is an unreadable artifact which generally doesn't belong in source control.

* the workflows are poorly if at all documented.

* they still require a lot of custom code but that code isn't as reusable, tested or testable * they often require a proprietary runtime, worse this may only run on windows

* they are difficult/impossible to instrument and so are difficult or impossible to monitor. Or if they do have monitoring it is going to work differently than the rest of your stack - likely using email based alerting which isn't ideal.

* the work is still 100% done by engineers either way, I've never seen a low code or DSL be picked up by non-engineers. (I am also skeptical towards DSLs)

The only tool that was semi-reasonable here was Looker which isn't exactly marketed as low code but at least in the version of the product I used did integrate with source control. Though generally the people writing lookml were still engineers.

I'm much more a fan of composable platforms that compress complexity but still make it possible to delve, customize and extend when necessary.

bb88
4 replies
18h41m

* the workflows are poorly if at all documented.

Ideally it would be easier to understand if there's less code involved. Things should be more declarative, or the low-code solutions would generate good descriptions for what is actually happening.

* the work is still 100% done by engineers either way, I've never seen a low code or DSL be picked up by non-engineers. (I am also skeptical towards DSLs)

Or worse: "Why does this connection to this server fail with SSL Certifcate Invalid? Oh, nm, we'll just uncheck the SSL validation box."

fieldcny
1 replies
17h4m

“Ideally” is quite a word, highly subjective.

But really you are missing a key piece of the puzzle, it matters less what is happening and more why. Sure a low code tool could churn out a textual description to say if the value of some variable is < some threshold branch to X else branch to Y, but thats generally easy to figure out, why is that threshold important, that’s a question that requires understanding the intention of the user of engineer who set it up, that’s not something you can just puke out of an auto-doc tool.

I would go so far as to say the inability to capture intention is one of the sharpest edges for low-code tools, it makes the solutions built on then extremely brittle and creates silos of knowledge.

Expanding on that further this is why most auto generated documentation is worth the effort put into it.

bb88
0 replies
13h47m

All programming languages are some sort of abstraction to the underlying machine language. Low code is just "one more abstraction to machine language".

Previous art in this area would be Lotus Notes (1990's), Hypercard (1980's), and Lotus 123 (1980's).

Low code should be as close to a speaking language as possible. Declarative ideally. e.g. "Create a read-write rest framework for the database table named orders".

An engineer would then go, "Oh, so you know you're missing permissions from the LDAP groups", and then solve that problem, and then figure out how make the LDAP groups map to the low code framework.

That's kinda the sorta thing we do already.

jabroni_salad
0 replies
13h37m

It should be easier to understand but lowcode designers seem to like making you jump between 30 different screens instead of having it all in one place. Unspooling a lowcode implementation has got to be one of my least favorite activities.

ahoka
0 replies
7h55m

What if you told IT months ago the reason their TLS setup is incorrect?

maccard
2 replies
16h52m

here is like no source control, or if there is the source controlled thing is an unreadable artifact which generally doesn't belong in source control

I think this is an artifact of "source code is text" that our current tools assume (and is invalid IMO).

Otherwise I agree

ledauphin
1 replies
16h29m

i think the concept of "source code as AST" or something like that is basically a fine one, but the devil is in the details. your "true source" must continue to support (just off the top of my head):

- precise "decompilation" to readable, idiomatic text - comments - line numbers or some semantic equivalent

fwip
0 replies
13h35m

You might like Unison [https://unisonweb.org/].

gghffguhvc
2 replies
14h43m

I don’t think the no source control is fundamentally the issue. Change control is the issue. Eg in CAD I quite like onshape’s “Versions and History”.

abenga
1 replies
14h6m

Is the "Versions and History" transferrable between instances of the program? Can it be reliably used by a couple, dozens, even hundreds of people?

gghffguhvc
0 replies
10h56m

Yes. Onshape is web based. Every change is tracked and can be rolled back. There are versions and branches. Multiple people can work on the same document. The equivalent of a git comment would be a version with a comment.

hanniabu
1 replies
8h49m

I think Retool is the best I've seen. They have source control, great documentation, reusable custom code, can tie in external apis for monitoring.

I'm someone that has a little less than junior dev experience (I can hack together a website), but nowhere near the ability to work on production code, yet I was able to be proficient with Retool. The only downside is the cost.

kinj28
0 replies
7h51m

You may want to check alternatives. Ranges from open source to closed source folks like us.

peteforde
11 replies
18h47m

My personal view is that you're right to be skeptical, but perhaps not for the reasons you mention.

I think that GPT-4 today is good enough to replace about 80% of programmers in the right hands. Put differently: we probably don't need bootcamp grads anymore. The folks who keep their jobs are the ones who intuitively grasp what needs to be done, how to break that ask down into iterative tasks, and how to word those tasks as prompts.

Instead of scrambling to replace application stacks with layers of dumbed down abstractions, we are actually replacing the less experienced people working with application stacks.

Dramatically better outcome for everyone but the people who thought they could take a bootcamp and create generational wealth.

faeriechangling
10 replies
18h25m

ChatGPT is nice but it’s not a 5x speedup.

peteforde
4 replies
17h32m

Last night, I spent about five hours just beginning to think about reverse engineering a proprietary file format that packs multiple MIDI files so that I could extract them. There was a whole lot of reading the MIDI spec, searching for strings in a hex viewer and calculating values in a hex to decimal calculator. I didn't write any code in this time, just satisfied myself that it was possible.

Today, I asked GPT to do it for me, and it basically wrote the program for me. I did 1-2 follow-up requests, but I figure that it saved me about 2-3 days of effort. It's relevant to say that I wouldn't have ever actually proceeded with that project because 2-3 days is not a luxury I can afford.

https://chat.openai.com/share/82e85eb9-1f80-46d5-a75c-29a437...

Now, someone who regularly works with MIDI files - heck, someone who regularly works with binary files - could probably do it in a few hours, but this entire process took minutes. It took longer for me to verify the results as perfect than it did to interact with the GPT instance.

I assume that the person who downvoted my comment is a bootcamp grad. Good luck with your future endeavors.

p3n1s
1 replies
5h55m

It looks like you got lucky and this proprietary format is nothing more than standard MIDI file concatenated together with perhaps some additional data that you are able to ignore +/- some header patch. Frankly this barely qualifies as reverse engineering, at least it represents some trivial case, I mean I'm happy it was easy, but reverse engineering just rarely ever works out so straightforward.

And I would expect someone with competence in scripting language of choice to pop out that script which is a loop and file IO in a few minutes, not hours (assuming it is even correct). And if they have a basic experience working with binary files should know how to google the necessary info about MIDI in seconds.

However looking at the transcript I am also confused because it says (correctly): MIDI files typically start with the header "MThd" followed by the header length, format type, number of tracks, and division. It goes on: "Once a MIDI section is found, we'll extract it according to the MIDI file structure". OK. But the script does NOT do that it reads 4 bytes starting from offset 8 as a 32-bit big endian "length" which is not "according to the MIDI file structure". The standard format is 2 bytes for a format specifier (AKA type) (0, 1, or 2), and then 2 bytes for the number of tracks.

ie, this is wrong in some way:

    # Read the MIDI header and length (14 bytes in total: 'MThd' + 4 bytes for header length + 6 bytes header data)
    midi_chunk = io.read(14)

    # Extracting the length of the MIDI data from the header
    midi_data_length = midi_chunk[8..11].unpack('N').first
So either the proprietary format you're dealing with actually does have a variation on the header of the embedded MIDI file. If that's the case, I would have to deduct points from ChatGPT because I would expect a competent developer to comment/document this fact, no where in the transcript is this stated.

The other possibility I can see is that if your file is a bunch of standard Type 1 MIDI files, the unpack/parse is going to read that as 65536 + some small amount and will extract files that are all around that size. Since the next step is to look for another MThd magic it will just gleefully resync (I assume these are small segments), but you will end up skipping a whole bunch of files and they will be unceremoniously tacked onto others (which will just be ignored in many players).

So what did it end up being? If it was the second case, I would also be suspicious that a first crack LLM follow-up "fix" isn't subtly wrong and prone to false splits.

On further thought, how could it be the first case? If it were the outputted files are not standard MIDI. So something is fucked here. Either you have something totally broken or you have further follow-up and we have to believe it is not subtly broken.

"There was a whole lot of reading the MIDI spec, searching for strings in a hex viewer and calculating values in a hex to decimal calculator."

One pearl I would lend in relation to this: use your REPL, that is a productivity accelerator.

I am also sincerely interested in examples of LLMs reverse engineering something with compression or encryption or some checksum, or like some actual complicated structure that has to be teased out (this is something humans do all the time), maybe something that is most easily solved by cracking open the compiled parser, I'm not saying they can't do it, but plainly put this example is too trivial to be interesting and frankly barely qualifies as reverse engineering at least insofar as some sort of RE Turing Test analogue.

----

If the format works the way I think it does (and this is based on nothing more than general experience and this thread, so give me a break), the only robust way to deal with this is to either figure out where in the proprietary data some type of length field is, and clearly ChatGPT was not going in that direction, nor do I believe it would be able to divine that information from a file upload. Or to use this slightly wonkier method but actually read every MIDI chunk header, since standard MIDI has no total file size length encoded in it. The loop should be: look for MThd, read the NEXT 4 bytes for the length, skip, read and write out chunks (ie 4 byte magic followed by 4 byte length), split when chunk type not seen (that's what makes this a bit fragile, but its probably good enough). If you just look for MThd, you'll split if the MIDI data has an 'MThd' in it.

peteforde
0 replies
29m

Ha! First: I appreciate the detailed and thoughtful reply, even if I feel wildly judged.

It's distinctly possibly that you're simply "better" at reverse engineering than I am, which really just means that you might do it frequently and I might do it a few times a decade. This isn't going to keep me up tonight, because my identity isn't tied to being someone who reverse engineers things.

That said, I am pretty thrilled with this solution. I launched a web-enabled version last night and so far about 1100 people have used it to convert 6800 files after I replied to some posts on relevant musician forums around the web.

In my defense, what you're not taking into any consideration is that until 48 hours ago, I'd never looked at the MIDI spec or opened a MIDI file, before. You clearly have a huge amount of domain knowledge that I don't pretend to have.

I also, shocking as it may seem, haven't worked with binary formats in over a decade. I'm a web developer. Binary formats aren't an alien mystery to me, but all of the tools for working with them had to be re-learned as I was working on this.

Anyhow, don't fall into the trap of equating typing speed with the time it takes to learn a domain and consider (design) an approach. If I could think at the speed I can type, John Carmack would have nothing on me.

In the end, I absolutely did get lucky. The proprietary format was, as you proposed, a bunch of 1 track/format 0 MIDI files, bounded by hierarchy metadata that was discarded.

jsunderland323
1 replies
13h32m

Now, someone who regularly works with MIDI files - heck, someone who regularly works with binary files - could probably do it in a few hours, but this entire process took minutes.

In my experience, I think this is the key area it exceeds but this isn’t all that common. Hard to imagine 10x productivity boost unless you’re a jack of all trades master of none.

In my experience it’s really useful when you need to do something in a domain you aren’t super familiar with (that you don’t need to become proficient in). But when it comes to the everyday stuff that is my comfort zone I don’t need it. I’m years past looking up syntax or standard library functions for the languages I work in regularly. Every time I’ve tried to use it for a remotely complex algorithm I’ve found it to be much faster to implement by hand then try to debug whatever it got wrong. But for makefiles and gh actions — it’s a true godsend and those things can be major time sinks.

I’m also a developer who really likes to know what my code is doing. If I can’t code something myself I don’t feel comfortable deploying it. But I’ve found this is less universal of a sentiment than I would have imagined in the past year.

peteforde
0 replies
12h59m

Definitely hear you; not every problem can be so novel.

That said, the simplest way to understand the code is to read it before committing it.

Meanwhile, the tooling will only continue to get better as larger and larger context windows are introduced.

kaashif
4 replies
18h9m

Was the comment edited? I don't see anything about speedups.

faeriechangling
3 replies
17h45m

If you can replace 80% of programmers with GPT-4 and maintain the same output, the remaining 20% would have 5x higher productivity.

peteforde
1 replies
17h29m

Yes, and I strongly suspect that this is conservative.

Mid-term future iterations will quickly get to 10x and beyond.

Also: your math is based on the random elimination of 80% of programmer roles. I was specifically talking about the elimination of the worst 80% of programmers.

By worst, I mean "the least productive" - not "terrible persons".

faeriechangling
0 replies
1h10m

To make another argument:

Not to be a raging egalitarian, but it’s hard for 20% of workers to have enough business context as 100% of workers to be able to maintain the same level of productivity. Things like gathering requirements become massive bottlenecks to productivity.

As people in this thread have stated elsewhere, there’s a HUGE last-mile problem in programming. For this reason having 20% of the programmers we have now might not be the ticket. We may even want to take some of these mediocre programmers we have now and have them do other duties like say, systems administration. In other words, it could be that hours spent programming decreases rather than the number of workers, to allow for higher communication bandwidth.

kaashif
0 replies
8h48m

I guess we're reading that differently.

Eliminating 80% of programmers does mean that on paper "output per worker per hour" has increased, but it doesn't necessarily follow that you can deliver faster i.e. the output/hour of the business as a whole might stay the same.

In a degenerate case this might take the form of AGI replacing the lower tier workers but doing the same thing at the same speed.

nextworddev
8 replies
18h0m

I’ll go against the grain and say low code will eat software engineering.

But not the conventional low code platforms like web flow or retool or power apps.

It will be AI native and built in a visual+conversational manner.

toomuchtodo
3 replies
17h52m

As someone who worked at a low code workflow SaaS, I agree with this. The automation is a commodity, the value was in discovering that people wanted to talk to the LLM to orchestrate their automation vs bespoke workflow design UX. You can also decouple models from API scaffolding like Gorilla LLM (or rather, broad models that dive deep into use case specific models on demand).

flimsypremise
2 replies
17h41m

Congratulations you have just invented yet another query language with the special fun addition that the result is non-deterministic.

toomuchtodo
1 replies
17h5m

Doesn’t matter, as long as users are getting value. How you solve the problem is less important than solving the problem. I expect LLM output to improve over time, along with mechanisms to coax deterministic behavior.

nextworddev
0 replies
15h4m

Yeah developers sometimes overrate precision when in reality being precise is not as good as getting the job done

quickthrower2
1 replies
16h23m

Software Engineering will be fine: it has been eating itself since Lisp invented macros. Maybe software engineering should be called “The operations of automation using data on general purpose machines”. That will not die. It will look different though.

nextworddev
0 replies
15h5m

Sure - it will take on different form

doubloon
0 replies
15h4m

Power Automate Cloud already has an AI builder, you type in "At 4pm every day check my Outlook inbox for an email from Suzie Snowflake, and if it says Critical, then check Sharepoint for a file from Integration Services and if its contents contain the string "Blorb" then send an email to Escalation"

the result is often slightly wrong, but if someone in MS management is paying attention and could get it to ChatGPT-python level of accuracy, it would take over an enormous amount of stuff.

contravariant
0 replies
16h13m

That might work but it's going to require conversational AI with the audacity to talk back, which is going to be interesting...

debarshri
7 replies
19h24m

We started out with webflow for our landing page. Problem with low code or any abstractions in general is that it becomes leaky the moment you want to do complex stuff. The reason webflow worked for us initially was we did not have to bother with hosting, CMS etc. It because very restrictive at one point. Only couple of people know how to make certain changes.

Eventually we moved to nextjs and vercel. We are faster with iterating on our landing page as well as any engineer can be pulled into the implementation.

All lowcode platforms are great in basic usecases but fails when the usecases because complex.

xcskier56
6 replies
19h19m

We went the other direction (to be fair, just building a simple static site). I’m a developer therefore I should make the marketing site! Problem is that with limited resources that took away time from building the product.

We’ve moved to various platforms over the years so that our designers with a touch of web knowledge can build our marketing site. They’re happy bc they don’t have to wait to make changes and devs are happy bc they don’t have to work on marketing sites.

The designers actually enjoy the constraints to a degree bc it simplifies their job as well.

But like I said, it’s just a simple static marketing site

debarshri
5 replies
19h8m

This is our marketing website https://adaptive.live/

As you can see, it is more than a static website. Implementing this in webflow was nightmare.

pembrook
1 replies
16h8m

Maybe I'm not clicking deep enough, but that marketing site looks like a super trivial Webflow CMS use-case.

Although if your team is all engineers pushing to git every day, I could totally see how they'd find Webflow frustrating (since a UI instead of a codebase would be a huge pattern-interrupt for their daily workflow).

That said, once your startup grows, what typically happens is you'll need to bring in specialized marketing/sales/design/SEO folks (vs. Swiss army knife SV startup hustlers). Their hours are far cheaper than engineer-hours and they're also much better at marketing/sales/design/SEO work, like your landing pages & blog.

They will not be able to change anything on your slick NextJS/Vercel setup , and will be filing tickets daily and overwhelming your engineers.

Then you'll probably have to resort to some nightmarishly bloated "headless CMS," and waste a huge amount of time on implementation, and then it will be impossible to change.

That's when it makes sense to switch back to something like Webflow.

I've seen this happen multiple times.

debarshri
0 replies
13h24m

We use one of those headless CMS already. You have a point. It works for us for now, we will see how it turns out. You need a bit of discipline to execute it.

bb88
1 replies
18h21m

Webflow does seem to at least dogfood their own product.

https://webflow.com/blog/webflow-at-webflow

But the big issue seems to be that they're not marketing anything to the developers. They're marketing everything at the managers -- particularly the kind of manager that doesn't really understand software.

debarshri
0 replies
17h51m

Also, agencies who build and design websites.

elforce002
0 replies
18h26m

That site looks tidy. It's clean, modern, and pleasant to watch. Your team did a great job.

ubertaco
6 replies
16h6m

Can I check a "low-code" implementation into version control, using standard free tooling? Can I, when something inevitably goes wrong, do a `git log` equivalent to spot the source of the problem? Can I then roll back to a specific commit, using off-the-shelf free tooling?

I find that generally the answer is most often "no," which is kinda a nail in the coffin for serious usage of "low-code."

ryanjshaw
1 replies
8h20m

I build and maintain stuff in Power Apps, when it makes sense. You can export your solution as a ZIP file containing human readable-ish XML/JSON definitions of everything (GUI forms, tables, processes, etc.).

This is the version control/CD process I designed:

- We have a normal Git repository, hosted in Azure DevOps cloud

- Developers work in the "unmanaged" cloud-hosted Development environment

- When ready to move a set of changes forwards, the developer branches the repo, and runs a PowerShell script to export the solution from the Development environment to a local ZIP file, which is then automatically unzipped. The only other thing I do is reset the version number to 0.0.0 within the `solution.xml` file, because I'm pedantic and the code isn't necessarily a deployable build yet - it could be an intermediate piece of work.

- Developer reviews the changes, commits with a message that links to work items in Azure DevOps, and creates a pull request -- all standard stuff

- On the Azure DevOps side, once a PR is merged, we build a managed ZIP -- which is really just the same code, with a flag set and re-zipped up with a version number that matches the DevOps build number (in the Power Apps world, "managed" package deployments can't be customized on UAT/Production without explicit configuration allowing it)

- We then use all the normal Azure DevOps YAML pipeline stuff to move this between UAT, Staging and Production with user approvals etc. The Azure AD and Power Apps integration makes this very pleasant - everything is very easy to secure, and you don't need to pass secrets around.

- You can rollback to a specific commit using normal Git tooling or just redeploy a past build if there is one available.

That all being said, most people don't do the above. I should probably sell a training course, because it took quite some time to put all the pieces together. The bigger problems are planning ahead for changes without breaking stuff that is already live, because you generally only use 1 development environment for an entire team.

gregd
0 replies
3h17m

Have you tried the new pipelines built into PowerApps?

otabdeveloper4
1 replies
11h13m

Depends on what you mean by "low code".

Does Node Red count?

Towaway69
0 replies
9h10m

Node-RED has git support (via the project feature) but doesn't support any visual git operations.

I am a big fan of Node-RED but it lacks a visual version control and without that, it makes little sense creating visual code and then use a textual version control to revert changes.

bruce511
1 replies
13h31m

You do realise that there were ways to debug things before GIT came along? Indeed before source control came along?

What im saying is that you should be wary of ignoring things that don't fit into your current work-flow, because sometimes that "critical" thing in your workload is less critical than you think.

8organicbits
0 replies
9h24m

Those tools are in the current workflow because of industry-wide lessons learned. What are the alternatives you allude to?

simonw
6 replies
18h37m

I'd find this article more useful if it named names - I still only have a loose idea in my head as to what qualifies as a "low-code tool". I'd like to know which low-code tools in particular the author has experience with.

abound
3 replies
15h38m

I keep a list of them, I think I originally got most of these from https://news.ycombinator.com/item?id=33592990

* Retool - https://retool.com (not OSS)

* OpenBlocks - https://github.com/openblocks-dev/openblocks

* Saltcorn - https://saltcorn.com/

* Interval - https://interval.com/

* Bracket - https://www.usebracket.com/

* Windmill - https://docs.windmill.dev/

* Budibase - https://budibase.com/

* AppSmith - https://www.appsmith.com/

* ToolJet - https://www.tooljet.com/

I only have direct experience with AppSmith.

jinen83
1 replies
14h26m

Founder of DronaHQ here - a Retool alternative. would love if you can include us as well in your list. unless its just a list of open source

abound
0 replies
13h22m

Will add! For what it's worth, it's just my own internal list of tools in this space.

I have a few dozen such lists, I'll review one or two of them when building new things in a specific domain that might benefit from such tooling.

No requirement for open source, but I call it out explicitly in my notes since I do mostly use open source/self-hostable tooling, especially when working with nonprofits.

rcbdev
0 replies
9h42m

You forgot about Oracle APEX.

I jest, of course.

jeremyjh
1 replies
18h32m

Salesforce is the most well-known example but it’s so popular that actually it’s not hard at all to hire experienced developers who know it’s custom server-side language and all its workflow automation and reporting tools. They just hate their lives.

aleph_minus_one
0 replies
18h13m

They just hate their lives.

Triple their payments, and they will be fine. :-)

dventimi
6 replies
18h37m

I'm skeptical of code. Code is needed to create operating systems, database engines, game engines, network servers, graphics and plotting libraries, and other tools that are typically used by software engineers but not end users, and yet most of us are not creating these tools. Most of us are using these tools to serve end users. This isn't a demanding task and it doesn't demand much code. Maybe in the UI, but for the vaunted "business logic"? Please. You don't need reams of code in a general purpose programming language to provide business logic.

iimblack
5 replies
17h51m

Have you done a lot of low code work? I’ve found it just ends up with escape hatches everywhere because the low code platform can’t handle some edge cases or gets too complex for the non engineers to reason with. Other issues are observably, logging, testing, debugging, etc are often impossible or very difficult. Could work for small shops but the enterprises it gets marketed to usually need the normal code.

dventimi
4 replies
17h48m

I do almost all of my work in the database. I don't know if you want to call that "low code" or not. Evidently, it doesn't look like code to many other developers but then again it precedes current low-code platforms by about 40 years, so who knows?

rcbdev
1 replies
8h51m

If you use a procedural programming language (PL/SQL, T-SQL, etc.) to model your domain, you're just old-school programming.

If you're using a tool like Oracle APEX you're doing Low Code, bar the few escape hatches.

dventimi
0 replies
2h33m

If you use a procedural programming language

Occasionally, I use a procedural programming language in the database. Usually, I don't.

iimblack
1 replies
17h45m

I wouldn’t call that low code but yeah the definition is ambiguous. I’m mostly experienced with and referencing flowchart type tools.

dventimi
0 replies
17h42m

I'll grant I'm pretty skeptical of those.

ralusek
5 replies
19h26m

Code is a way of explaining rules. If you have a lot of complicated rules, whatever system you use to represent it is going to be complicated. Best case scenario for low code is when the rules are simple or very predictable. In my experience, this is very rarely the case, no matter how simple a problem seems from the outset

ed_elliott_asc
2 replies
18h26m

I’ve seen this exact thing, a “low code” engineer creates an app, we asked for some changes and all of a sudden “no can’t be done” - it is almost comical tbh

daxfohl
1 replies
18h8m

Or the converse:

We've got all this spaghetti code.

-- I know, we'll rewrite it as a rules engine!

...

We've got all this spaghetti yaml.

codedokode
0 replies
7h53m

What about compilers? They have lots of optimization rules, how do they solve the problem?

gitgud
1 replies
18h7m

I think this describe low-code systems the best.

In my experience, low-code is “easy software development” but without the guard-rails of version control, debugging, open standards, local development, unit-testing etc etc…

These are the things that really matter as software complexity grows…

Towaway69
0 replies
9h33m

It's true that most low-code solutions have no version control but that's not because it's not possible, its because no one builds version control as low-code solutions aren't taken seriously. And without a VC, low-code solution won't be taken seriously.

I have been using Node-RED[1] for some time now and have began creating a visual version control concept. The difficulty is differentiating between visual changes and logical changes - visual changes aren't usually the cause of bugs.

[1]="Low-code programming for event-driven applications" - https://nodered.org

netman21
5 replies
17h39m

All I know is that I was quoted $50K from a Ukraine team to build an MVP, as long as I could provide detailed specs down to every function. I hired an intern who used bubble/airtable to build our product in two months and had ten paying customers in 6 months. After almost two years have yet to find a reason to move to a traditional stack. We have had 6 hours of down time in those two years thanks to bubble issues. I can live with that.

quickthrower2
1 replies
16h30m

Not a fair comparison. One you were asking for fixed price contract the other you are paying a salary. The salaried person is more likely to be able to be agile and not need requirements (if you said to the intern $20k once I am happy with the job they’d say “define happy” and you are back to requirements!)

As for code vs. no code. If (big if!) bubble can do what you need it can be a cheaper route to launch an MVP.

itsoktocry
0 replies
2h56m

If the question is "how do I get what I need built", the it's a completely fair comparison.

haolez
1 replies
16h50m

Please, do tell more!

Where I see no/low code fall apart is when complex input data validation is required. However, I can also see that this might be our old practices getting in the way of innovative forward thinking.

Maybe you've found a way, since you are starting from scratch :)

voltaireodactyl
0 replies
13h54m

FWIW I run the IT dept for a mid-level talent agency. I moved us off an old system and into Airtable specifically because it’s flexible enough on every front. The killer feature for me is the concept of “views”, which means we can have all the data available at all times, but only surface the data that a particular user needs for them. In a company full of less than technical people, this has been an absolute godsend.

And when we continue to grow, there are ways off of Airtable since it’s all just CSV underneath.

prakhar897
0 replies
8h39m

Can you share your product? I want to see how an enterprise level bubble app looks like.

cgrealy
5 replies
19h23m

Horses for courses..

If you want to build a shed, go to your local hardware store and buy a kit set.

If you want to build a skyscraper, get an architect, some engineers and a competent building company.

agentgumshoe
1 replies
17h8m

Which of course becomes the CTO saying of course the business can build skyscrapers with these simple kit sets.

givemeethekeys
0 replies
15h58m

I've seen the opposite. Business hires new CTO who has no knowledge of existing stack and why it is breaking but sells the top brass on a low code replacement because of how quickly he can build with it. Spends a year building the replacement, forces a hard switch and fireworks ensue.

quickthrower2
0 replies
16h28m

If you want to bank land, build a shed and rent it out, then if you successfully get rezoned build the skyscraper.

jbsmith1
0 replies
18h0m

Bingo

_heimdall
0 replies
6h10m

I've never seen a local hardware store shed kit that wasn't complete garbage for the price.

Building a simple shed isn't hard, if you can handle assembling the kit you can buy and cut the basic materials yourself. The trickier parts like getting it watertight or installing doors and windows have to be done either way, all the kit gets you is a bundle of inferior materials and a bit of time savings cutting studs.

ChrisMarshallNY
5 replies
18h5m

Define "Low Code."

Is it a programming language, a framework, a compiler/linker/IDL, etc.?

I mean, there are some that could argue that C is "low code," because it isn't Machine Code.

I started in Machine Code, and, these days, write mostly in Swift. Swift seems like "low code," compared to Machine Code.

I assume that they are talking about things like Qt, React Native, Xamarin, Electron, or Ionic (You can tell that I develop host apps).

I write native Apple, using established Interface Builder SDKs, mainly because of the first point. I like to have 100%, and Highest Common Denominator approaches don't allow that.

Also, I find that upgrading can be a problem. I have been in the position of not being able to support the latest OS, because a library hadn't been updated, yet.

iimblack
2 replies
17h58m

IME is much higher level than that. These are when you program by essentially just making a diagram (ideally).

ChrisMarshallNY
1 replies
16h23m

I remember when Rational Rose was supposed to let you create a giant server system, just from a "Booch Blob" diagram.

I don't think I ever heard of a system that was successfully shipped, using that.

ahepp
0 replies
9h19m

It's interesting to think about this in the context of model based development / UML.

Both are situations where people are trying to make the primary source something other than written text. I guess I'm biased, but I think written text has been wildly successful. The more experience I've gained, the more I use text based tools and generally prefer text to alternatives. Even in a recent case where I wanted a diagram, I used graphviz to automatically generate it.

LikesPwsh
1 replies
17h53m

Generally low-code are those gui-driven development tools.

E.g. You can write a data pipeline in SSIS by just dragging boxes around and entering connection details.

Sometimes the abstraction doesn't expose something you'd like, so you add a bit of code (SQL/C# for SSIS), but that's the "escape hatch" rather than the default workflow.

You've also got the approaches like Power Query, where a frontend action is automatically recorded as code (M in that case) , but the code is largely hidden from the end user and only used for source control/escape hatch.

ChrisMarshallNY
0 replies
16h28m

Oh. I have yet to encounter one of these that I'd take seriously.

I have an anecdote, from a friend of mine, from the 1990s.

He was a fairly well-paid team leader for an NYC bank. Ran a C++ shop. He had to wear a tie to work, but was paid enough to buy a house, in his twenties.

In any case, when I knew him, he was an even-higher-paid consultant, working for the same bank. This time, he wore a three-piece bespoke suit to work. He now owned a house in Port Washington, and he was still in his early thirties.

He told me that the bank wanted to release some new server-based product. This was before the Web was really a thing, so it probably was an EDI system (I didn't ask him what, as I knew he wouldn't tell me).

He consulted with his team, and submitted a proposal for a C++ project, taking several months, and costing six figures.

Some VP (banks have lots of those) came in, and had been studying Visual Basic. He also hated the IT teams (they can be like that, you know).

He told his higher-ups that he could write the whole thing, in VB, in half the time, for a quarter of the money (since he'd be doing most of the work, himself).

Stop me, if you've heard this before...

My friend lost the bid. He quit the company (along with most of his team), and traveled around the world for a couple of years.

When he got back, the bank was in a shambles. The VP had screwed the pooch in a big way, and was long fired. Attempts to redo the project were dumpster fires, since they no longer had any trained engineers on staff, and they couldn't hire new staff.

They were begging my friend to come back.

And the rest is history...

kukkeliskuu
4 replies
8h42m

The expensive part of software development is not coding, but figuring out what needs to be done. It appears people are trying to optimize the less important thing.

onion2k
1 replies
8h39m

It appears people are trying to optimize the less important thing.

...which is also the expensive thing in most cases.

kukkeliskuu
0 replies
7h1m

Why is it expensive? If somebody can describe the problem with sufficient detail and unambiguity, the core coding part will be very straight-forward, fast and cheap to do, regardless of the programming language. The problem is that very often it is impossible to do.

kybernetikos
1 replies
7h49m

Low code is absolutely not about optimising coding (although I can see how you might get that idea). It's about moving the executable work away from specialised coders and to the people who actually have the problem. And when you can do that, you should.

Low code is all about optimising the more important thing.

The downside is that all those software engineering concerns that the average business practitioner is poorly placed to cope with often find a way of reasserting themselves and when they do, you typically end up with a mess worse than if you'd started with a code solution in the first place. However, in the domains that they don't, or where the negatives are not business critical or can be adequately mitigated, low code can be incredibly empowering to noncoders (excel is probably the canonical example).

kukkeliskuu
0 replies
7h6m

I think we agree more than you seem to believe.

What I mean is that if the people who actually have the problem could describe the problem with sufficient detail and unambiguity, the core coding part would be very straight-forward, fast and cheap to do, regardless of the programming language.

Of course the additional things beside the core, like change management, monitoring, security, APIs etc. would add to the cost, but they are at least possible if you are not on low-coding platform.

The problem is that for anything basides the simplest applications, people cannot describe what they need in sufficient detail and unambiguity. This is where the cost of the application development comes from.

There are many means to bridge this gap: user interface design, prototypes, agile development, waterfall requirements gathering etc. Excel is a way to iterate, that many professionals learn to use. If the end users can develop software that solves their problems, and does not cause other problems, there is no problem.

From what I have seen, low-coding is sold to IT departments with promise of cost savings in the coding part, and to other departments as a means to bypass IT that they consider slow, expensive or not delivering what they want.

So we need to get down to what we mean by low-coding and what context we are talking about. In addition to Excel, Django appears to hit another sweet spot in many contexts. It is very fast to develop and iterate with, comes with built-in admin UI, but it is still possible to add fill all the corporate technical requirements as well.

The low-coding platforms the link points to that seem more problematic usually have some custom programming language, abstraction layers that often limit the extensibility for more complex applications, graphical ui designer, have difficulty supporting enterprise requirements (those security, auditability, monitoring etc.)

kkfx
4 replies
19h26m

IMVHO the "low code" environment have a name: end-user programming. The thing the entire entire industry have done it's best to destroy it after Xerox, Symbolics.

The rest is the nth failed tentative to makes users jailed by ignorance selling the idea people can do thing without knowing things. It will fail like any other tentative done before.

zdragnar
3 replies
18h48m

Microsoft Excel is end-user programming. The amount of businesses that have critical processes done entirely in Excel is both impressive and terrifying.

It is basically a database, reporting tool, IDE and half a dozen other things all rolled into one giant mess.

elforce002
1 replies
18h30m

I know an SMB that has all its operations on Google Sheets. They told me they don't have time to learn any tool (all their efforts go to keep the business running), and they don't have the money to hire a full-time dev. I offered them the opportunity to develop their platform pro bono. They're thrilled since they will be the first business with that type of platform.

zdragnar
0 replies
18h9m

This applies up, as well. I was involved in talks with a household name (in the US at least) retail store that still managed purchasing for all of their locations via spreadsheet, and had a team of 8 people who were allowed to touch it at any given point to reconcile inventory.

They had looked at getting a proper purpose-built system in place, but I don't know what happened after that.

CPLX
0 replies
17h4m

It's not that terrifying in my opinion, it's mostly just impressive.

From a business standpoint it's probably the single most useful software platform ever invented.

cirgue
4 replies
19h24m

Low-code is just good libraries and good frameworks. My hot take is that anything “low code” beyond that is just an aggressively user-hostile config interface.

xnx
3 replies
18h18m

Most(all?) self code self-hosts, which is extremely valuable. There no shortage of smart people who can creat complex tools (see Excel for examples) if hosting it wasn't currently such a ridiculous prospect.

twic
1 replies
17h48m

My version of low code is writing HTML pages with a big script element full of vanilla JavaScript, and putting them in this one git repo we have which gets deployed to a web server.

Obviously it's not actually low code, it's 100% code, but it creates a space without a lot of the complexity and ceremony of 'real' software development. I don't write tests, I don't future-proof, I don't set up deployment or monitoring machinery, I don't worry about anything except solving a small, well-defined problem quickly.

It's definitely not a good approach to everything. But it's quite common for one of my users to say something like "I need a dashboard showing how the current reactor temperatures compare to the averages for yesterday, and also the available cooling water for each one", where that's all data we have existing websocket feeds for, and I can get that to them very quickly without it becoming formal feature development.

Lack of testing and monitoring means the products often break. But when they do it's typically benign - the page doesn't load, or shows no data, and if a user needs to use it, they'll complain, and I can fix it.

If a page ever got too complicated, or too critical, I might want to port it onto real software. But that hasn't happened yet.

globalise83
0 replies
3h0m

Reactor temperature monitoring is surely the exact area of software engineering (along with medical software) where you'd want the most robust processes isn't it? If your solution says everything is fine when in fact it's not, someone will have a big problem on their hands.

briHass
0 replies
14h22m

I'd argue that is actually the hard part of software engineering. Sure, I can learn the basic syntax of a new coding language in a week or so, but learning all the deep frameworks to do non-trivial stuff, conventions, deployment, and how to diagnose bugs can take years to become expert at.

Much of this feels like needless complexity, but its ubiquity in almost every stack points to something fundamental, in my opinion: the classic 80/20 rule. That last, irreducible 20% complexity is where the dragons lie. Expectations for software have grown, and boundless flexibility is table stakes.

talldatethrow
3 replies
18h22m

I'm sure this has been asked a thousand times, but does something like Visual Basic exist for the web?

reidjs
1 replies
18h8m

JavaScript? Or the developer console perhaps.

talldatethrow
0 replies
14h19m

The ease in which I can just drag and drop things, and write some logic behind it, and it later compiles the code for me to execute elsewhere.

zubairq
0 replies
11h16m

Not yet, but I am building it here: https://github.com/yazz/yazz

Eji1700
3 replies
18h15m

I used PowerApps.

It is so so so close to being a silver bullet tool for quick front end crud that can use your AD to authenticate.

Instead though, it’s got the most absurd pricing model that even their own reps don’t understand and is missing critical or basic features, requiring strange workarounds (fucking UTC dates vs what’s actually in the DB).

They USED to have no way to reuse code as well but they fixed that.

I feel like the issue is they’re still too married to basically low/no code environments.

Having a “I’m going to need to do a custom script in whatever” option would smooth out the edges so much

fulafel
0 replies
8h41m

Using AD to authenticate is not much of a barrier since it got OpenID support some years back.

beckingz
0 replies
12h38m

And PowerApps is slow as balls.

Power Automate is great, but PowerApps is just a mess where every click in the dev interface takes like 5 seconds. On paper it looks so good, but in practice it is so painful to get that on paper performance and functionality.

YurgenJurgensen
0 replies
7h55m

You'd think that a tool intended for automating business processes would have a builtin for counting business days, but apparently not.

redleader55
2 replies
7h45m

Unpopular opinion: low-code always existed. Examples: stored procedures, Oracle/MSSQL, SharePoint, SAP, "Cloud"(in the dumb, use-these-20-services-to-make -your-app, not in the IaaS sense), Docker, etc

mpweiher
0 replies
7h20m

"Since FORTRAN should virtually eliminate coding and debugging…"

1954

https://www.softwarepreservation.org/projects/FORTRAN/Backus...

gardenhedge
0 replies
7h13m

How are stored procedures low-code?

jayd16
2 replies
13h35m

A great example of a low code tool that works is Unreal Blueprints. Full games are made with blueprints. It's not for everyone and it doesn't support text diff but it plays well enough with source control and other tooling.

YurgenJurgensen
1 replies
7h47m

I think this only works because a lot of games can be shipped and never touched again. A self-contained single-player experience doesn't really need to be maintainable.

jayd16
0 replies
6h0m

I guess I don't have the data to refute you but Unreal is used for many live games; Fortnite, for example. They're probably not all 100% blueprints but BPs are used extensively.

arey_abhishek
2 replies
2h23m

I'm a founder of Appsmith, a well-known open-source low-code platform. We offer an alternative to tools like Outsystems, Retool, and PowerApps. I often meet people who share the skepticism about low-code seen in this post.

It's crucial to understand the advantages of low-code for specific situations, especially in developing internal applications. These tools, often neglected due to limited resources or developer disinterest, can be rapidly and effectively created with low-code solutions. Low-code excels in scenarios where internal teams are overwhelmed and business users face long waits for features. Although it's not a cure-all, low-code is highly effective for certain tasks where speed and ease are key, despite sometimes facing limitations in customization.

Some modern low code tools are also evolving to be closer to web frameworks. Plasmic is one my favourite examples of this.

knappe
1 replies
1h57m

Some modern low code tools are also evolving to be closer to web frameworks. Plasmic is one my favourite examples of this.

So this hits on one of my questions/observations. How different is low code to the generators of various web frameworks? I'm thinking things like Rails, Django and the like where a lot of the "low code" appears to be templatized. They sure feel VERY similar.

m3047
0 replies
28m

People have the wrong mindset about all this. The most continuously integrated / continually deployed code process in the world is desktop publishing. You draw. You press print. Something prints.

Contrast to printing per se: You have some text and graphics. You do wire frames. Now you have to decide about the next part of the process: are you going to go with litho or a more traditional layout process? Now you do either cut & paste or cast / etch / burnish plates and / or masks. Now you print, which actually involves doing multiple prints in different colors which all have to line up. (And that's the simplified version, it's a lot more complicated than that.)

Desktop publishing is actually a code development process. A Postscript(r) printer knows a programming language called "postscript" which interfaces to something in the printing engine which is called the "raster image processor". Postscript programs have libraries, and the printer gets transpiled code for the RIP to execute. (Does this sound like your web dev shop?) The location of the RIP has meandered back and forth on the workstation <-> server <-> print engine continuum due to various factors; this looks a whole lot like the compute / display continuum and the endless debate about how smart a display device needs to be.

Now, the color is never quite as good with DTP, mach banding, dithering, blah blah blah. Like I tell my wife, the artist, the only person who knows that's supposed to be insane blue, and that over there is outrageous orange is you. (When she prints cards she secretly does hand touchups with the true pigments which are a mote in her mind's eye.)

For most things on the planet, normal people will settle for desktop publishing's shittiness. What's not shitty about DTP is the democratization. Instead of one person publishing to a million, it's (potentially) one to one.

I wish, I truly do, that all of this mattered for the web but it doesn't. The web is largely free, and at the scale of free everybody gets the same unique experience. On the other hand if I have a $1,000,000 warehouse facility even if there are 100 people working there I want them to have the best experience possible. I'm going to tailor that experience based on job function, where in the facility they operate, what they do. If someone is missing a finger, they should have an interface which takes account of that. $50,000 piece of machinery with one user? Optimize that user to optimize that machine. Welding gloves, or gloves covered in fish guts? Special interface for you too.

A good low code solution comes with OT drivers, speaks to SQL and microservices; produces true and correct (legally speaking) audit / transaction / snapshot logs (because if someone gets poisoned by the product or loses a hand working with the machinery...); has MES (workflow) as a low code function.

MetaWhirledPeas
2 replies
14h1m

I'm 100% against enterprise-level low code stuff. If you're big enough to afford that junk you're big enough to afford proper development teams with proper planning and organization.

In general I see little value in any large system intending to reduce the amount of code or the needed skills of the developer. Code is not costing you money. Good developers are not costing you money. You know what costs money? Bad developers making bad decisions using bad tools, necessitating years if not decades of paying armies of lesser-skilled developers to maintain the mess, slowing overall progress to a glacial pace.

elicksaur
0 replies
1h6m

Good developers are not costing you money.

I’m assuming you’re taking a rhetorical liberty here and really mean “net money”, but then what if you can get a similar end product for lower price? That’s higher net money.

abeyer
0 replies
13h34m

Largely agree... and to top it off, the pricing models mostly work against ever having a successful deployment of one. Either you price per end user, and optimize against building anything that is widely adopted, or you pay per developer, in which case you need to figure out up front who are the people with unmet needs who also happen to have the knowledge, skills, inclination, and time to build their own solution. (and this is enterprise pricing, so you need to know up front for at least a year how many of these you'll have, or you'll end up in a contract renegotiation or paying expensive overage fees.)

prakashn27
1 replies
14h0m

Low-code or no-code is okay with small apps. But as complexity increases, you won’t have fine control or scalability needed using these tools.

Low code may be better for mvp. Once you have enough revenue moving to a code based solution will be better in long run.

Towaway69
0 replies
9h26m

Low-code or no-code is okay with small apps. But as complexity increases, you won’t have fine control or scalability needed using these tools.

Won't a better approach be a low-code tool that grows with your needs? It would seem to be a waste to build an mvp in a low-code* environment and then throw away all the learnings and rebuild it in a code-based solution.

*=the assumption is that low-code is not no-code, i.e., the mvp would have some amount of code that would be throw away.

phamilton4
1 replies
17h45m

I have been since the first people at my previous employer told me it would replace all the programmers.

Then I found out the developers assigned to working on the low/no code parts had a component where they could write Java inside their low code process. There were hundreds of lines of code in each business process in the low code parts. They were writing giant methods in their process wired up by the true low/no code part.

To make matters worse the tool did not support unit testing of the custom code.

It ended up being like dozer mapping entity to entity and then passed along to custom code. All wrapped in some crummy UI. It produced a jar file which would be deployed anyways.

Maybe the tools are better now. We had some Tibco product at the time.

quickthrower2
0 replies
16h27m

VBA reborn!

noobermin
1 replies
8h51m

If you generalise to llm gened code in the hands of non developers then...

prakhar897
0 replies
8h28m

Like this? : https://www.resurrect.ing/

LLM Gen code is far from perfect.

nixpulvis
1 replies
19h24m

The gap between low-code and AI assistance is narrow and deep.

callalex
0 replies
19h8m

The security threat models are wildly different though. A “no-code” solution won’t be convinced to export private data with the right conversational English smooshed into the username field, for example.

merelysounds
1 replies
9h3m

I wish the author named the low code tools. There's so many of them, they can be very different, and offer different levels of control. Having specific examples would help me get a better understanding. Since this is in MS context, I'm guessing Power Apps; description: https://uk.pcmag.com/cloud-services/89779/microsoft-powerapp... (2018).

Towaway69
0 replies
8h44m

Not being the author but I agree with your request. For me:

* no-code

Basically all SaaS solutions that provide a web form to integrate and link services. Changes cannot generally be reverted nor is there any sense of version control. Only limited approaches for collaborative workflows.

* low-code

Things such n8n.io and nodered.org - visual programming environments that place a focus on data flows and not algorithmic code, alternatively known as visual flow based programming. These tools currently lack proper workflows for version control, collaboration amongst folks involved in the project. Hence these solutions generally do not have alternatives for the much-code development workflows.

* much-code

Textual code solutions using any one of a number textual programming languages. Very clear workflows and well defined processes for version control, testing and collaboration. Being extended by using AI for code completion and code generation.

It interesting to realise that much-code solutions have been around since we stopped using punch-cards and many developers believe there are no alternatives to the classic keyboard,screen,mouse approach to software development.

Perhaps it is time to rethinking our approach to development. Perhaps a two dimensional approach is more appropriate. Text, for me, being one dimensional: text is read from top to bottom, there is no left and right with textual code (in its basic presentation).

maccard
1 replies
16h53m

Low code is what IBM, SAP, Salesforce have sold as "the solution" for the past few decades, but packaged in a different way. This is no farther along than we were 20 years ago IMO.

te_chris
0 replies
9h46m

Not true. SF low code is great because the platform is closed. It saves a lot of time - up to a point of course, but it's a pretty complex point.

jbsmith1
1 replies
18h3m

I think the point are valid but it comes back to a much simpler idea - what’s the right tool for the job. Figure out what you want to do then find the right level of abstraction to get it done. And salespeople are one data point, generally not to be relied upon. Or have I over simplified?

nobaelazum
0 replies
17h19m

I agree. It isn't useful to think of "low code" or not. You think of what the tool offers and if it can be extended easily to do what you want. If you choose it and it isn't as advertised or doesn't fit, it was the wrong choice. We rely on all sorts of "low code" stuff and it works great because it's battle proven and provides the right abstractions. "Low code" is a misnomer, just say "esoteric specialized tool that isn't customizable".

doubloon
1 replies
14h48m

Eh the thing is that Worse is Better and "Actually available to people in Operations without having to beg for permission" is the best of all.

VBA (Visual Basic available in Excel and Outlook) had a lot of the same issues as low code, as in no version control, no workflow for review or continuous testing and integration, no ability to do lots of custom things, that did not stop it from running the planet. I mean if you did the VBA version of Thanos-snapping half of all VBA code out of existence, most of society would cease to function within a week.

Power Automate is going to replace VBA soon because VBA can no longer talk to web pages thanks to the end of Internet Explorer and lack of VBA updates. And like VBA, Power Automate has all of the same problems - no concept of code review, version control, history, logging, actually its worse.

VBA at least let you have custom Types and Classes but in Power Automate everything, literally everything, is a global variable. Power Automate is lower code than VBA. But I think it will be used even more.

Because it is already installed on every almost every office computer in the world. This is the only tool ordinary Ops people will have available to them to automate stuff, so that is what will get used.

YurgenJurgensen
0 replies
8h1m

So how long until we get the scenario "Billion dollar company suffers major outage of business-critical system because person that wrote Power Automate script went on holiday for too long and their connections timed out"?

danjc
1 replies
11h50m

A few comments here about lack of version control being a problem generally with low code.

We're a low code platform (app integration) and what's worked well for us is to have the platform store the generated workflow design (yaml/json) in source control.

Additionally, we map environments on to source control branches so merging to a branch is what promotes a design version to qa or prod.

v-erne
0 replies
5h29m

Anyone who lived through Model Driven Development era (late 90 and early 2000) knows that this solves only like 20 percent problems that those who complain about lack of version control are really talking about.

The real unsolved problem is lack of visual comparators that could show what really changed between versions. If you try to do diff those text serialization formats (those being yaml, json or, in old days, xml) you have to do a lot of mental gimnastic to map those onto visual changes that are meaningful. And most potential users of your low code tools are not capable enough to use it this way.

If you take into considetation that visual comparators of workflows is extremely hard problem to solve (probably only bunch of people in the whole world is cable enough to do this in a way that anybody sane would use) then you easily see why all visual dev tools of last 30 years went bankrupt. And if you did any sensible research you would know there were hundreds attempts at it with some spending hundreds of millions of dollars (Rational and later IBM being main ofenders here)

bombcar
1 replies
17h15m

The most successful low code is Excel.

tedheath123
0 replies
9h26m

At my workplace they are replacing spreadsheets with web apps. The users are very proficient with Excel. I would rather set the data free and let people play with it in spreadsheets however they want. For complicated functions you can make an add-in if you really need it, which I understand are a pain to deploy and manage. Web apps are twice as much work though and more restrictive for users. Plus we have a big cloud bill now and everyone’s beefy workstations are idle. I shouldn’t complain though, this stuff keeps me employed.

bazoom42
1 replies
5h13m

Python is low-code compared to assembler. SQL is low-code.

Much discussion around low-code (and no-code) miss that it is just abstraction. The question is not if we should use abstractions or not, but what constiutes good and bad abstractions.

lioeters
0 replies
2h41m

Another term for "low code" is end-user programming.

Despite forty years of commercial products, open source, and deep academic work, we have yet to reach an end-user programming utopia. In fact, the opposite: today our computing devices are less programmable and less customizable than ever before.

https://www.inkandswitch.com/end-user-programming/

COBOL, BASIC, SQL. HTML, CSS, JavaScript. All these started as relatively low-code solutions to what came before. And surely textual programming languages aren't the only way to empower users to take control of personal computing. Excel formulae to express dynamic values. Visual builders that internally compile to syntax trees.

They all have their own problems and room for improvement, but one could say the same for "high code" programming languages. It's a means to an end, and for computer users who don't have time to dedicate to become a high-coder, they will use whatever is available to solve their needs.

bazil376
1 replies
1d2h

This to me is true for low code tools that are aimed at non-developers. “You can write software without software developers!” But low code tools made specifically to help developers’ workflows can be great. Maybe would be good for OP to clarify type of low code tools

contravariant
0 replies
15h50m

I think it's fine to use low-code specifically for the lie that the only thing preventing people from writing code themselves is a slick UI.

Sure there exist applications that do equivalent things, but when people start using the word 'low-code' to describe such an application they suddenly get the weird idea that the hard part of coding is typing the damn syntax and that if only you put a GUI in front of it they can do it themselves.

Conveniently forgetting that people have made the exact same promises about the first IDEs. Pretty sure there's an ad to that effect for Turbo Pascal somewhere.

anyonecancode
1 replies
17h47m

"Low code" means a low surface area of code you can directly interface with, but there's plenty of code shoved out of sight and out of reach. Total amount of code is probably actually quite a bit larger, actually, given all the code needed to create the abstraction layers to give the appearance of low code.

Layers of abstraction are powerful when they're tight and well-suited to their purpose (I'm happy to never think about memory allocation -- thank you garbage collected languages!), but when leaky or ill-suited can be very frustrating and make things harder or impossible.

It's hard -- probably impossible actually -- to build a "general purpose" abstraction layer that will work for specific purposes, but that's essentially the pitch of low code -- we don't know your specific use case, but we have a tool that will abstract away all the code previously tailored to that use case.

Now, in fairness, there's a lot of code that has too much accidental complexity in it. A good abstraction layer strips away that accidental complexity and leaves only the essential complexity that's specific to your domain and use case. But that's hard to achieve -- it takes skill and experience (and not just general experience, but specific to your domain experience) to achieve. Most companies don't have that available to them, and don't want to pay rates to build teams that do have that skill set and experience. Low code holds out the promise of being a short cut to that, but clearly if your own dev team can't manage it, the odds of a generic platform doing it for you is slim to none.

bsdpufferfish
0 replies
1h49m

Good comment.

It's hard to build a "general purpose" abstraction layer that will work for specific purposes

I would phrase this a little differently. It’s impossible to make good tradeoffs without an understanding of the specific use case.

“Lossless abstractions” are possible, just rare as they usually come from understanding essential mathematical properties.

29athrowaway
1 replies
12h52m

The problem of low code is vendor locking.

Towaway69
0 replies
9h47m

"Node-RED: Low-code programming for event-driven applications"[1]

It's open source and built using NodeJS. No vendor, no lock-in and very extendable using javascript.

It's all a definition of low-code.

[1]=https://nodered.org/

zzzeek
0 replies
16h20m

didnt know WTF "low code" was.

googled.

OH, it's those stupid visual IDEs that pretend you can connect blocks and lines together and get a program.

"I would get clients who had been drawn to low-code all the time for the promise of fast development time and low maintenance cost."

Oh I'd not go anywhere near silly "clients" like that. Who wants to fight with that level of dumb

zubairq
0 replies
11h48m

This post about low code seems to be about companies using the wrong tool for the job.

I would be interested to know which low code tools the blog author has actually used, and what they see as the viable alternatives are?

zby
0 replies
6h56m

Is there any good definition of low code and no code solutions?

uraura
0 replies
17h52m

Database mess is unavoidable because it needs to support different kind of customers.

tyingq
0 replies
3h21m

It's a hard topic to discuss sometimes because low-code means different things to different people. There's a space, for example, where it mostly just replaces spreadsheets on a shared drive (or being emailed around). And there's also "mostly web forms with a little bit of workflow and approval hierarchy". Then "simple-ish database with reasonable basic CRUD gui". The various vendors usually start with one of those, then feature creep into more customization support, including code that's invariably hobbled in some way that makes some tasks impossible.

tmn007
0 replies
18h18m

I was involved with a project to decomission a low code on premise platform (Sharepoint 2013). What we found was there was a lot of user enthusiasm to create stuff but when the platform was end of life and had to be decomissioned the users enthusiasm melted away.

The "IT" dept had to spend a fortune re-validating the user requirements for the various applications, documenting and then converting them into a new platform. Obviously a lot of feature creep and previously accepted bugs (no longer accepted now that responsibility was no longer theirs).

A lot of the applications were frankenstein efforts from people over the years - lots of dead code no longer used, no docs etc. As others have mentioned people create mission critical stuff for their project or team, and then leave or be away on extended leave and it breaks etc.

tdeck
0 replies
15h25m

The term "low-code" is in itself a compromise based on the very issue the author is identifying. The old term was "no-code", but too many people needed custom functionality.

Aside: The contrast on this website is really borderline. Extremely light gray, low font weight, white background. I thought we were past that particular trend in web design.

somat
0 replies
15h53m

is "low-code" this generations version of "4gl"?

The only 4gl I know of that held the test of time was SQL. Every other one ended up being an embarrassing wart of "technical dept". The same could be said of most "enterprise software". For them that don't know enterprise software is code for "It's 70% done and we will charge well to finish it for you"

smitty1e
0 replies
19h22m

Frameworks at all levels of _aaS are great, given the stipulation that your greenfield requirements are completely boring.

This falls apart when:

* legacy systems/data must be integrated

* the requirements get interesting

There is just no substitute for a good working understanding of the tools, and that means staff that can go past the low-code facade when needful.

skeeter2020
0 replies
3h37m

> A lot of low-code solutions seem to hit about 80% of a company’s requirement.

The 80% is not evenly distributed. Marketing might have problems that are 95% satisfied by low-code and they can change their process for the last 5%, or accounting can do 100% of a 50% subset of their job with low-code. Logistics can't really do any of their job so they steer clear.

All the other points are related to trying to satisfy 100% of a custom problem with a generic low code framework. Don't do that.

You run into all of these problems with custom code solutions too; The debate should be about investment vs. control, of which no/low/custom coding is a component but not the differentiator as presented here.

shermantanktop
0 replies
17h7m

From what I can tell, the market for these low-code tools is as much non-tech managers as it is the actual users. Slick demos go a long way to convincing people who own budgets and are tired of expensive engineering salaries.

Which I can understand, because engineers are expensive and behave in ways that are unintuitive for non-tech people.

But I fear “generative AI coding tools” appeals to the same people for the same reasons, leading to the same results.

rubin55
0 replies
2h10m

Very recognizable.. I've done a few projects at large-scale government and retail where me and team have been brought in after-the fact to fix "performance" and tech-debt issues with these things. In particular these platforms: "Be Informed" and "MuleSoft AnyPoint".

The story is exactly like the fine article mentions. Heavy reliance on proprietary stuff making the organization heavily reliant on very expensive consultants to get stuff done, no way to sanely version things..

I now go out of my way to avoid working rescue jobs like these, unless the client is actively migrating away from them.

rikroots
0 replies
7h3m

My low-code horror story contribution. Big Important Company decided to develop some in-house learning courses for their Marketing and Sales folks. They used a trendy-for-the-time low-code learning course creation software package to develop the courses, and a different piece of software to deliver it to staff on their on-site intranet.

A few years go by. Someone in Big Important Company decides the courses need updating. Work ends on my desk as my bosses have the contract to maintain various other bits of BIC's creaking self-hosted intranet. I ask questions like "What software did BIC use to develop the courses?", and "can we charge BIC the cost of getting the software so I can do the work?" Of course, the answers are all along the lines of: no.

So all I have to work with is an extensive set of hefty change requirements to the courses, and a SCORM package downloaded from BIC's intranet. A huge amount of learning (how to manually edit SCORM packages) and frustration (how to test changes to SCORM packages), and a few months of time when I could've been doing something better without deadlines harassment ... I completed the work. Which I wasn't allowed to test on BIC's intranet servers for "security". So I just uploaded the new SCORM package to their production servers and went on 2 weeks leave.

pylua
0 replies
16h1m

Low code has been used for decades successfully. Think about ladder logic and scada systems. I always find this missing from these discussions.

The main point is it has its place — and choosing when and where to use it is critical.

outlore
0 replies
16h45m

My interpretation of low-code includes headless CMSes, authentication as a service with pre-built components e.g. Clerk, plug-and-play collaboration e.g. Liveblocks. Those services save me a lot of time without having to worry about underlying implementation, and they also have some nice escape hatches.

However, I share the author's skepticism about other low-code tools that involve a lot of UI/visual flow building with limited insight into how the black box works and what its constraints are.

msla
0 replies
17h17m

I guess Talend is low code.

Talend is an ETL tool: Extract data from a data source (file, database, API), Transform it, and Load it into another data source (file, database, API), all in a pipeline. Talend's happy path is the same as Unix shell's happy path: A pipeline of data with no side-effects and no globals. Try to deviate from that and you hit walls, some more climbable than others.

For example, Talend absolutely will not allow you to re-combine a pipeline you've split; you can combine two separate data sources, and you can split to two separate sinks, but you absolutely cannot go from one pipeline to two pipelines back down to one.

The saving grace is that Talend is fundamentally a GUI for writing Java. You can see the Java it's writing, and you can add your own Java in a few ways, from adding jar files to just plopping a pipeline component that allows you to insert your own Java into the big God Method that the rest of your pipeline helping to form. Be sure you know how scoping works if you do that.

In extremis, you can "use Talend" in that you use the Talend GUI as an Eclipse IDE to write the one pipeline component that does everything because it contains all of the useful Java code. You can use it the way I often used it, to take care of some tedious "plumbing" code to route the pieces of data created by the hand-written component to their respective outputs, including handling some minor output conditioning that can be done in a stateless fashion. It can even be used as it was intended to be used, as odd as that sounds.

lovasoa
0 replies
6h35m

I make a SQL-only website builder (SQLPage) that could be qualified as low code. I think all the points mentioned are valid, but some of them are easy to work around:

They wanted truly custom functionality that the low-code solution could not handle.

It's important that the low-code solution has an escape hatch, or a way to to interact with external "high-code" APIs. In sqlpage, we have sqlpage.exec

They implemented a bunch of custom functionality in a product-specific or even proprietary language and now their pool of potential developer talent is tiny.

I agree that low-code makes sense only if the low code is in a standard, popular language. In SQLPage, it's all just SQL.

Upgrades to the low-code platform would break their custom implementation.

This is a true problem. The low-code solution really has to be careful with updates.

The underlying database structure was an absolute mess, especially after a bunch of incremental modifications

This! Most low-code tools take your data hostage. You shouldn't use them. In SQLPage, we add a layer on top of a database that you still fully control.

lerpgame
0 replies
2h58m

actually, software itself and any sort of interface/automation in general is really just an interim solution before transition to just having real-time access to scalable raw intelligence and hyper awareness through wetware.

jauntywundrkind
0 replies
18h29m

I feel like we are kind of trapped between simplistically polar notions. There's coding as we know it - complex & interwovenines of code - and there's this low code ideology.

Any area of code itself is usually fairly boring & irrelevant. It's systems that accrue mass & complexity. Low code systems sound good by demonizing the weird symbols & incantations that make up the lower level fo coding, but it's this systematic complexity, it's the aggregation of many things happening that makes things opaque & difficult.

Finding patterns to suss out broader-scale understanding is what really tempts me. I don't have super strong vision here, but I'm interested in projects like Node-RED, or even to a degree works like jBPM. Both kind of speak to going beyond coding, but I think the valuable thing here is really that they are assembly toolkits for modules of code & data. They are just examples and not even good ones but this quest, to me, to get to the next levels of computing, is to make clearer portraits of what happens, that either are above to code level, or where the code's running creates higher level observability surfaces.

Code is so easy to demonize. The layering is often so implicit, handlers and DAOs and routes in different layers maybe but with no clear overview layer. Figuring out how to make legible these systems, without diving deep into the code, is what, I think, will make systems less intimidating & will serve as a bridge to make businessfolk and novides better able to intuitively grasp & meddle with these these artificed put before them, with courage. And making people less afraid of the machine, more interested in peeking in and meddling, that's where so much hope lies.

j45
0 replies
19h32m

Less-code might be more realistic than low or no code. Hard not to have platform lockin with zero or low code.

As the other comment said, less code tools for developers can be quite helpful.

ivix
0 replies
34m

The opinions of developers about low code solutions are not very relevant.

Low/no code solutions exist for when there isn't enough time or budget for a developer created solution, which is to say, pretty much all always. In the real world of business problems, almost nobody has access to a professional developer.

icedchai
0 replies
18h52m

My experience with low code is it's easy to get an 80 to 90% solution. Getting that last 10 to 20% may be very difficult. Also, source control, versioning, deployment may be open questions depending on the platform and project. Additionally, you will be locked in to a proprietary platform. Perhaps that is okay.

iamleppert
0 replies
1h41m

I am for whatever tool I can sell to frustrated executives for a handsome commission and be half way on to my next job by the time they figure out it’s pure, 100% snake oil.

hm-nah
0 replies
38m

Low-code platforms like PowerApps and PowerAutomate are great LEARNING and PROTOTYPING tools.

Give an analyst with some technical acumen PowerApps and ask them to mock up requirements, and after awhile, they can produce a click-through prototype.

That same analyst will likely improve their UI, API, JSON and SQL skills in the meantime.

Low-code tools are also good for digitizing CRUD forms.

Much beyond that and things get very proprietary, very fast.

hiAndrewQuinn
0 replies
6h13m

Python is already low code enough with the use of GPT-4, I'm good.

hackerdad
0 replies
9h8m

low code should be a result not the goal. Let me explain: When you choose the right platform to build the applications, the platform should take care of gluing services, adding visualization, handle common concerns such as reliability, ease of debugging, documentation (with the visualization) etc. This is an often overlooked aspect of application platform that otherwise takes the bulk of the time to create apps.

tools focusing in low-code does not solve them and the tool that solves typically don't market them as low-code - because the are not. low code comes as a result.

gregd
0 replies
3h13m

Having worked in PowerApps the last year and integrating a rest API in Azure that then updates Dataverse, low code is just short for abstraction layers. As a developer, this irritates the hell out of me.

Sure, you can view your Dataverse database in SSMS, but it's read only and you get no autocomplete.

And don't even get me started on XRM Toolbox.

fnordpiglet
0 replies
19h17m

Where I use low code is in essentially expert systems, where I need to encode the expertise of some SME. For instance, a lot of places have regulatory compliance burdens. The detailed rules for compliance changes by jurisdiction constantly. Most enterprises setup some sort of requirements to engineer pipeline that everyone’s bitterly unhappy with. It is never fully compliant, has tons of errors, the engineers resent their jobs, and the SMEs resent the engineers. Instead by instrumenting the system with a low code surface area with a policy management system overlaying it you get an excellent platform engineers like to develop, SMEs can author and manage their policies directly, and you capture a rigorous workflow which auditors and regulators really dig. This doesn’t make the engineer less important, in fact they’re much more important to ensure the policies are expressive enough and touch enough business data to ensure the policies are complete. They’re just not playing regulatory policy telephone games in code.

ejb999
0 replies
6h11m

Much earlier in my career I built an entire business converting MS-Access database/forms solutions that were created by non-developers/end-users to solve a particular problem without involving IT folks, most of them 'sort-of' worked, but only up until the point things got complicated, or the requirements changed, or it needed to scale and nobody (the non-developers) could figure out how or even realized their entire foundation was built on quicksand. (I would generally convert them to true .net client/server applications with MS-SQL Server as the back-end or web front-ends with a proper database on the back).

I suspect there is another opportunity coming along to make some good money bailing out folks who built 'no code' solutions that their business now depends on, but no longer meets the needs and has become to fragmented and complicated to tinker with and difficult to change, scale or adapt.

That said, I am not opposed to no-code - it is a good and often inexpensive way to solve some problems, or at least get a POC working - many of those solutions may never need to scale or adapt.

...but some will, and thus the coming opportunity.

djangelic
0 replies
19h20m

I use n8n.io hosted locally to abstract away authentication when building complex api integration mvps that I use to show as possible and working, and then that gets sent to engineering to convert to something that follows better best practices.

ctrlp
0 replies
15h51m

A lot of useful MS Access and Excel apps written by non-programmers beg to differ. Sure they have their problems, what doesn't? But these low-code tools allow smart, but less technical, people to get a lot done without getting in line to beg time from a bunch of grousing devs stack-hopping their way to their next job. Use a commercial vendor and you might even get documentation and support. 80% solutions usually do more than was needed if the requirements had been thought through carefully. Most business apps are tables, filters, queries, detail views, and workflow. So what if a product with 5 users in a department is trash? Works well enough most of the time.

Startup can't afford more than one developer? Product owner can hack the thing until you get customers, funding, or go out of business. Oh, and that bus factor goes up to boot. No more pager duty.

Code things that are core to your business and plan for the TCO. Use low-code for internal business apps and let your smart intern or low-code consultant make and own it.

codeptualize
0 replies
9h39m

I agree with this take.

These tools can be useful for non devs to make very basic things, but they won’t be able to handle anything complex, and it’s hard to test and proof the correctness of the result. If you take it far enough you are always going to end up hacking around the tool.

For people who do write code these tools could be useful, but code is much easier to use as you are not stuck within the constraints of the tool and know what you are doing.

I think there is one success story for low code and its basic websites, mostly the part where a design is turned into code. I use Framer because it’s objectively quicker than code, with great results (I even design in framer), and once it’s set up non technical colleagues can make changes. Great for a landing page, but it won’t work for apps.

I think the article is right in pinpointing the logic as the problem. Coding is not about syntax and the language, it’s about the logic and ability to map that out into a program with all the edge cases and details.

cassepipe
0 replies
16h49m

...said the carpenter to the Ikea manager.

Wordpress, Excel ?

brucenanner
0 replies
13h30m

Aren’t modern day programming languages low-code relative to assembly and/or binary? It’s all relative to the previous layer.

bruce511
0 replies
13h17m

There's lots of good general criticism about Low Code tools, and certainly lots of it is valid depending on the tool and the context.

Of course, just like say the SQL or NoSQL debate there are contexts where one wins, and another fails.

I did have to smile at this though;

> "Now, rather than being to recruit from a large pool of ubiquitous, open-source language developers, the company has to find maintainers who are very specialized in this tool."

From a company point of view this is correct. You cant just discard programmers and get a cheap, out-sourced one as a replacement.

On the other hand, as a somewhat older programmer, I like the idea that I get more valuable with age not less. I like that I can't be replaced by some ubiquitous open source freelancer who works for $20 an hour.

For the record I've been working with a low-code tool for 30 years (since long before "low code" was even a description) and I've seen thousands of one-man companies be successful developing programs where the owners actual programming skills are, well, in most cases, somewhat poor.

Turns out, making something useful has more to do with fixing pain, and less to do either writing code.

And yes, all the points listed in the article, and these comments, are true. And ironically almost none of it actually matters.

There are a million reasons it -shouldn't- work and yet, somehow, at least in my world it does.

b33j0r
0 replies
13h29m

I love that this piece talks about the database. That is a problem I focus on. It’s API versioning all over again, and we never _actually_ solved that before we moved forward.

I see this being our reality anyway. In many cases; not all.

You can’t ask the LLM, nor a hypothetical AGI, nor anything, to build the aqueducts. Especially if you don’t know you need them. And they won’t solve the problem if neither a human nor an AI know what the problems actually are. Let’s make em out of lead!

And they definitely won’t waste tokens on a postgres rollback migration unless we make that essential in the acceptance criteria.

An LLM is all of our ideas, in a search UI that dang nearly passes the turing test. (That says more about us than the state of AI technology.)

We are pattern machines in many ways, and many things we code are even lovingly called Software Patterns. The promise is not that software engineering goes away, it’s that we’ll all be managers for a while.

Low-code, to me, is different from “statistically generated solutions that pass the requirements.” Genetic programming was an idea for decades, but that is also different from stuff that combines yours and my most relevant github commits into a 90% best guess. Not random, hoping for the best, in this regime. Educated guess.

astrobe_
0 replies
1h9m

To me that's 4th generation languages, RAD and such, with new cloths. They have their uses, but they also have the same drawbacks.

appplication
0 replies
15h52m

Maybe it’s just me, but I assumed almost all devs with basic coding ability would be against low code. It has so many issues, from poor version control to never (and I do mean never - would love to be proven wrong) doing more than or even meeting the feature set of whatever competing “some code” solution offers.

In the end, you end up with either less skilled people getting in too deep, or highly skilled people unable to fully avail their skills. I get the appeal, but it always seemed like a local optima to me. It turns out code is a pretty good interface.

anonymous344
0 replies
5h57m

was really interested about MS low code platform, but then... it's a mess glued on top of another mess(o365), glued on top of another mess (azure)

what seemed to be true that you can easily build a gui that will break in the next months and only have terrible default ui-elements, like calendar selector you cannot really prevent going past time or 99 other akward user interface gimmicks.

why should company try to save 2000$ on development, but then loose 10-100$ every single day with bad usability?

andrewstuart
0 replies
14h22m

I spent years building tons of big applications in the worlds first true low code environment - Lotus Notes.

Sure it had limitations but you could get an awful lot done within those limitations.

alserio
0 replies
7h40m

I've used AWS Amplify in the last two years. As the others low-code tools it's fine until it isn't, then it's a nightmare. But with time they've started to allow for more and more escape hatches. They've recently announced a V2 marketed not as low code but as code first, built on CDK. They've probably found that most of their users are devs and code is the right interface for devs.

Poliorcetes
0 replies
3h6m

one thing that seems to me is that there are no open source low code platform, that is as easy to get as python or java

is there any of them out there?

all i see is proprietary software with hefty prices

Poliorcetes
0 replies
5h43m

maybe low code is the next step after text- based programming?

There is a comparison here to be made with ascii graphics and they could be quite charming, dwarf fortress for example looks great but there is only so much you can do with text

some languages it seems to me are running out of symbols and their meaning is not obvious at the glance, for example what is the meaning of ', @, $, !: in diffent languages? why should it have that meaning

in the end code is much more logical and better understood if it is a diagram of blocks, after all that what code is supposed to represent, a series of decisions that lead to a desired state in the data

FrustratedMonky
0 replies
1h36m

Isn't it a continual upshifting of concepts.

C is the low code version of Assembly

Python is low code version of C

Some visual basic like thing is low code Python

WordPress

a million other web tools

Etc...

But in the end, someone with a 'programmer' mindset, that can understand problem solving, is needed to make it work, at whatever level we are at.