What Is No-Code Anyway?

“I think that we need to define what no-code is. I also think that we need to define what programming is. My definition of programming, in this context, would be the organization of logic and data to accomplish an objective.

I really like what Steve Losh had to say on the subject of programmers: Programmers shape ideas into text.

That text gets turned into numbers and those numbers bump into other numbers and make things happen.
As programmers, we use text editors to get our ideas out of our heads and create the chunks of text we call “programs.” Full-time programmers will spend tens of thousands of hours of their lives interacting with their text editor, during which they’ll be doing many things:

  • Getting raw text from their brains into their computers
  • Correcting mistakes in that text
  • Restructuring the text to formulate a problem in a different way
  • Documenting how and why something was done a particular way
  • Communicating with other programmers about all of these things

I’m a computer engineer. In school, we built a computer. Lots of bread boards, wires, and components. The way to see things work through the computer was through dip switches. 

So this was how to code op-codes into the computer registers and then manually clock the instruction through the cpu pipeline. So this was programming with machine code. The point of the class was to show and understand the very basics of how a computer works.

The next class was on assembly language. Here was a language that would compile into machine code. It allowed you to do some very basic things like load registers and basic loops with goto statements. You could create functions and modularize pieces of code that could be called over and over again. So, was assembly language no-code when compared to machine code?

The next class was the C programming language. It is considered a mid-level language because you can do assembly code directly in functions and call those functions from other C functions. So the compiler would convert your C code into assembly, and the assembler would compile the assembly code into machine code. When compared with assembly language, was the C programming language no-code?

The next class was the C++ programming language. This is considered a high-level programming language, even though you can mix C and C++ code in the same project. C++ introduced object-oriented constructs into the language. Now you could conceptualize your logic and data into objects. The new thing here wasn’t anything to do with programming, per se, but with a new way to solve programming problems with objects. Is C++ no-code when compared to the C programming language?

Hot on the trails of C++ came Java. Java was object-oriented but introduced the concept of a virtual machine. Write once, run anywhere. Now your Java code is compiled into byte code, which is then run through an assembler that executes the byte code on the native computer. You got things like Just In Time Compiler (JIT Compiler). This introduced run-time optimization that the JIT compiler would do in detecting Hot Spots in the code and optimizing that byte code/assembly code. In certain circumstances, you could get Java code to run faster than C++ code. Same question, is Java considered no-code when compared to C++?

I could do the same analysis on C#, which is just Microsoft’s version of Java. Also, all interpreted languages, like Bash, Perl, Python, and Javascript. What about functional programming languages that offer constructs like map, reduce, and filter? Programmers who learn functional programming, after programming in imperative languages, regularly report using far less code to solve the same problems. Does this make functional programming no-code when compared to imperative languages?

When I see Lego Mind Storms programming with visual components, where the code flows graphically from left to right, this was considered no-code programming. It was very frustrating to work with and even harder to modularize and debug. I think that no-code is just a way to try and introduce basic programming concepts, like solving a problem by organizing data and logic. There are always going to be problems that can be solved most efficiently using a specific language. 

Different professionals are going to turn their preferred language and approach into a cult-like following and only see how to solve problems using that language and/or approach. When it comes to no-code, the people touting it are interested in getting people to understand the very basics of how to approach a problem by organizing logic and data to work together and solve that problem. Once those concepts are understood, the no-code language gets in the way of doing other things that are programming like:

  1. Using a debugger
  2. Version control
  3. Effective documentation
  4. Etc.

If there is a language that is created, that is easier for laypeople to organize logic and data to solve a problem, that isn’t going to be called no-code, it will be called a programming language.”

 Frank Eaves, Senior Engineer at DZone

No-Code Isn’t Just a Fad

“Just like with any field, fads come and go and new technologies sometimes gain hype that outpaces their usefulness in practice. In many cases, it is beneficial to heed the advice of Fred Brooks, who stated that rarely does there come a technology that reduces the development time of software by any order of magnitude. In the case of no-code, there is a tendency to treat this advancement as a solution to every problem, but despite this exaggerated view, there are numerous benefits that no-code can bring to both developers and non-developers.

No-code ensures that repeated solutions, such as querying a database or even best-practices when designing a user interface, can be generated without human intervention. This enables developers to focus on the tasks that require their expert attention and aids in removing the bugs that are so common when implementing standard solutions to recurring problems. For non-developers, no-code allows laymen to create rich applications without having to spend the months and years necessary to understand a programming language (or multiple languages). Thus, no-code tools can allow business professionals, and even children, to create advanced applications without the overhead of rigorous study.

While no-code tends to be over-hyped as a solution that will eventually eliminate programmers and manually-written code altogether, there are some major benefits to this approach when paired and intermingled with current software development practices. No-code should not be viewed as the savior-practice that will end programming, but it also should not be overlooked as a passing fad.”

 — Justin Albano (@justinmalbano), Software Engineer at Catalogic Software

No-Code Is the Destiny of Software Development

“There might not exist silver bullets according to Fred Brooks, but in our line of business, even silver dust is worth its weight in gold. Maybe the computer will never be able to completely replace the software developer through concepts such as no-code, but even an incremental improvement of 10-20 percent might result in that you get your product out before your competitor while saving millions of dollars in the process.

These ideas are really nothing new. Creating higher abstractions is an exercise software developers have participated in for decades. Most software developers today don’t even know how to manually handle memory today due to garbage collectors. And few developers are manually creating their own socket libraries. No-code is simply the natural progression of this. No-code is the point in time in this process where we have accumulated so many reusable libraries and tools that it becomes possible to create interfaces for orchestrating these pre-built building blocks together using things such as natural language, high-level architectural sketches, and humanly understandable natural language-based specifications.

I once created a proof of concept where I was able to use natural language to create my UI by saying stuff such as “Create widget,” and my computer would ask “What widget?” and present me with options. Currently, I am working on Magic — which is probably slightly more useful — where I can instantly create all CRUD operations towards any database by simply clicking a button. Does it replace the software developer? No! Does it simplify the job? Of course it does, just like your garbage collector, socket library, and all other tools does. When we started creating cars 100 years ago, imagining factories without human beings was impossible. Software development is still in its infancy today, kind of like car manufacturing was in the 1930s. 

Do me a favor, please; walk into a car factory and try to find a human being. Sure, they’re still there, hidden somewhere between thousands of robots and machines, but not even closely resembling the way they (humans) used to be present 100 years ago. Then come back and tell me, “I still don’t believe in no-code.” The fact is, no-code is the destiny of software development. It’s simply a matter of measuring speed and incremental improvements. 10 years ago it took a single developer 3 months to create a simple SPA, today it’s a scaffolding button in many frameworks. At some point in time, possibly already some will argue, the speed of application development will simply have grown so rapidly that for all practical concerns, we will refer to it as “true no-code.”

In the meantime, you can make a conscious decision and tell yourself the following; “Yes, I want to save 20% of my software development budget! Yes, I want to deliver 25% faster than my competitors!” Once you do, and you start looking for things that can deliver upon your request, you will find dozens, if not hundreds, of libraries, tools, and frameworks that allow you to easily deliver according to your wishes. “Silver Dust is real!”

Source link

Write A Comment