Why do I think low-code development is a pseudo-requirement?

Recently, I have seen many people promoting low-code development. People who have not studied professional programming can quickly create a cross-platform app and put it into production just by drafting or dragging a few controls. It looks like a very beautiful thing.

However, I've always had my doubts about this. I tried to use PowerApps, but what I felt was its own use threshold and debugging ability requirements. And, for slightly more complex requirements, low-code development platforms often bring not convenience but obstacles.


App is not what you see is what you get

When I first started learning web design, I always thought of Word. I think the design of the page should be like Word, typesetting, changing the font, changing the font size, changing the color, and it's all done. In a nutshell, I want development to be what you see is what you get.

In computers, what you see is what you get (English: WYSIWYG, /ˈwɪziwɪɡ/ WIZ-ee-wig, abbreviation for What You See Is What You Get) is a system in which content edited by editing software is Or look similar when made into a finished product, such as a print file, web page, or slideshow. WYSIWYG means that the user interface enables users to create a document while viewing something very similar to the end result. Often, what you see is what you get means being able to directly manipulate the layout of a document without having to type or remember the names of the various layout commands.

WYSIWYG web design tools, the most typical is Adobe Dreamweaver. It is actually very much like a Low Code development platform. I like to drag a few buttons from the control library, drag a few pictures, change properties, click preview, click publish.

But as the functions I need become more complex, for example, I need to submit a form, or draw a dynamic form, the WYSIWYG development makes me more painful. While reading the HTML code generated by Dreamweaver, it is often stuffed with various inline CSS, and there is no code extension and reuse ability.

I later realized that the web page itself is not what you see is what you get. It may have classes, modules, nesting, recursion, loops, inheritance, polymorphism... Use a WYSIWYG development tool to develop a non-WYSIWYG thing, maybe in the short term Getting started, but slightly complex scenarios, and when it comes to reuse and extension, will eventually be full of obstacles.

Ultimately, I believe that all web developers should come back and learn HTML, CSS and Javascript seriously. The author of the document may initially like Word, but he will definitely choose Markdown or LateX in the end.

Likewise, apps are not what you see is what you get. Almost all of the existing low-code development frameworks make you feel that the app is what you see is what you get, which must eventually face the same problem, so that it can only face the most basic scenarios.


The low-code development platform itself has a lot of learning costs

The biggest advantage of low-code development is the lower learning cost. Users do not need professional programming skills. However, I think there may be some misunderstandings: Does the company buy a low-code development framework so that product managers and designers can directly develop apps?

In this day and age, many ordinary people may not even be aware of files, let alone concepts like: platform, interface, compilation, and distribution. Like now I tell you, you have a low-code development framework in front of you, are you confident to give me a production-ready, express progress viewer in 3 days?

Maybe we can train, train professional "developers" of low-code platforms. Just like there have been many successful cases of low-code development, they have gathered many professional developers of low-code development platforms and have indeed built production apps in a relatively short period of time.

But we think in turn, if your company has the ability to organize a team to use a low-code development platform, then I also believe that your company has the ability to recruit a large group of native Android and iOS developers. .


The code itself is an abstraction of the world, and low-code cannot be more general in the short term

Low-code development can often be done quickly for simple scenarios, such as a simple registration form.

However, in the face of complex scenarios, such as recharge, shopping, ordering, after-sales and other pipeline scenarios, it is often accompanied by complex business logic, which will rapidly increase the complexity of low-code development.

This is because development is essentially a human attempt to abstract a real-world process. The one we are already most familiar with is formal language abstraction. A formal language is a language defined with precise mathematical or machine-processable formulas. It inherently has the advantage of being easy for machines to handle. The history of the evolution of formal languages ​​has given it a very sound theory. For example: Design Patterns and Object-Oriented Design Principles.

When we use Low Code to develop, we are actually abstracting the process in this real world. But why do we give up the existing high-quality abstraction method, and switch to an abstraction method that is not suitable for computer processing, expecting that the computer and AI can understand it correctly (not necessarily successful)?

Simply put: code is a good abstraction, and low code cannot be more general.


WinForm & WPF ?

Some people may refute: as early as 20 years ago, Microsoft has already engaged in such things as WinForm, and later popularized WPF. They also let you drag and drop controls and click the mouse? Why did these frameworks finally succeed, and a large number of excellent apps were born?

For this problem, in fact, WinForm and WPF themselves are not low-code development frameworks. They are just desktop application development frameworks. And Visual Studio just provides a designer.

Most importantly, no developer thinks that what the Visual Studio designer sees is necessarily the same as what the program will see when it runs. When the program runs, there may be various advanced interactive behaviors, the control may be dynamically generated, and there may be code to redraw the UI...

The WinForm designer gives "preview of what is possible", not "what you see is what you get". The behavior of the final application is determined by the code behind. This is fundamentally different from low-code frameworks.

In other words, a mature WinForm\WPF developer must be able to achieve everything he has done before by relying only on code and without looking at the designer preview. Just like a mature HTML developer, you don't write HTML while watching the preview.


Is there a market for low-code development frameworks?

My answer is: yes. But it's not as exaggerated as the media preached.

Imagine I build a Minecraft server. I desperately need an app that can check the status of each player in the server, or participate in chat, or kick a player (all of which already have a complete API), and I also know the life cycle of the application very well And the basic knowledge of web development, when I just don't bother to spend time to write it, it is really convenient to use a low-code development framework to quickly solve this requirement.

Of course you've already seen several premises:

  • Requirements are not complicated
  • Developers already have basic development literacy
  • Relevant infrastructure (such as API) has been built
  • Don't want to invest too much time, energy and money

When the above conditions are met, a low-code development framework is a good choice.

Of course, what the media advertised: "Ah, take a photo, and the product manager will take care of the development work by himself~" is completely funny.