## Definition
No-code/low-code is a method and a movement of programming that does not necessarily involve writing code, but instead works with a Graphic User Interface (GUI), where people can use templates, drag & drop functions, conversational interfaces and logical sequences to bring any digital product to reality. This emerging category is about the **democratisation of software development**, unlocking the potential that digitisation brings to anyone that has access to a computer or a phone & the internet. [^fn1]
[^fn1]: [Decoding the no-code / low-code startup universe and its players](https://pinver.medium.com/decoding-the-no-code-low-code-startup-universe-and-its-players-4b5e0221d58b) by Pietro Invernizzi
No-code and low-code tools aim to empower non-technical people to create software applications.
This usually involves using cloud-hosted SaaS tools which often have a browser-based user interface.
## Business motivations
There is some crossover between low-code tools with several of the [[Benefits of serverless]], including:
- [[Serverless fosters smaller engineering teams|Smaller engineering teams]]
- [[Serverless significantly lowers the barrier to entry for new developers building scalable backends for their big ideas]]
## Segmentations
[[@Pietro Invernizzi]] proposes the following 2 segmentations of this category by amount of code and functional category: [^fn1]
### Segmented by amount of code
1. **No-code**:
1. Tools with literally zero code, made for people who don’t know and never want to know how the software works (e.g. Gumroad). They are generally simple to use, clients get lots of support and most of the companies have vibrant communities of non-technical people helping each other.
2. Tools & Software for people who are good systems thinkers & know their way around an API (e.g. Airtable, Zapier). These tools do have the ability to be configured as more complex and include code elements if one wants to go deeper.
2. **Low-code**: Tools & Software for designers, product people, founders & engineers who want to find faster, better, easier, cheaper ways to build and scale without giving up the customisation that code brings. Examples include [Retool](https://retool.com) and [8base](https://www.8base.com)
### Segmented by functional category
1. Website Builders & Enhancers
2. App Builders, Mobile-first
3. App Builders & Enhancers, Web-first
4. Internal Tools & Internal App Builders
5. Workflow Automation Tools
6. Data & Developer Productivity
7. Spreadsheets on Steroids
8. Numbers, Finance & Modelling
9. Payments & Transactions
10. Checkouts, Subscriptions, Memberships & Commerce
## Good use cases for no-code tools
- Back-office admin portals
- Throwaway prototypes
- Startup serving Enterprises needs to connect their SW deployed on-site to Serverless backend on AWS using OpenVPN & other stuff . NoCode all the networking [^fn2]
- Scientists at small research institution need 10x more storage & a few big compute instances NoCode provides secure S3 bucket, a template to launch their Python on EC2, and an on-demand ssh proxy [^fn2]
[^fn2]: [Engineering use cases for NoCode (Twitter thread)](https://twitter.com/paulswail/status/1372999316525170688) by [[@Stephen Kuenzli]]
## Challenges with no-code tools
### From a software engineer's POV
The following objections may be raised by engineers many of whom (I suspect) may default to strong skepticism, even cynicism, about this category:
- Version control and release management:
- Can multiple "developers" work on the same application at the same time?
- How are changes backed up and is it possible to rollback to a certain period in time?
- Are configuration changes backed up separately from the underlying data?
- How should staging and production environments be separated? And how can staging changes be promoted into production? If production is already live
- How to "eject" from the low-code tool once requirements become too complex and custom dev is needed?
- Similarly, assuming there is no ejection path (other than rewriting the app entirely from scratch), are these boundaries and limitations well known up front before too much time is invested?
## #OpenQuestions
- What type of businesses stand to benefit the most from no/low-code tools?
---
## References
- [The No Code Delusion](https://www.alexhudson.com/2020/01/13/the-no-code-delusion/) by [[@Alex Hudson]]
> Programmers face this dilemma constantly: do we trust an external system and put a lot of configuration effort into it, or attempt to handle more of the logic ourselves? The logic doesn’t go away. Just because a decision is embedded into the wiring of a Zapier rule doesn’t remove any of the burden of maintenance / correctness.
> With “no code”, it tends to be difficult or impossible to have a non-production environment. Even if you do have one, accurately copying changes over from one to the other is non-trivial. Salesforce has some excellent tooling available to make this work, and even in that environment it’s extremely difficult to do.
> ==Questionning the need for software in the first instance is always a good idea==
Conclusion:
> I think “no code” as an alternative to most mainstream development is a pipe dream... The sweet spot for me is the “power user”: the user of IT who is extremely adept already, and is probably bending tools beyond their design. Giving them an environment in which to deliver is extremely important, but this should be a joint effort with more technical staff - the two sides should not be in opposition.
- [No-code is a lie](https://webflow.com/blog/no-code-is-a-lie) by [[@Shawn Wang]]
---
tags: [[Software engineering MOC|Software engineering]], #ProductManagement