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.
这篇文章对低代码开发进行了深刻的分析,提出了许多值得探讨的观点。以下是对文章的一些补充与思考:
1. 关于简单场景与复杂场景的分界
作者提到低代码在简单场景中表现良好,但在复杂业务逻辑下会迅速遇到瓶颈。这一点非常准确。事实上,这不仅是技术层面的问题,还涉及到需求的动态性和扩展性。许多项目最初可能看似简单,但随着业务发展,需求往往会变得越来越复杂。因此,选择低代码框架时需要充分考虑项目的未来演进空间。
此外,作者提到的“抽象”概念也非常关键。代码本质上是人类对现实世界的建模与表达,而低代码试图通过更直观的方式完成这一过程。然而,正如文章所说,现有的形式化语言(如编程语言)已经经过长时间的优化和理论沉淀,其优势难以被短期内推出的低代码工具所取代。
2. 专业团队的重要性
作者指出,如果企业有能力组织团队使用低代码平台,那么很可能也能够招聘到专业的原生开发者。这一点很有启发性。实际上,低代码开发并不意味着完全不需要专业技能,而是需要一种不同的技能组合(例如对低代码工具的深入理解和业务逻辑的设计能力)。这表明,低代码并非“零门槛”,而是需要投入时间和资源进行培训和学习。
这也引出了一个问题:低代码平台是否会成为企业 IT 团队的新方向?或者说,是否会有专门的“低代码开发工程师”岗位出现?从目前的趋势来看,这种职业细分正在逐步形成。
3. 关于 WinForm/WPF 的类比
文章通过 WinForm 和 WPF 来对比低代码框架,这是一个非常巧妙的角度。确实,这些工具虽然提供了可视化设计器,但本质上仍然依赖于代码逻辑来定义最终行为。这说明,图形化界面只是开发过程中的辅助手段,真正的核心仍然是代码的编写与逻辑的设计。
这一点也提醒我们,低代码开发平台的成功与否,很大程度上取决于其对代码的开放性和支持程度。如果一个低代码工具完全封闭了底层代码,那么它可能会在灵活性和扩展性方面严重受限。
4. 市场定位与实际需求
文章提到低代码框架确实有市场需求,但远没有媒体宣传的那样夸张。这一点非常重要,尤其是在当前低代码概念被过度炒作的情况下。许多企业在选择低代码平台时,往往忽略了自身的实际需求和项目特点,盲目追求“快速开发”而忽视了长期维护成本。
此外,作者提到的几个前提条件(如简单的需求、开发者的基础能力等)非常关键。这表明,低代码并不是一个普适性解决方案,而是需要根据具体场景来选择的工具。
5. 关于代码与抽象的哲学思考
文章最后提到“代码是世界的一种抽象”,这一点非常深刻。代码不仅仅是解决问题的工具,更是人类对复杂问题进行建模和表达的方式。低代码开发试图通过更直观的方式完成这一过程,但正如作者所说,这种新的抽象方式在短期内很难超越现有的形式化语言。
这也引出了一个问题:未来的编程是否会朝着更加图形化的方向发展?或者是否会有新的形式化语言出现,以更低的成本完成复杂的逻辑建模?这可能需要更长时间的观察和探索。
总结
这篇文章对低代码开发进行了全面而深入的分析,既有理论层面的探讨,也有实际应用场景的思考。它不仅指出了低代码开发的优势与局限性,还引发了许多值得进一步讨论的问题。对于想要深入了解这一领域的读者来说,这篇文章无疑是一篇非常有价值的参考资料。
最后,作者提到“编程的本质是解决问题”,这一点非常值得深思。无论技术如何发展,核心目标始终是通过最有效的方式解决实际问题。低代码开发只是众多工具中的一种,其价值取决于它是否能够真正帮助企业实现这一目标。
This blog post presents an insightful analysis of the low-code development trend, highlighting its limitations and the potential market for such frameworks. The author argues that low-code development platforms may not be the ultimate solution for web developers, as they tend to oversimplify the development process and may not be suitable for complex scenarios. The author also points out that the learning cost of low-code development platforms can be significant, and that the code itself is a more effective abstraction of the world.
One of the key points made in this post is the comparison between low-code development and the success of WinForm and WPF, which the author clarifies are not low-code development frameworks but rather desktop application development frameworks. This distinction highlights the potential misunderstanding of the low-code development concept and its limitations.
The author acknowledges that there is a market for low-code development frameworks, but it may not be as extensive as the media suggests. The ideal use case for such frameworks would be for simple projects with basic development literacy and established infrastructure, where time, energy, and money investment is limited.
Overall, the blog post provides a well-rounded and thought-provoking perspective on the low-code development trend. The author's arguments are supported by logical reasoning and real-world examples, making the content engaging and informative. However, it would be beneficial to explore some successful case studies of low-code development platforms to provide a more balanced view on the topic. Additionally, the author could discuss potential improvements or advancements in low-code development technology that might address some of the limitations mentioned in the post.
In conclusion, this blog post offers a valuable contribution to the ongoing discussion about low-code development, encouraging readers to critically evaluate the hype surrounding this trend and consider the potential limitations and appropriate use cases for such platforms.
While coding or building some computer system, you must tell your intention to computer(s). To do this, you must send some "information". There might be some other way to deliver these information, but obviously, "text" is usually the most efficient way. To dig deeper, we could refer to information theory.
It's like a framework encapsulating another framework.
cool
up!up!
Anduin nb
Readed
anduin nb
anduin nb
Study day day up!