[Book donation activity|The seventh issue of "Server Development: Technologies, Methods and Practical Solutions"]

I. Introduction

At present, rich and colorful Internet applications such as information, social networking, games, consumption, and travel have penetrated into all aspects of people's lives and work, and are profoundly changing the information age. With the growth of user scale and the increase of application complexity, the technical challenges faced by the server are becoming more and more severe. In leading Internet companies, the responsibilities of server development positions are no longer limited to simply arranging "addition, deletion, modification and query" services around the database, but require engineers to have business analysis, architecture design, code writing, technical research, teamwork, and system maintenance. and other comprehensive capabilities. In many cases, before the first line of code on the server is written, engineers have to deal with personnel such as products, operations, and legal affairs, and technical systems such as networks, middleware, operating systems, data, algorithms, operation and maintenance, and security.

2. In the era of AI, server development faces new challenges

On November 30, 2022, OpenAI released a chat robot program called ChatGPT, which immediately detonated the Internet and caused huge repercussions around the world. Immediately afterwards, various large language models have sprung up like mushrooms after rain. Abroad such as Google's Bard, Anthropic's Claude, domestic such as Baidu Wenxin Yiyan, Ali Tongyi Qianwen, Xunfei Xinghuo Cognitive Model, Kunlun Wanwei Tiangong Large Model, etc.

Compared with the previous model, the large model represented by ChatGPT has made a qualitative leap in code generation and code interpretation capabilities. Some qualified people have begun to use AI to write, optimize code and assist in problem solving. AI technology has greatly shortened the path to mastering knowledge. Some knowledge points that originally required reading many books and reading many columns can be quickly mastered with the help of AI tools. Some seemingly uncomplicated codes may take half an hour to write by yourself, but AI may only take one or two minutes to produce, and the quality is often higher. With the blessing of AI, some junior engineers with little programming experience can also "write" relatively excellent code.

Today, we should be soberly aware that the AI ​​era will definitely bring profound changes to the production and life of human society. Although the current large model still has many shortcomings, such as hallucinations and weak reasoning ability, its potential cannot be underestimated. In the age of AI, it is inevitable that simple and repetitive tasks will be replaced by AI. In the near future, AI is fully expected to replace some low-level (such as only CRUD) programmers. In view of this, in the new era, we need to re-examine the connotation of core competitiveness, continue to learn, and constantly consolidate our own ability moat.

insert image description here

3. Will server-side development be replaced by AI?

Large-scale software systems often have high complexity in themselves. We can simply divide complexity into two dimensions: business and technology. For systems with high business complexity, scientific and effective requirement analysis and domain modeling must be carried out to obtain a sustainable evolutionary application architecture while meeting current functional requirements; for distributed systems with high technical complexity, full Only by considering non-functional issues such as high concurrency, high availability, high performance, and data consistency can we seek the optimal solution for technical architecture in design trade-offs. Fortunately, AI is currently unable to cope with the above two types of complexity.

In addition, although the large model has the ability to generate code, interpret code and even optimize code, it still stays in the "function/method" dimension, and cannot generate code in the class dimension, module dimension, and project dimension well. At the same time, the generated code still needs human review, optimization, deployment, and verification. For complex tasks, it is also necessary to manually disassemble it into a granularity that the large model can "understand".

Furthermore, even if factors such as data security and self-developed model costs are not considered, just look at the server-side R&D process. Coding is only one part of the entire software life cycle. Software development also includes requirements analysis, abstract modeling, system design, data design, non-functional design, testing, operation and maintenance, etc. In many cases, it is not difficult to write code as the ultimate technical means to solve problems, but the difficulty lies in the identification, understanding, definition and abstraction of problems, which all rely on manual deduction. When a problem is clarified and dismantled into the dimensions of a software project, faced with definite tasks, clear goals, and a reasonable structure, there will be many people who can solve the problem, and AI will naturally come into play.

insert image description here

4. Systematize knowledge and build core competitiveness

For server development positions, it is fundamental and important to master a mainstream programming language and be familiar with commonly used middleware and databases, but it is far from core competitiveness. Only when knowledge forms a system can it be called the real core competitiveness.

So, what is included in the knowledge system of server-side development? From the perspective of the process of server-side development, which covers requirements analysis, abstract modeling, system design, data design, and non-functional design, we need to master relevant technologies and methods. From the perspective of the difficulties in server-side development in the Internet industry, we need to master corresponding solutions to problems such as high concurrency, high availability, high performance, caching, idempotence, and data consistency.

With such a huge knowledge system, how to learn efficiently? Imagine, why do you have a special understanding of the neighborhood where your home is located, and if you put yourself in a corner, you can slowly find out? The reason is that you have already formed an overall big picture of the surrounding area in your mind, and you know the key nodes clearly. If you are placed in an unfamiliar community, you may be confused. You don’t have any key nodes or the overall big picture, and you can fumble around. Even if you figure out the situation of every sewer manhole cover you see on the way, it’s meaningless. , You will forget after a few streets.

Going back to the questions raised above, the key to efficient learning and systematization of knowledge lies in: building an overall big picture at the macro level and in-depth understanding of key knowledge points. These key points are the skeleton and fulcrum of this field. Without a skeleton and fulcrum, it is naturally difficult to systematize, and without a macro picture, it is easy to go astray.

5. The industry's first systematic and panoramic interpretation of server-side development books

picture

The book "Server Development: Technology, Methods and Practical Solutions" is based on the high-quality internal training courses of Ali and Ant Group. Written by blogging experts. The book combines theory with practice, and expounds server-side development in a panoramic and systematic manner. The core content includes the following two parts.

Part 1: Technologies and Methods of Server-side Development

First introduce the responsibilities, technology stack, core process and advanced path of server development; then expand from five aspects: requirement analysis, abstract modeling, system design, data design and non-functional design, and explain server development in depth with cases It presents readers with a panorama of server-side development and helps readers quickly and systematically grasp the knowledge and methods of server-side development.

Part II: Solutions to typical server-side problems

For typical problems in server-side development practices such as high concurrency, high performance, high availability, caching, data consistency, idempotence, and seckill, the corresponding solutions and development specifications are given, and different solutions are analyzed in depth with cases advantages and disadvantages. In addition, it also summarizes industry cases and norms at the landing level such as interface design, log printing, exception handling, code writing, and code comments.

Readers

IT practitioners: server development engineers, client development engineers, product managers, test development engineers, etc.

College students: students majoring in computer, software, automation, electrical, communication, etc. who are interested in entering the IT industry.

picture

Lottery

  • Follow+Like+Favorite Articles

  • Leave a message in the comment area: learn the knowledge of the whole stack and find He Chongtian (follow and leave a message to enter the prize pool, and each person can leave a maximum of three messages)

  • Random draw on Sunday at 8pm

  • This time, 2~5 books will be given away [the more you read, the more you will give]
    500-1000 2 books
    1000-1500 3 books
    1500-2000 4 books
    2000+ 5 books

Guess you like

Origin blog.csdn.net/weixin_44816664/article/details/132490405