The real No-Code is the friends we made along the way

Engineering is not different from other professions in that we like to make our work sound esoteric. It feels nice when people think what you do is magic. And, to be fair, sometimes engineering is really hard. However, the skills required to create technology exist on a spectrum. There is seldom a clear line between professional engineering and more casual modalities of creation. Over the last couple of decades especially, technology product development has been moving from the former towards the latter. The result is a dramatic expansion in the diversity, accessibility, and creativity of tech applications in the world.

“No-code”, a term referring to platforms that give the ability to create tech applications without any programming, has been around for awhile. Squarespace was founded in 2004, and many have been using Excel as a no-code tool for far longer. It has gained more serious steam as a startup buzzword in the last few years, with multiple recent unicorns (Notion, Unqork, Airtable) and many more rising stars. However, it’s also a fascinating metaphor for technological development at its most exciting, a sign of the strength of the technological shoulders we stand on, and a hint at the incredible future of design with technology yet to come.

No-code is actually a continuation of a deeper trend that many technologists are intimately familiar with. Programmers use the term “layers of abstraction” to refer to higher or lower level interaction with a computer. The lowest level of interaction is the way computer coding was done in the mid-20th century, in machine code, manipulating individual bits high (1) or low (0). Low level coding is still alive and well, at computer companies but also in certain types of microcontroller programming. Arduino hobbyists sometimes have to think about what is happening at this level to interact with certain types of sensors, for example.

To move up a layer of abstraction means to rely on a piece of code that someone else has written to perform those lower level functions, usually called a ‘library’. Back to the Arduino example, often someone in the hobbyist community will publish a code library that creates an easier coding interface. Instead of telling the computer to set a bit to a specific value, you can write something like: “take a temperature reading,” often using language that is close to readable English. Setting the register value is handled by the library so the coder doesn’t actually need to understand what’s going on under the hood as long as the library is working properly.

Virtually all of technology is built on these layers of abstraction. Nobody could get anything done if they couldn’t rely on lower level libraries to handle the nitty gritty. However, the libraries that everything relies on vary in robustness, and this is where we get some of the worst bugs and security vulnerabilities. A flaw in OpenSSL’s widely used cryptography library lead to the infamous Heartbleed bug disclosed in 2014.

Despite the flaws, this underlying architecture is well worthwhile because it enables creativity and rapid innovation. We can create things faster than ever before in virtually every area of technology. Working websites, IoT applications, mobile apps, and games can be prototyped or even fully built out in a day or a weekend, all because higher level technology builds on existing lower level solutions. Even if we have to deal with the occasional security flaw, it’s still dramatically more secure than if everyone tried to write their own implementation of SSL.

It’s hard to understate how powerful this idea is, and no-code is the logical continuation of the trend. If adding layers makes things more human readable and interpretable, then no-code is when you cross over into not needing a programmer at all. You don’t need a web developer to build a Squarespace website. You don’t need an industrial engineer to build a Tulip manufacturing app.

Those are examples of software programs with drag-and-drop design interfaces, but what they represent is modularity, control, and creativity for the designer. In addition to the more well-known software examples, here are some from the hardware world:

  • LEGO Mindstorm is essentially a plug-and-play robotics kit for kids; all of the low level work (eg. motor control) has been abstracted away.

The electronics industry is quickly following in software’s footsteps, but other, more capital intensive technology industries are seeing the value in adaptability and flexibility as well:

  • Moderna’s mRNA vaccine was built in a weekend, which is possible because Moderna has developed low-level mRNA vaccine technology that allows them to quickly move to the application layer.

When it reaches the highest levels of maturity, no-code enters the consumer landscape. You want specific lights to turn on at specific times with a specific color? That was possible 15 years ago, but required a lot of technical expertise. Now Phillips handles picking out the LEDs, figuring out how they communicate, and translating touches on a screen into colors, data, and voltages. There are so many layers of abstraction that we don’t think about using the Phillips Hue app as engineering.

It’s exciting to think about where this is headed next, and fortunately we have some pretty good ideas. We can look at what used to be specialist engineering and is now becoming accessible to hobbyists.

  • It’s entirely possible that, for better or worse, the 21st century will be defined by increasing access to synthetic biology. In 2020 a small community of biohackers injected themselves with homemade covid vaccines built using CRISPR-Cas9, a low-level technology for gene editing. Though the effectiveness of this effort was dubious, it’s a bellwether for what’s to come.

And naturally, starting to cross the border now to where non-technical designers can leverage the technology, is machine learning. Not only can non-engineers use ML tools that engineers have built, but it will very soon be common for designers to build their own ML applications without needing an engineer. The market is ripe for further work in this area, as there is still a sizable amount of technical knowledge required to know where to start.

I myself will be working on this problem when I start my new job at Facebook AI Research in August. Droidlet is a project to help AI researchers and ML engineers build assistive agents more quickly by abstracting away some of the low level work into useful interfaces.

The point is even more stark looking backwards. If we define “technology” more broadly as cultural know-how, then it’s obvious society is built on the shoulders of giants. We don’t need to reinvent plumbing every time we build a new house, and we don’t need to reinvent agriculture every time we want food. It’s unconventional to think of seed suppliers as a layer of technological abstraction, but they solve a bunch of low-level problems for farmers in an analogous way to a code library.

Some evolutionary scientists think this is our primary competitive advantage as a species, and one rationale for why we have such large brains. Knowledge about hunting and tool use could be considered the earliest form of technology.

Every time we build a new layer of technological abstraction, it opens up the ability to create with that technology to more people. A beautiful consequence is that the new set of creators is much more diverse than the existing set. Instead of just engineers, it becomes artists, designers, businesspeople, and generally people who have ever broader backgrounds and goals. What follows is a huge expansion in the diversity of the content that is created. What will “no-code” hardware applications enable? What will the world look like when synthetic biology is accessible to everyone?

Studying how we interact with the Internet of Things at MIT; former founder and CEO of Updraft Ventures, Escape Rhode Island