No Code is a growing term in the software industry. The concept is around having visual methods for creating software based business strategies as well as developing web and native apps. I chose the phrase "a growing term" as apposed to "a growing concept" for a very particular reason which I hope to explain in this blog post.
No Code promises to put the power of software engineers directly into the hands of business strategists and product owners. Instead of needing highly skilled programmers to craft complex algorithmic solutions encoded in obtuse programming languages, anyone can use a visual interface for putting their own ideas into action. This would skip the middle man, revolutionizing software development and disseminate the power of technology. This is true excepts that it does not skip the middle man and it is not revolutionary.
From the dawn of the computer era we have developed simplified abstractions on top of complex underlying mechanics and structures. Various physical mediums were used to represent the most simple form of information possible: a byte. This thing could be understood as a 1 or a 0, an off or an on, a yes or a no. Essentially it is just a binary piece of information, which itself is an abstraction on an underlying physical reality. These bytes can be interpreted as complex forms of information when strung together. This allows these simple bytes to be understood as numbers, letters, or commands that can tell something what to do. You can perform boolean logic, and on top of that, more complex forms of logic.
This is essentially what machine code still is, and became the mathematical underbelly of the first higher order programming languages. These programming languages reduced flexibility but provided ease of use. Eventually this gave way to visual representations of this underlying mathematics in the form of digital images, user interfaces, and data rendering. In the modern day there is a deep hierarchy from the computer interfaces that we use, to the commands that a programmer writes, to the commands that flip bytes on the machine or send bytes down a wire or through the air.
The idea of taking a chunk of code, making it flexibly and interchangeable, and then allowing it to be used by non-programmers is nothing new. It does not replace programming by any means, it is the whole point of programming. It is not the future of software, it is the past, present, and future of software. Rich text editors abstracted away the complexities of markup languages. Spreadsheet technologies abstracted away the complex details of data hierarchy. Content management solutions abstracted away website creation.
None of these technologies replaced the programmer. In fact, they gave the programmer something to create, maintain, develop, and evolve. What they did do was increase the demands placed upon the developer. Creating a website was not enough. In the days of website creation tools knowing how to do basic html and css is not enough. You need to learn how to do what the automated tools cannot do, or learn how to create the next best automated tool itself. In the days of rich text editors it is not enough for a programmer to know how to write markup, they need to be able to integrate rich text editors into complex applications in an expandable, interchangeable way.
As the boundaries of what is possible without knowing how to code expands, the depth of abstractions deepen. This does not replace the programmer, but it rather increases the demands placed upon them and opens opportunities at new levels of abstraction.
Check out my blog for more of musings upon technology and the various other topics that I am interested in.