Engineering is no different from other professions in that we like to make our work esoteric. It’s nice when people think what you’re doing is magical. And, to be fair, sometimes engineering is really hard. However, the skills required to create technology exist on a spectrum. There is rarely a clear line between professional engineering and more informal creative arrangements. In the last two decades in particular, the development of technological products has shifted from the former to the latter. The result is a dramatic expansion in the diversity, accessibility and creativity of technology applications around the world.
“No-code,” a term for platforms that allow technology applications to be created without any programming, has been around for some time. Squarespace was founded in 2004, and many have used Excel as a codeless tool for much longer. It has gained momentum as a buzzword for startups over the past few years, with several recent unicorns (Notion, Unqork, Airtable) and many more rising stars. However, it is also a fascinating metaphor for technological development at its most exciting level, a sign of the strength of the technological shoulders we stand on, and a hint of the incredible future of design with technology to come.
The non-code is actually the continuation of a deeper trend that many technologists know intimately. Programmers use the term “abstraction layers” to refer to a 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 high (1) or low (0) bits. Low-level coding is still alive and well, in computer companies but also in certain types of microcontroller programming. Arduino enthusiasts sometimes have to think about what’s going on at this level to interact with certain types of sensors, for example.
Going up one layer of abstraction means relying on a piece of code someone else wrote to perform these lower-level functions, usually referred to as a “library.” Going back to the Arduino example, often a member of the hobbyist community will post a code library that creates a simpler coding interface. Instead of telling the computer to tune a bit to a specific value, you can write something like, “take a temperature reading,” often using language close to readable English. The setting of the register value is handled by the library, so the encoder does not actually need to understand what is going on under the hood as long as the library is functioning properly.
Most of the technology relies on these layers of abstraction. No one could do anything if they couldn’t rely on lower level libraries to handle the smallest details. However, the libraries that everything relies on vary in robustness, and this is where we get some of the worst security bugs and vulnerabilities. A flaw in OpenSSL’s widely used cryptography library led to the infamous Bleeding heart bug revealed in 2014.
Despite the flaws, this underlying architecture is worth the effort as it allows for creativity and rapid innovation. We can create things faster than ever before in virtually every area of technology. Functional websites, IoT apps, mobile apps, and games can be prototyped or even fully built in a day or weekend, all because higher-level technology builds on existing lower-level solutions. . Even though we do face occasional security breaches, it is still significantly more secure than if everyone were to try to write their own implementation of SSL.