AI Low Code Development Manifesto: A New Software Engineering Revolution

Introduction: AI low-code development is not only a new abstraction after process-oriented and object-oriented, but also a new development method after waterfall development and agile development.

 The software crisis fifty years ago 

      It is the initial stage of computer technology, and the infrastructure of software is being established, such as operating system, database, Internet underlying protocol, etc., and software is changing from simple to complex. People find that once software development is out of control, it is like falling into a tar pit. No matter how much manpower and material resources are invested, it is difficult to change, and it has nothing to do with people and months. Software development costs and time are infinitely magnified and quality is difficult to guarantee.

      In 1970, Winston Royce proposed the famous "Waterfall Model". Its core idea is to simplify the problem according to the process, separate the realization of the function from the design, and facilitate the division of labor and cooperation. The physical implementation is separate. Divide the software life cycle into six basic activities, including planning, requirements analysis, software design, programming, software testing, and operation and maintenance, and stipulate their fixed sequence from top to bottom, interconnected, like a waterfall, step by step whereabouts.

      The waterfall model aims to make software development more predictable and orderly through clear stages and prescribed documents, and is very suitable for large-scale, highly integrated software development projects with infrequently changing requirements. Until the early 1980s, it was the widely adopted software development model.

 The software crisis of twenty years ago 

      With the rise of the Internet, software has begun to touch every aspect of life. Software is defining everything. People's demand for informatization has begun to explode. The first collision between programmers and various user scenarios has begun. The ambiguity of requirements and The constant changes make the traditional waterfall development model seriously restrict the progress of software development and affect the cost of software development.

      In February 2001, Martin Fowler, Jim Highsmith and other 17 well-known software development experts gathered in Snowbird Ski Resort, Utah, USA, and held a gathering of agile method initiators and practitioners. At this meeting, they formally proposed the concept of Agile (agile development) and signed the "Agile Manifesto" together.

      Extreme Programming (XP) and Scrum represent two different schools of agile development practices. Scrum is a process skeleton that includes a series of practices and predefined roles, such as project leaders, product owners, and development teams completing each task through sprints. One iteration, each increment produced and each goal achieved. Extreme Programming focuses more on specific engineering practices such as on-site customers, code discipline, 40-hour workweek, planning games, system metaphors, simple design, test-driven development, refactoring, code collective ownership, continuous integration, small releases, pair programming wait.

      In the specific practice of agile development, there is no strict distinction between different genres, and different degrees of integration are often done. Agile development is not an abandonment of waterfall development, but a process optimization based on it, and the waterfall model is reflected in a shorter time dimension. Therefore, to this day, agile development is still the mainstream model of software development.

 Today's Software Crisis 

      Software has been integrated into all aspects of life. It can be said that most of the scenes have been informatized, and the software has reconstructed the world. However, the development of new technologies is still in the ascendant, especially the mobile Internet, Internet of Things, big With the development of technologies such as data, cloud native, and artificial intelligence, people's demand for information systems is still exploding. The biggest contradiction in the IT field is still that software development cannot meet people's growing digital needs. In this process, crises are also constantly accumulating.

First, agile development brings more and more problems.

Although agile development has made great achievements, and many software teams are following agile ideas to practice agile, agile development is not a panacea, and the problems it brings are becoming increasingly apparent. For example: it is difficult to accurately define the necessary documents and grasp the consistency of the overall product; it is difficult to judge the end point of the project and estimate it effectively; it relies too much on expert programmers, etc.

Second, technological updates are getting faster and faster.

The popularity of mobile Internet has played a huge role in promoting the development of technology. Such as endless front-end technologies, Android and IOS App development, Web front-end frameworks React, Vue, etc.; the rapid increase in data volume makes back-end services change from a single architecture to a micro-service framework, and there are various support distributions and high-concurrency database systems and middleware; the application of the Internet of Things and artificial intelligence is popular, and the application of multiple languages ​​such as Python and Go is becoming more and more extensive. Therefore, the requirements for programmers are not only to be able to quickly learn the appropriate technology stack, but also to keep track of changes in the frontier of technology.

Third, customers have higher and higher requirements for software.

With the continuous increase of software users, the traditional information management system is becoming more and more Internet-based, not only has more users, but also the business process has become more complicated. People can not only meet the needs of life through smart phones, but also complete most of the transactional work, such as government, medical care, education, attendance, office and so on. The education of users by some efficient and powerful ToC software applications makes users have higher requirements for ToB software in terms of interactive experience.

Fourth, the R&D team is becoming increasingly uncontrollable.

Now the organizational division of software development is becoming more and more detailed, such as front-end, back-end, UI design, product manager, project manager, etc. This model is effective in the development of Internet software with relatively simple business logic, but problems begin to appear in information management software that requires domain knowledge as the business becomes increasingly complex. The separation of front-end and back-end has caused huge communication costs; there are very few product managers who understand both professionalism and development; the lack of full-stack engineers makes the software architecture weaker and weaker; the mobility of personnel makes the code more difficult to maintain. Therefore, software development now urgently needs a new organizational method to solve the increasingly out-of-control situation.

Fifth, programmers are getting more and more confused.

The rapid development of IT technology has attracted a large number of young people to enter the software industry, and software development is a knowledge-intensive job, and the ability of programmers varies greatly. Many programmers have no concept of the boundaries of software development. Internet software development, information management system development, and professional software have different technology stacks and development methods. Many programmers have learned a lot of Internet development technology, but can only engage in information management system development, which makes them a lot of confusion. And the well-known 35-year-old phenomenon. The lack of effective career planning has become a problem faced by more and more programmers.

 revolutionary new technology 

      As early as 2014, the IT consulting company Forrester first proposed the concept of low-code. Until 2019, another well-known IT consulting company, Gartner, made a more detailed definition of low-code development, which attracted widespread attention:

      LCAP (Low Code Development Platform) is an application platform that supports rapid application development and uses one-stop deployment, execution and management of application declarative and high-level programming abstractions (such as model-driven and metadata-based programming languages). Different from traditional application platforms, it supports the development of user interface, business logic and data services, but improves efficiency at the expense of cross-platform portability and application openness.

      From this definition, we can see that the core value of low-code is to realize the rapid delivery of business applications, and to speed up software development by using platform tools on a higher abstraction dimension. Gartner did not specify the specific implementation of low-code. Reducing code entry and visual drag-and-drop using configuration strategies are just one implementation.

      If low-code points the way for reforming software development, AIGC provides a more powerful means. In November 2022, OpenAI released ChatGPT, a natural language processing tool driven by artificial intelligence technology, which can conduct conversations by understanding and learning human language, and interact according to the context of the chat, truly chatting like a human Communication, and even complete tasks such as writing emails, video scripts, marketing copywriting, translations, and papers. In terms of programming, its excellent code generation ability also surprises programmers. As early as June 2021, Microsoft and OpenAI jointly launched GitHub Copilot, an AI programming tool. Its core model can understand a wider range of contexts with the help of GPT's generation capabilities, whether it is documents, comments, function names, test codes, etc. Whether it is the code itself, new code can be synthesized according to the context for matching, and it is called the virtual version of pair programming because of its efficient auxiliary programming ability. The latest Github Copilot X can not only recognize the code content entered by developers, display error messages, but also analyze and explain the purpose of code blocks, generate unit tests, give debugging suggestions, and even interact with programmers by voice.

Jiang Tao, the founder of CSDN, mentioned in a recent speech that AI programming is divided into five levels C1, C2, C3, C4, and C5 inspired by unmanned driving. Here we slightly modify C4 and C5, because the development of the program should still be difficult to leave the role of people, just how much participation is involved.

      C1 level, just like the input method, typing a line will automatically complete the prompt;

      C2 level, will predict the following code after the programmer finishes typing a line of code;

      C3 level, can generate complete function code, and can generate code based on a piece of code;

      C4 level, able to generate a complete module according to the programmer's requirements, and complete the mutual translation of different programming languages;

      Level C5, generates a complete project with limited hints from the programmer.

      According to tests, ChatGPT has at least reached the C3 level, and the latest GPT-4 can even complete part of the work at the C4 level. From C1 to C5, it can be seen that this is actually a continuous enhancement of the code completion function. For programmers, code is the most efficient and flexible way to implement it. Code completion is the flexible control of code writing .

      We know that in actual software development, there are often countless implementation methods for the same business scenario. Although it is difficult to determine which is the best, what we need is a definite, readable, and verifiable implementation method. Therefore, to reach the C5 level, it is not enough to rely solely on the codes freely generated by AI. We need the restriction capability of low-code, that is, in the concept of low-code, we can improve certainty at the expense of openness. In addition, AI code generation also depends on the ability of prompt words, and well-expressed prompt words require professional domain knowledge, which corresponds to the high-level abstraction in low-code.

      Software development is not just about writing code, but also includes multiple processes in the software development cycle such as requirements analysis, process modeling, architecture design, detailed design, and testing. It is foreseeable that ChatGPT will be able to assist in every process link, and the changes brought about by new technologies are beyond doubt. Some people even suggested that programmers' careers will be terminated by AIGC within 3 years. Although this is a bit extreme, I think programmers will never be terminated, but programmers who will not keep pace with the times and use AI programming tools will be terminated.

 AI Low Code Development Manifesto 

      At this singular point of technological development, we propose a new software engineering idea, the Low-Code Development Manifesto, in comparison with the Agile Manifesto, trying to guide and analyze the next development in the field of software programming. Although the right item has its value, we pay more attention to the value of the left item.

1. Components and models are higher than individuals and interactions are higher than processes and tools

      In waterfall development, the software development process is defined through strict processes and design tools to ensure the effective implementation of the development plan. In agile development, individuals and interactions emphasize the role of people, and the skills and communication between different participants are used to deal with changes in development requirements.

      Through years of software development accumulation, many business scenarios already have mature domain models and operating procedures, and new businesses can be quickly built through components of different granularities. Slightly larger software companies will also form their own unique development models and framework systems, which is why once the low-code concept is proposed, low-code or no-code platforms emerge in endlessly.

      Through the AI ​​big language model, the scene can be better disassembled, and the establishment of the domain model and the construction of the components can be guided. Components and models exist as the basic elements of software development, and various development frameworks and component systems have their own characteristics due to different scenarios and design patterns. Although the accumulation of components and frameworks can improve development efficiency, what kind of components and models can be established to effectively cooperate with AI large models is the key to the problem.

2. Readable code over working software over detailed documentation

      Documentation is an important milestone output in waterfall development. In agile development, due to changes in requirements, we need to continuously iterate the software development process and communicate with users continuously. This requires that the software code can be continuously modified quickly and effectively, and each iteration produces a workable software,

      However, in this process, the documentation is constantly weakened, so that in the end, the documentation is completely disconnected from the code. Another interesting consensus about documentation is that programmers hate writing documentation the most, and they also hate others not writing documentation. In addition, for frequently modified code, the maintainability of the code is also constantly decreasing. The code that is easiest for programmers to understand is the code that has just been written, while the most difficult code is the code that I wrote a year ago. Members are always crashing in a constant loop.

      Therefore, improving the readability of the code is the best way to solve the continuous iteration of software development, and it is also an effective way to reduce bugs. Improve code readability can start from three aspects, the first is naming, clear and accurate naming can greatly improve the readability of code; secondly, code documentation, not just code comments, consistent and complete documentation can Let programmers understand the code more quickly; the last is a good design, a good design can simplify the code and allow the code to generate self-commenting capabilities. These problems can also use the AI ​​large model. On the one hand, the AI ​​large model can check the quality of the code and provide a better design method; on the other hand, it can also automatically generate code fragments that meet the quality requirements. Programmers can even directly use pseudocode to program, thereby greatly improving the readability of code.

3. Customer success is higher than customer cooperation than contract negotiation

      In waterfall development, the functional scope of the software must be determined first, so the contract negotiation is carried out first. Once the contract is signed, the software requirements will not change. In agile development, since users cannot accurately describe the software they want before development, it is necessary to cooperate with customers and iterate continuously during the development process to finally achieve the desired effect.

      Today, software development has accumulated enough experience in many scenarios to design industry best practices, which is why SaaS is widely adopted as a mature model. Users do not need to fully participate in the development, so software delivery has become an important task. Customer success can be divided into three levels. The first is that the customer uses the software well, the second is that the software can truly create value for the customer, and the third is the ability to follow the customer's continuous development and ensure the customer's competitive advantage.

      But the SaaS model does not mean that no custom development will be done for users. In fact, management software is the embodiment of management thinking, and it is the difference in management thinking that distinguishes one enterprise from another. How to customize for customers is a challenge for SaaS software and an opportunity for AI low-code development. An obvious question is whether the standardization of SaaS is still valid if customized development through AI low-code is easy enough. In low-code development, there may be a new division of programmers, business programmers, who will no longer focus on technical implementation details, but use reasonable components and models to quickly implement software under the guidance of AI. The system is reconfigured to ensure the continuous success of the software system in customer applications.

4. Predicting change is higher than responding to change is higher than following a plan

      In waterfall development, once the contract is signed, development proceeds step by step according to the plan. In agile development, due to the continuous interaction with users, it is necessary to continuously respond to changes in requirements. The reasonableness of user changes cannot be determined until the next interaction. If it is unreasonable, frequent rework will occur.

      Therefore, it is very important to have a deep understanding of user needs and predict changes. For programmers, it often takes a few months to understand the user's years of work experience. Often many concepts are only superficially consistent, but the deep business logic is difficult to understand, thus causing the system to not match the user's demands. How to deeply understand the requirements requires the participation of more professional domain experts. In AI low-code development, the superpower of the large language model can act as a domain expert and enhance programmers' understanding of user needs.

      Another ability to respond to changes in users is the incorporation of AI into the system, making the software inherently predictive. Through AI, users can use the software more flexibly, instead of being limited by the limited interaction and presentation of the program interface. At the same time, using the huge knowledge and reasoning capabilities of the large model to analyze and predict the customer's business, this will be a revolutionary change for the existing software system.

 AI Low Code Development Principles 

      The principles of low-code development also correspond to the principles of agile development, which are explained from four aspects: project delivery, communication and cooperation, project implementation and continuous improvement. In AI low-code development, developers use tools and go deep into business scenarios to think in the way of users, rather than just serving users, so our strategies and ideas have also changed accordingly.

 delivery project 

① Agile development: Our most important goal is to satisfy customers through continuous early delivery of valuable software.

① AI low-code development: Our most important goal is to quickly deliver valuable software and be able to continuously improve quickly to satisfy customers.


② Agile development: gladly face changes in requirements, even in the later stages of development. Good at controlling changes and helping customers gain competitive advantage.

② AI low-code development: In any stage of software development and use, it is willing to face changes in requirements, and increase the predictive ability of software systems to help customers gain a competitive advantage.


③ Agile development: Deliver working software frequently, a few weeks or one or two months apart, tending to take a shorter cycle.

③ AI low-code development: By using low-code development tools, quickly deliver working software and ensure the readability of code and design.


 communication and cooperation 

④ Agile development: business people and developers must cooperate with each other, every day in the project is no exception.

④  AI low-code development: Business programmers can use AI to understand business or cooperate with business personnel.


⑤ Agile development: Stimulate the fighting spirit of individuals and build projects with them as the core. Provide the environment and support they need, backed by trust, to achieve their goals.

⑤ AI low-code development: Build projects with AI low-code development tools as the core, stimulate individuals' fighting spirit, provide them with a consistent environment and support, supplemented by trust, so as to achieve their goals.


⑥Agile  development: No matter inside or outside the team, the best and most efficient way to transmit information is face-to-face conversation.

⑥ AI low-code development: use a unified design and development platform to ensure the consistency of domain knowledge understanding, and communicate face-to-face as much as possible when there are differences in conceptual understanding.


 Project implementation and project promotion 

⑦ Agile development: Working software is the primary measure of progress.

⑦  AI low-code development: Working software and clear and readable code are the primary metrics for progress.


⑧ Agile development: The agile process advocates sustainable development. Owners, developers, and users need to be able to work together to keep the pace.

⑧ AI low-code development: The low-code process advocates sustainable rapid development. Owners, business programmers, and users need to be able to work together to keep the pace steady.


⑨ Agile development: Persevering in the pursuit of technical excellence and good design will enhance agility.

⑨  AI low-code development: Persevere in the pursuit of technical excellence, good design, and readable code to enhance low-code development capabilities.


Continuous improvement of projects and teams

⑩Agile  development: the art of reducing unnecessary workload based on simplicity.

⑩ AI low-code development: make use of the capabilities of AI large models as much as possible, and try to reduce unnecessary workload.


⑪ Agile development: The best architectures, requirements, and designs come from self-organizing teams.

⑪ AI low-code development: The best architecture, requirements, and design come not only from a self-organizing team, but also a good development platform and AI model.


⑫Agile  development: The team regularly reflects on how to improve effectiveness and adjusts its behavior accordingly.

⑫ AI low-code development: The team regularly reflects on how to improve performance and enhance AI capabilities, and adjusts its own behavior accordingly.


 A New Software Engineering Revolution 

      The emergence of AI low-code is the result of continuous accumulation in the programming field, and it is an inevitable trend from quantitative change to qualitative change. AI low code is equivalent to the automated production line in the manufacturing industry for software development. It will no longer rely on individuals, but a standard sustainable rapid development system. This is not only a technical framework, but also a new software engineering idea, a reflection on programmers' own programming methods, and a new technical framework to further liberate productivity, which will profoundly change the development and practice of software systems.

      AI low-code development is a new abstraction after process-oriented and object-oriented. It uses mature and efficient components and models to quickly complete the construction and implementation of software systems from both technical and business levels.

      AI low-code development is a new development method after waterfall development and agile development. It uses highly readable code and deep business understanding to realize rapid iteration of functions and achieve continuous success for customers .

 postscript 

      The most indispensable thing in the IT industry is concepts. Some of these concepts are short-lived, and some represent an era. AIGC and low code are undoubtedly hot concepts. I personally think that low-code is a rare good word in the field of software development for many years. Low is not just less, just like micro is not just small, it is a very state of affairs. It can be understood as code implementation under business logic, and it can also be understood It is the embodiment of stratification and division of labor. Low-code is fundamentally different from no-code and cannot be compared. One is for professional programmers, which is a new software engineering idea and development model; the other is for users, and the visual configuration method is an extension of mature software. In addition, AI, as the most dazzling technology today, will inevitably produce more different genres in the field of low-code development, so I will quote Wang Bo's "Preface to the Pavilion of King Teng":

Dare to be contemptuous, respectful and sparse, and short quotations; every word is equal, and the four rhymes are complete. Please sprinkle the Panjiang River, each pouring into the land and the sea.

Author article link:

The core of the AI ​​low-code development manifesto: the granularity of programming

The Process of AI Low Code Development Manifesto: Software Engineering

Code readability is the key to AI low-code development

AIGC-oriented development component system design

Even the most powerful programmers have these three pain points, but it does not

Compare from five dimensions: code, no code, low code, AI prompt code, AI low code

Is AI writing code for humans or is it writing code for itself?

Original | Author | Xue Dan, Doctor of National University of Defense Technology, senior programmer. All rights reserved, reprints must be contacted for authorization and indicate the source.

Guess you like

Origin blog.csdn.net/xuedan1086/article/details/130743768