Defining the Future: Generative Programmers
In the past decade, a growing set of software products have categorized themselves under the terms no-code and low-code. It's an exciting and historic inflection point for computing. In terms of significance, I'd compare it to the introduction of the Web or smartphones. And a change of that magnitude is hard to talk about. We struggle to articulate a vocabulary that lets us compare what's been to what's coming. Most people are still at the “What is Internet, anyway?” stage of this.
Photo Credit: Suzanne D. Williams
The term “no-code” makes sense when applied to a product. It's a framing that emphasizes a benefit to a customer. It says, “You can build with this software without explicitly writing code.” It's a fundamental promise about the demands on your time. It reminds me of the term “serverless” in cloud computing. There's still code running somewhere, but you're paying someone else to handle those details. That frees up your time to focus on other goals.
Talking about people is where we run into trouble. At the moment, people who use and rely on no-code tools are often called “no-coders,” and I find that deeply unsatisfying. First, describing a person by emphasizing their lack of a particular skill is awkward.
But there's a bigger problem. People sometimes use “technical” to describe “someone who understands how computers work and how to write code.” In a narrow context, that may be accurate shorthand. But it's easy to generalize that framing into an attitude that undervalues expertise in other domains. That affects who gets funding and what problems are prioritized.
So how do we do better? I think the answer comes from acknowledging that people who build software without code are still programming, so they're programmers. Among people who code, there are commonly established style categories like imperative, declarative, object-oriented, and functional. Those are almost always code-based styles. But the following can apply to code and no-code solutions alike:
- Reactive: Think of spreadsheet tools like Excel or Google Sheets. You can set up calculations so a change in one cell cascades across the entire sheet.
- Visual: Think of Bubble or Xano. Visual programming combines abstract components and What You See Is What You Get interfaces to let you program on-screen. Visual cues can help anchor your mental model, but you often end up managing as many details as a coder.
- Generative: This term has gotten recent attention through product showcases from ChatGPT and Midjourney, but it's a concept that's existed for decades. The main idea: you provide a small input and get back something much larger and complex, where all the details handled automatically. Glide is a partial software example. You provide a spreadsheet data source, and Glide deploys a baseline Web application. Glide falls back into visual programming for customization, but that initial step is generative.
Based on those categories, we already have some vocabulary for people who build software without code. They're visual and generative programmers.
I am particularly excited about the prospect of millions of new generative programmers. While not every no-code tool falls into that category, a generative style is the benchmark. That's because it most closely aligns with the no-code promise: tell me what you need, and I'll handle the details.
In that way, generative programming is an extension of one of software's core purposes, automation in the service of people. And because generative programming has the potential to be much more accessible, many more people will get to participate in software and have new tools to meet their goals.