Our goal at Bubble is to erase the distinction between software use and software creation.
Good software, when used, is:
- Helpful. It empathizes with the users’ point of view, understands what they want, and lets them do it with as little effort as possible. My email provider, GMail, tries to figure out what mail I actually want to read. It marks things as spam for me, it guesses which mail is important, and it lets me hide emails I don’t want to see without making me delete them.
- Friendly. It communicates a desire to be the user’s ally. Have you ever used TurboTax Online? The users of that software are doing a stressful, hateful chore. TurboTax is their friend, holding their hand as they go through it. It goes out of its way to comfort and reassure. It’s not a perfect piece of software, but it’s pretty damn impressive.
- Empowering. Good software lets its users work miracles. Love it or hate it, what would the world look like without Microsoft Word? Fifty years ago, type-setting a document for printing was a professional trade. It took years to master the technologies behind setting margins, picking colors, preparing fonts of different sizes. Now, a five-year-old can do in ten minutes what used to take an expert hours or days.
That’s what using good software is like. Creating software, on the other hand, is:
- Rigid. When you’re writing code, you have to type out everything as plain text. That text has to be formatted just so. The computer doesn’t understand what you’re trying to do; you have to guess what the computer expects and wants.
- Unforgiving. Mistakes in programming are brutal. At best, the compiler rejects your work with an error message. At worst, you can spend hours or days tracking down a mistake as simple as forgetting a pair of parentheses.
- Obscure. It’s your responsibility as a programmer to learn the computer’s vocabulary. What’s an AJAX request? A JSON document? An ORM tool? Imagine if, to print a document in Word, you had to learn the format Word uses to communicate with the printer, or understand how it mixes inks to get the right color?
There is no reason that software for paying taxes, printing documents, and communicating messages should be helpful, friendly, and empowering; whereas software for creating software should be the opposite.
In fact, there’s been tremendous effort to change this state of affairs. Programming languages have grown simpler and more powerful. Tools like IDEs attempt to create a helpful work environment by checking for errors, generating code for you, and auto-suggesting what you could type.
This is good, but not good enough. The languages and tools have evolved, but the basic medium of programming is still the text file filled with code. This is a lead chain on anyone working to make improvements. It limits the extent you can adapt to the user’s needs, because it binds what you’re trying to communicate to the limited medium of computer-parseable text.
We’re dropping the code file. We think the computer should store programs as raw data behind the scenes. You shouldn’t have to care what a program looks like under the hood. It should look like whatever it needs to look like for you to do what you’re trying to do.
If you’re trying to draw a user interface, your programming language should look like a drawing tool.
If you’re trying to map out a process, your programming language should look like a diagram.
If you’re trying to explain some logic, your programming language should look like a user manual.
Today, programming languages expect programmers to come to them. We believe it’s the language’s responsibility to come to the programmer.
Why do we care about this? Because, when you erase the distinction between software use and software creation, you erase the distinction between software users and software creators.
Right now “programmer” is a profession the way type-setter was a profession. We want programming to be something anyone can do, just like anyone today can print a formatted paper document.
This matters, because we’re entering a world where everything we experience is mediated through technology. Programming is too important to the future of our economy, our democracy, and our society to be left to a handful of specialists. Is the average person going to be a passive consumer ina world that’s created for them, in ways they don’t understand? Or will this be a world that we all shape together?