The Rise of Abstraction
Four years ago my partner and I were talking about revolutionary 20th century technology when we began day dreaming about future inventions that could redefine humanity. It was in this moment I confidently told her:
In the future, knowing how to code will be as essential to one's survival as being able to read or write. Everyone will need to know how to program. Those who don't will struggle to compete in a world where fluency in a computer language is as essential as fluency in any spoken language. That's not to say that everyone would strictly be a software developer but that professionals from all fields would trounce those without the skill. The future would be full of programmers because Darwinian selection would slowly but perpetually favor them.
I was really wrong about that. Laughably, embarrassingly wrong.
For starters, rockstar computer programming skills are no substitute for the ability to meaningfully connect with another person. For as long as there are people in business, there will be a market for the emotionally and socially intelligent. A second reason – the main reason I failed to predict our present – was because I did not fully appreciate the power of abstraction.
The Power of Abstraction.
Let's define this as follows: Abstraction is the thing that allows you to drive a car to the grocery store without needing to know how its engine works. You don't have to be a mechanical engineer, metallurgist, or have a degree of any sort. All it takes is an average intelligence and height to reach the pedals. Or does it? Even those minimum requirements are disappearing. Public transit, taxis, and forthcoming autonomous vehicles simplify this task to the effect that one no longer needs to know how to drive to get around.
Similarly, we've reached the point where one can program without knowing a traditional programming language. The rise of "No Code" tools like Webflow, Bubble, and Amazon's Honey Code make it possible to build useful web applications without writing much if any code. This is a radical shift. It would seem that Marc Andreessen's vision of software eating the world has caught up with its own creators. If you're one of these makers, then this may sound like a scary thing but I want to make the case for you today that it is actually a good thing. In truth, I find that it's traditional coders themselves who can benefit the most from no-code tools.
This is not a toy
I think it's hard for traditional programmers to take no-code tools seriously because they've historically been quite limited or marketed for children. Visions of Scratch or a Lego Mindstorm's EV3 editor come to mind. It also doesn't help that the names of these tools sound like they're meant for toddlers, i.e. Bubble, Bettyblocks. But Bubble in particular is quite powerful, just take a look at the following:
- Dividend Finance has been running a solar panel financing platform for homeowners and a CRM for installers since 2014. They have raised more than $330m and processed over $1b of loans through a Bubble-built solution.
- Cuure is fully built on Bubble and has raised a €1.8m from top investors in Europe.
- Comet (raised €13m) scaled to $800k on Bubble before raising its first round.
I've personally built several applications on Bubble that run the gamut of supporting internal team operations to even running entire businesses.
The Paradox of Choice
In early 2000 Steve Krug published a book about website usability called "Don't Make Me Think." The book's premise is that a good program or website should let users accomplish their intended tasks as easily and directly as possible. I summarize his top "laws" here:
- Don't make users think. The design of a web page should be self-evident and obvious.
- Make decisions easy. It doesn’t matter how many times I have to click, as long as each click is a mindless, unambiguous choice.
- Less is more. Get rid of half the words on each page, then get rid of half of what’s left. Instructions must die.
Anyone who's used TurboTax has seen these powerful concepts at work. That product is so easy to use it practically transforms anyone into an accountant. Now imagine applying these website design principles to the structure and vocabulary of a programming language. What would that program's syntax look like? How would someone author code in this language? We don't have to guess what this looks like – it exists. It's Bubble.
Bubble comes with a lot of built in guard rails that prohibit nearly all syntactical errors. It also makes writing one's next logical operation as simple as clicking from a dropdown list. In contrast a blank, say, Javascript or Python file is a canvas of infinite possibilities within which one can type literally anything. The painful side effect of this freedom is that there are more ways to write a program incorrectly than correctly. Paradoxically, this freedom chains you to spending a lot of time trying to figure out how to make a program work. There's a reason why stackoverflow is the 49th most visited website on earth.
Less Time to Market
In addition to saving developer time by eliminating syntax mistakes, Bubble has other improvements that makes it possible to release applications in weeks instead of months or years.
Constant developer feedback
Creators need immediate connection to what they create. When you're making something, if you make a change or you make a decision, you need to see the effect of that immediately. There can't be a delay and there can't be anything hidden. Creators have to see what they are doing – Bret Victor
Bret sums it up nicely. When someone wants to make a thing in software, they're not directly manipulating the thing they want to make. Instead, they have to write a bunch of text into a text editor, run the code (perhaps compile it first), check the output... repeat. If your code is supposed to move a button on a webpage, then you may have to remember something about its coordinate system in order to shift it the right direction. So much of programming is about trying to bridge the gap between our mental models of how we think the computer works and how it actually works.
Programming in Bubble feels a lot more direct. What you see is what you get from the editor. Changes to your application are propagated instantly for visual confirmation. The debugger catches syntactic errors in real time and tells you how to fix them.
Sensible defaults
There are good design patterns and requirements that apply to almost all web apps. These include:
- User Authentication
- Data access permissions
- Reading and writing to a database
- Transactional email
- Separation of data from visual logic
- Revision control
- Separation of development and production environments
- Caching content on a CDN
There are so many ways to miss-configure or goof on any one of these aspects in traditional web app development but Bubble properly provides all of these out of the box. What this means is that developers can spend time identifying and crafting the business logic that matters to end users instead of wrestling with non-differentiating features like password management or local-remote environment conflicts.
Extendability
Like anything, Bubble has its limitations. You're never going to write an AI using Bubble. What it excels at is abstracting the once arduous process of making websites. Bubble dev's recognized they would never be able to provide all of the flexibility that front end technologies offer so they made it possible to extend Bubble by writing custom plugins using Javascript, HTML and CSS. Perhaps you prefer coding in Rust or Go? You can push or pull data from Bubble using any service written in any language as long as it can be called at a REST endpoint.
The Lower Code Future
I've focused here mainly on Bubble but the salient point is that no/low code tools have arrived and they're only going to get better. As a traditional coder, one can do as some assembly programmers once did and discount better abstractions as no more than an amateur's play thing... never to catch on because only serious and performant programs include MOV statements. But a better response, the one I invite you to consider, is that these higher level tools can make you a more productive programmer and entrepreneur. As someone steeped in the mechanics of traditional software design, you are far better equipped to leverage the power of no-code tools than those entering the space without your experience.