laitimes

Do programmers really get lonely? Talk about how programmers are coping with the replacement of AI

author:Front end of the flame
Do programmers really get lonely? Talk about how programmers are coping with the replacement of AI

Conclusion: A programmer's skills can change dramatically under the pressure of AI.

With the popularity of personal computers, the industry has changed dramatically. In China, the first to be affected was interior design, where computer-aided renderings have been shortened from months to days. With CAD and 3D rendering engines, customers can suggest changes on the fly and get immediate results. As computers swept through industries, programmers began to rise to become the high-paid class.

In the context of the efficiency of the Internet to accelerate the flow of "information" of important means of production, cloud computing came into being. At that time, programmers completed a great migration, and the system service developers who used to be thriving in large factories were gradually purged to cloud service companies. Except for a small number of enterprises for the government or with special privatization needs, there are fewer and fewer people who do server system service development rather than application service development, and they are almost extinct.

From the digitization of personal computers to the informatization of the Internet, every technology migration and the replacement of old technology by new technologies have brought about the migration of its practitioners without exception. This time, AI technology will bring about the same migration. Although the current AI technology does not seem to be so mature, it is undeniable that the recognition and generation of text, images, audio, and video have initially crossed the gap that hinders them from moving towards the field of mass consumption: generative effects. Recently, I was swept up by Kuaishou's CreaN video generation model, and I was overwhelmed by the consistency, stability, and natural effect of its generation, and I couldn't help but sigh that the changes brought about by AI will quickly penetrate into all aspects of life like personal computers and the Internet.

When AI penetrates into the field of mass consumption, the era of apps with high walls in small courtyards will come to an end, and intent recognition will replace it as a new entrance. Just as the graphical interface, operating system, and application in the personal computer era have become the entrance, the browser, portal, and search engine in the Internet era have become the entrance, and the APP in the mobile Internet era has become the entrance, and the intent recognition in the AI era and the vertical field will become the new entrance, which is why Apple Intelligence emphasizes Intent.

As a programmer, when you work in an entry/upstream enterprise, your income, work pressure, and living conditions will be better than that of the downstream. The closer to the entrance and the upstream, the higher the profits of the firm, which is also the driving force behind the competition for capital and monopoly. Therefore, it is a top priority to accurately find places with high salaries and few jobs in the new trend of the AI era.

Of course, competition for good places will be fierce, so many people will be squeezed into the middle and lower reaches. The so-called middle and lower reaches of the AI era are enterprises that are doing AI applications, among which, those who can train (most likely and the entrance may be the same) or fine-tune the model to provide model capabilities belong to the "brain", and those who provide tools, APIs and supporting software projects belong to the "hands and feet", and how to choose is self-explanatory. Because of its high knowledge and value content, the "brain" provides programmers with better salary, benefits and development space than "hands and feet".

To sum up, as a programmer, in the AI era, you should work in enterprises in the field of user intent recognition (high AI concentration), AI understanding planning (AI concentration), and AI-assisted execution (low AI concentration). Therefore, programmers examine their own abilities and demands under the requirements of different AI concentrations according to their own learning ability and interest direction, and find the most suitable goal and path for themselves.

The ability to program for uncertainty in the field of user intent recognition (high concentration of AI).

In my previous book, "Intelligent UI and Front-end Intelligence", I mentioned "uncertainty-oriented programming" to deal with the identification problem of user scenarios. In fact, user intent recognition is composed of two parts: user and user scenario. The following is a rough analysis of these two parts.

First of all, "user" refers to the extraction of features from historical data, and then the writing program determines its "identity". In traditional software engineering, this requirement is usually achieved by programmers reporting historical data, algorithms cleaning logs and data analysis, modeling, feature engineering, designing algorithms and training evaluation models, programmers assisting algorithms in deploying models as services, and programmers exposing services to the application layer through APIs.

However, in the era of AI, large language models have been able to generate code with an accuracy rate of more than 80~90% on local and simple tasks. However, partial code is not equal to the overall software engineering, and programmers often have to decide various parameters and processes of the program according to the current situation and strategy of the enterprise, combined with factors such as cost and time limit.

Second, "user scenario" refers to the extraction of features using various contextual data generated by users on the network and device terminals, and then the writer determines "what is it going to do?" ”。 In traditional software engineering, the way to achieve this requirement is as follows: the product manager analyzes the characteristics of the scene for induction and abstraction, the designer analyzes the characteristics of the scene to design the visual presentation and interaction process, the programmer builds the GUI according to the scene characteristics and design documents, and the code logic is used in the process of user interaction through a series of "if... else" routes the user to a pre-defined scenario.

However, large language models in the AI era have been able to accurately determine what the current user scenario is based on user context data. For example, when the input context is the content of an email, the large language model can not only determine user scenarios such as "organizing emails and replying to emails" based on the content type, but also "make decisions on email matters, explain specific problems, and plan the work of the next month" based on the content of the email. The content type is fine, and it can be solved with a program supplemented by simple natural language processing techniques, but complex and uncertain contexts are difficult to deal with so simply.

When faced with the massive amount of context generated by users with the blessing of the Internet, local terminals, and various sensors, traditional programming to identify user scenarios pales in comparison. Users are constantly switching "identities" in different scenarios, for example: an expert or manager who plans work for the team is also a subordinate and team member of the company's decision-making level. In the era of AI, such needs will pervade the lives of programmers, and having the skills of "programming for uncertainty" will become an important way to meet these needs.

Difficulties in combining AI capabilities in the field of AI planning (AI concentration).

When I joined Alibaba in 2014, I was doing application publishing business in UC Browser, and there are a lot of marketing businesses in application publishing, and the essence of marketing is "novelty" to catch the attention of users, which is contrary to the modular construction system under the guidance of traditional software engineering theory, which greatly weakens the reusability of modules and increases R&D costs.

Since then, I have been exploring how to use intelligent methods to "reuse" in the opposite direction, hoping to solve the needs of front-end tiling and page writing with the help of algorithms. With the release of imgcook's ability to generate code for design drafts, this wish has almost come true, and I'm excited to be able to help tens of thousands of programmers solve some problems with the team. In this process, the core guiding ideology is to replace the use of AI for programmers to plan the use of HTML markup (layout), CSS attributes (style), components (block-level content), and logical points (business logic), so that the decision-making results of the planning meet the requirements of the design draft restoration.

There are two difficulties in the implementation of this core idea: letting go and combining.

The so-called "hands-off" refers to: how to transfer the logical part of the program's judgment to the algorithm model of AI? Advanced version: How to transfer the judgment in the programmer's head to the algorithm model of AI? Our approach is still the same: collect data, analyze data, model, design algorithms, train and evaluate, and deploy algorithmic model services. For example, the AI planning capability for component selection needs to organize various situations of components in historical code into datasets, and use statistical analysis to ensure that the frequency of components is in line with the real situation. Then, the algorithm model is designed by "modes" such as "user name input and user password input components will appear at the same time", "login and registration button components will appear at the same time and appear after the aforementioned components", and the model can "learn" these patterns through weight parameters through dataset input, so that the "correct judgment" can be predicted in the future to replace the conditional judgment hard-coded by the program.

The so-called "integration" refers to: how to integrate AI algorithm capabilities into the existing software engineering chain? In general, in order to call AI algorithm capabilities, you can provide model service APIs as described above, and the corresponding APIs can be called in the software engineering link. However, when a project needs to provide personalized UI interaction and business logic for different users and scenarios, the dynamic capabilities of layout, style, content, and business logic will be gradually pushed to the extreme. Extreme dynamics will inevitably increase the complexity of software engineering, and eventually the complexity will get out of control, and it will not be possible to judge the correct output with thousands of conditions. Therefore, it is imperative to embed AI algorithm model capabilities in business logic and code logic, which is why I introduce the "differentiable programming" technique in my book.

AI (AI)

Assuming that you want to provide an API to find non-logged in users, you can use data query capabilities to quickly implement and deliver them, and even think of returning the content that non-logged in users have browsed, so that the interface can generate product descriptions that guide users to register in a more targeted manner. At this time, programmers have gone beyond the technical field to touch products, user experience and other fields, subtly generating cross-domain capabilities and becoming compound talents, so as to obtain higher recognition and returns.

The same is true in the age of AI, where programmers are of limited value when they deliver only the ability to fetch web page content, execute SQL statements, and so on. Assuming that the programmer delivers the content of a web page and converts it into an XML or Markdown format that is easier for AI to understand, executes SQL statements and returns errors described in natural language, and conforms to the structure of prompt word engineering, the programmer has already imperceptibly generated capabilities across AI and its own technical fields in the fields of primary AI application and prompt word engineering, and has become a compound talent needed in the AI era. Today's big companies and lucrative jobs are looking forward to this kind of AI compound talent.

The difficulty of becoming an AI compound talent is to have a deep understanding of your own technical field, and at the same time, you must have a deep understanding of AI applications, and be able to re-examine and understand your own technical fields from the perspective of AI applications, so as to generate cross-domain and interdisciplinary technical value.

summary

Not to mention whether cross-disciplinary talents should think about the direction and goal of programmers' learning and growth from the context of the AI era. Even in a single technology field, driven by changing markets and evolving technologies, stopping learning can quickly fall behind. But it seems that some people can cope with these happily and easily, while many people are very hard but difficult to gain, the reason is that the key is that they have not found their true interests and the context of the times, which is why many people say: choice is greater than effort.

In the future, I will talk about my own growth and learning experience, on the one hand, it is a review and reflection on my past, and on the other hand, I hope to bring some inspiration to readers: less stepping on the pit I have stepped on.

Read on