In Defense of No-code('s potential)
Don't think about businesses, think about *people*
No-code/low-code is the new hypename for tools that help you Do Computer Stuff without needing (much) programming skills. There are lots of tools in this space, most targeted at businesses, many selling themselves with "you won't need a software developer". I think the first use of low-code was in 2011 but this kind of "rapid application development" goes at least as far back as Visual Basic 6.1 Many no-code tools are visual builders, which looks "easier" to nontechnical people.2
Professional programmers, as a rule, do not like no-code. Arguments include:
- No-code apps don't scale beyond a low complexity ceiling, then you're SOL
- You need a lot of technical knowledge to use them properly, which defeats the whole point
- The hard part of SE is figuring out the solution, not coding it up
- All the no-code sites look eerily similar to each other and it really creeps me out.
I agree with these critiques, being a professional programmer myself. But I'm also more bullish on no-code. I think it could be a valuable and important part of the after computer-user's toolkit. Just not in the ways we think about.
Computers are hard
Here's a quick exercise. Step one, take a paragraph of text, any paragraph, and uppercase everything. No catch here, just make it allcaps.
Me, I'd probably dump it in vim and press gUG
. Or I'd drop it into python and call upper()
. Or I dunno, sed -E "s/./\U&/g"
? Point is this isn't a hard thing to do if you're a programmer.
Step two, find a bunch of friends who don't know how to program and ask them how they'd do the same thing.
When I did this, I got two "Google for an online allcaps generator", three "use a specific program with an 'allcaps this' button" and three "manually retype it".
I don't think us techies have ever quite internalized just how vast the gulf is between what we can do with computers and what the average person can do. I occasionally shadow friends and take notes on how they use computers, and there's lots of stuff they do manually that'd be easy to automate. Just a few:
- Find all of the phone numbers of form
0001234567
in a document and convert them to(000) 123-4567
- Reorder a photo directory from
year/event/photo
toevent/year/photo
- Check daily on a few airbnbs to see if any lowered their prices
- Sending a PDF on your computer to your kindle via Amazon's "email the file" thingy
- Check if there's a Cubs game today to avoid the trains
- Take some structured data and put it into a template
If you know how to code these things are easy, or at least possible. If you don't know how to code then you have to do them manually every single time! I had one friend who had to manually go through 20 pages of article links, click each one, find the article tags, and count them all up.3 That'd be what, two hours of work for something you could automate in ten minutes?
Now you could say "just learn Python", and in an ideal world everybody would be a programmer so this is moot. But learning to program is hard! You need to learn a lot of different concepts before you're at the point where you can script anything. I just don't think we can expect the average person to throw 50+ hours into learning programming without a very good reason.
That's the potential of no-code: making it easier for people to do more with computers without needing to know how to program. This wouldn't be enough for them to do software development, but that's not the point! The point is that it's enough to replace "ten minutes of a developer's time". It'd make so many people's lives better!
We're on the wrong track
So that's what I want no-code to do. What tools would I recommend for this?
uhhhhhhh
The problem is that every single nocode tool is aimed at businesses. They're all cloud-hosted tools designed for making business workflows, SaaS offerings, and mobile apps.
If your no-code solution can't mute your speakers, then it's useless. Useless!
What I want is a downloadable app that can run offline and is designed to do simple tasks with the computer. So basically Visual Basic 6. VB6 was great! But we're not going to get a better VB6 because the economics just aren't there anymore. As programmers we expect all of our languages to be free and open source, but that's actually super super weird. Most of the time people try to sell their software for "money", and the clients with "money" are businesses. VB6 just happened to be released at a time when businesses needed to make desktop applications. Now all the money is in the web applications, so no-code people are selling tools to make web applications.
Sucks that web applications are not what individuals need to make, but that's society for ya.
More promising are Apple and Microsoft's low-code workflow tools, Shortcuts and PowerAutomate Desktop respectively. I can't say I've used Shortcuts, but I've forced myself to use PowerAutomate to get a better sense of how well it can do my above examples, and... eh. It's the flimsiest software I've ever used. Not like it errors easy, I mean it feels like the GUI would crack if I click too hard. I mean look at it:
This is a desktop application.
On the other hand it can upcase a string, so there's that.
What would the "ideal" no-code look like?
My criteria:
Free
This is one is both non-negotiable and probably kill the idea right here. If it's not free, not enough people will use it. Then again, if it is free, nobody will want to maintain it.
Native
I can see some of the benefits of cloud-based no-code, but then you can't work with the computer. Ideally it should also "feel" like a native program, too.
Easy to start with
You shouldn't have to set up any other software or use any other tools. The target audience is nonprogrammers, so every additional step is going to filter a lot of people out.
Visual
This is where it starts being less like a "proper" programming language. Visual programming languages get a bad rap for being hard to modify and having low complexity ceilings. But they're definitely friendlier if you don't know how to program! For one, no syntax errors. And the complexity ceiling is actually a good thing here. There needs to be a point where people recognize they need proper programming languages.
Just so many built-ins
Software developers are used to having a small, well designed set of primitives that can be composed in many useful ways. This is a really great idea! It doesn't make sense to have wordcount
if you have sum
and split
.
Composing primitives is so much harder if you're not a programmer. Our no-code audience should have sum
, split
, and wordcount
. They should also have charcount
and linecount
and sentencecount
and findemails
and findphonenumbers
and so on.
A Package Manager
This one is really important, but also going to get people hurt. It's not enough to script common tasks, it's also necessary to integrate with third party services. This is why IFTTT has a market: people want to share Instagram posts to Twitter and monitor pollen counts and stuff. So there needs to be an easy way to add new packages in a friendly way, like having a central repository people can contribute to.
This is also really dangerous because you're encouraging non tech-savvy people to effectively other people's code, so there'd have to be a lot of safeguards. I dunno, I'm just an Ideas Guy.
A clear off-ramp
The purpose of this no-code is to write scripts, not do software engineering. If you're trying to do something too complicated, it should be very clear you're using the wrong tool. I wonder if "no imports" would be enough for this: you get one file per script and that's it.
It would be cool if there was an "export script to Python" feature. At this point I'm just spitballing cool ideas, might as well throw in one more.
Is this just MacOS Shortcuts?
I hope so! Then this would already exist and I can push to question to "why isn't everybody already using it?" Unfortunately, I don't have a mac and the online docs doesn't have a comprehensive list of what you can actually do with it. But maybe it's what I'm looking for!
I do think a really good Windows no-code is still very important, though, because three-quarters of all PCs still run Windows. Windows is already the best automation platform due to AutoHotKey, so it's disappointing there isn't a no-code analog that's not PowerAutomate Desktop.4
Wrapping this mess of a newsletter up
If you think that no-code is dumb because software engineering is hard, consider the possibility that no-code is good because small-scale scripting should be easy.
-
At least. There's definitely earlier stuff! I'm just very nostalgic about VB6. ↩
-
inb4 "Excel was the first low-code!" Yes I like Excel too, and I know people have done a lot with it. It just feels qualitatively different in a hard-to-pin-down way. ↩
-
After page 3 I intervened and just wrote a script for her. ↩
-
I am convinced that PAD only exists to upsell people on $40 user/month cloud version. ↩
If you're reading this on the web, you can subscribe here. Updates are once a week. My main website is here.
My new book, Logic for Programmers, is now in early access! Get it here.