Does the technical solution design have no depth? Try this methodology

I usually hear some students say that the technical solution has no depth, and it is difficult to tell. How to reflect the depth of the technical solution design is a problem that everyone is generally concerned about. This problem is not an isolated problem, so I share some of my views and opinions. Mainly speaking from three parts:

  • The first part mainly analyzes why the technical solution does not reflect the depth, and solves the problem after finding the problem, and proposes the breadth and depth characteristics of the technical solution;
  • The second part is the methodology of technical solution design, which mainly includes four methodology methods: essentialism, contradiction theory, system theory, and evolution theory, forming a closed-loop feedback link;
  • The third part is through specific cases, repeatedly using the methodology of the second part to explain how to apply it in the case of examples, and deepen the understanding of the methodology.

A technical solution reflects breadth and depth

1 Common feedback from the scheme design

We all hope that the technical solutions designed by ourselves can make people's eyes shine, breathtaking, and astounding... However, in actual situations, this is not the case. We often hear the following statements:

  • The scenario is simple: the business scenario is very simple, and there is no way to design flowers;
  • Low complexity: The business complexity is low, and it is difficult to speak out the challenges;
  • Few bright spots: Few technical bright spots are used, which are basically done by existing middleware or frameworks;
  • Ordinary design: The scheme lacks novelty, and the industry does the same, and it does not reflect its design ability;
  • ……

Indeed, the above are scenes that are often encountered, so you need to think about the problems and reasons behind them, why you have such feelings, if this matter is left to another person, why can he design a better method, But you didn't expect it at the time.

2 Reasons

I personally feel that the core point of this problem is to discuss the matter, because just to see this matter, we need to complete a specific function point, without jumping out of the appearance of this matter, to think about what it is, what problem it solves, and what its value is. What? Thinking like this is very likely your current solution is only one of the small points, not thinking about the problem from the overall perspective. My teacher once gave me a point of view. Put the palm in front of your eyes and you can only see this palm. If you put the palm in the distance, your field of vision will be wider. Therefore, the field of vision is more important. Don’t just focus on things. In itself, you can jump out and take a look, or you can think of more.

Discussing the matter is just a representation, and there are deep reasons behind it. I personally feel that it lacks a systematic way of thinking about the problem. "I only see the trees but not the forest." I don’t think about the problem from different dimensions. It just thinks linearly, which is a direct manifestation. It's just to talk about things and just finish the things at hand. There are many books on systematic thinking. If you are interested, you can learn about it and help yourself to think better.

It’s not over yet. Another important reason is the lack of methodological guidance, that is, they have not formed their own set of methods to think about and solve problems. Different people have different methods. This is just to share some of their opinions. Different people will have their own methods. With the guidance of methodology, to get a problem, know how to analyze, think, and solve it is far better than just passively accepting a specific plan. The next time the scene changes , It is very likely that the existing solutions cannot be supported, so you need to establish a methodology that suits you. Specifically, you will share your methodology in the second part.

3 Technical breadth and depth

Breadth and depth are not unfamiliar to us. Everyone knows to reflect breadth and depth, but they don't know how to do it. Breadth feels that to analyze from the two dimensions of quantity and type (there should be other dimensions, everyone can add it by yourself) is to enrich things. For example, there are different animals in the zoo, and there are more types, which can more satisfy different people. The depth mainly reflects the identification of problems and innovative solutions. A problem is not discovered by everyone, but you have discovered it. This is a depth. For example, online shopping, standing today, it is not normal, but in Twenty years ago, not everyone could think of it. Today, we are also doing e-commerce. Each company's play style and strategy are different. This is reflected in the depth and cultivating in a certain field.

Here is my own experience to illustrate that in the previous company doing coupon business (marketing was relatively simple at the time, it was a single coupon business), coupons were just a specific means of marketing. There are cards, coupons, points, and gold in the industry, then As far as technology is concerned, it is to enrich the basic marketing capabilities. The development from a single coupon capability to the standard marketing capabilities of cards, coupons, points, and gold represents the breadth and enrichment in terms of quantity and type. But how to reflect the depth? An important issue in marketing is how to prevent and control capital loss. Once there is capital loss, the problem will be bigger. Therefore, it is necessary to think and design the plan. At the time, the stability plan was used for reference and divided into pre-event, in-process, and There are three subsequent stages to prevent and control asset losses. Each stage contains different solutions. The depth mainly reflects the identification of the problem and how to solve it in an innovative way. The focus is on innovation. excellent.

4 How to prove that the technical solution is good

When you share and exchange technical solutions with others, some people will ask sharp questions. Why do you say that your technical solutions are good? In fact, this question is a very good question, and it is worth thinking about.

It is common that when you talk about a technical solution, you give the technical solution directly after the background and goal are described. In fact, the technical solution itself is not important. What is important is how you think. The thinking process is very important. The emphasis is WHY, HOW is very important, but WHY is more important. There are two principles here:

  • Syllogism: big advance, small advance, conclusion. You must talk about the big advance first. It is a powerful support. For example, when writing an argumentative essay, you usually write "Lu Xun said xxxxx". This is the big advance. For the design of technical solutions, it depends on the industry's solutions. Where the benchmark is, what is different from it, and what is innovative at a glance, often people ignore this big advance and directly talk about your own plan. How can you prove that yours is good? Without comparison, there is no feeling.
  • Environmental theory: Sometimes there is no specific plan in the industry, or your company is not suitable for the best in the industry at the moment, such as "Socialism with Chinese Characteristics", which emphasizes the current environment and combines specific business scenarios to weigh and consider , It’s not that the best solution in the industry is right for you. The design of the solution must be balanced and selected to design the solution that is most suitable for the current environment.

The breadth and depth of technical solution design

2. Methodology of technical scheme design

1 What is the methodology?

Some people often talk about methodology, and methodology also makes people feel rather mysterious. It feels like a vain thing. The explanation of methodology in encyclopedia is that methodology is a theory about how people understand and transform the world. After reading this definition, everyone still doesn’t I know exactly what it is. I only know that it’s pretty powerful, but I don’t know what the methodology is, what methodology there are, and how to apply the methodology, so I will talk about my own understanding here.

My own understanding of methodology is that methodology is a way to make a method more methodical. Methodology is split into two words: method and theory. Therefore, it is first of all a method. The method is to solve specific problems, such as the well-known stability. Construction, full-link stress testing, abnormal monitoring, etc. are all specific methods, but these methods are scattered points, not the best method. The methodology emphasizes good methods; then look at "theory", Discussion is a process of discussion, analysis, and thinking. Its greatest advantage is to make the method better, or in terms of stability building. Now there is a mature methodology, which is divided into three stages: pre-event, during-event, and post-event. The pre-event includes capacity assessment, Full-link stress testing, strong and weak dependence.... In this way, it is more systematic. Dividing it into pre-event, during-event, and post-event, covers the entire process, and you basically can't pick out any problems. Therefore, methodology is the further sublimation and refinement of solutions to form a more universal and systematic method. It is not an illusory thing.

Methodology is summed up through incomplete induction. Methodology is not a panacea. For example, the swans you see are all white. If a black swan appears one day, it means that the induction at that time is not complete.

2 Technical scheme design methodology

The methodologies mentioned below all exist, and I have just combined and used these methodologies. Here is a summary of some of the methodologies that I have used in my work that have benefited more:

Essentialism

Essentialism is the first methodology I benefited from. Essentialism emphasizes looking at the essence through the phenomenon. This sentence sounds simple, but it is very difficult to achieve it. Seeing through the essence is crucial, allowing you to truly control the core of things. One of my own methods is to use no more than 15 words to summarize the essence of things, because the essence is simple, beautiful, and straightforward. Therefore, a criterion for judging whether the essence of a thing is grasped is whether or not the main point of the thing can be summarized in simple words. For example, high concurrency is no longer a new vocabulary now. Even college students know how to do it. Caching, asynchronous operation, parallelism...These are all specific measures. Ask what high concurrency is, everyone can answer some. For example, high traffic, high system pressure, many users...These are all specific characteristics. I can summarize high concurrency in one sentence: limited resources can respond to a large number of requests, summarize the fundamental characteristics of high concurrency, and capture the essential things. It’s more problem-solving. When I brought a freshman, I mentioned a point of view. After working for three years, I must be able to say 10 sentences to understand the nature of technology, set my goals in advance, and accumulate some thoughts and thoughts in daily life. precipitation.

Contradiction

The theory of contradiction reveals the contradiction between things. Contradiction is the driving force for the continuous development of things. Generally speaking, some contradictions can be seen in the nature of things. For example, the essence of high concurrency above is that limited resources can respond to a large number of requests. A large number itself is a pair of contradictions. When a contradiction is found, the contradiction must be resolved. One way to solve the contradiction is to balance the contradiction. When the contradiction is resolved, the problem will be solved naturally. The scene is not a problem for you.

System Theory

System theory starts from the various elements of the system and thinks about problems in multiple dimensions. The simplest way is to think about problems from both sides of the contradiction. For example, with limited resources, can the number of resources increase? Can we improve the processing power of resources? ……, thinking from these directions, the thinking is suddenly opened. The so-called caching and other commonly said methods are only specific solutions. We need more three-dimensional and multi-dimensional solutions, combined with specific scenarios and current situation combinations. Some solutions.

Evolution theory

The theory of evolution emphasizes that things evolve, and they are in line with the law of development of things and people’s understanding. It is possible that we think very well, and it is impossible to wait for everything to be done before going online. We have to solve them in a planned and staged manner. Problems, give priority to solving the main contradictions and core demands. It is also possible that after a period of time, the main contradiction of things has changed, and our plan has to be designed in an evolutionary manner.

Design methodology of technical scheme design

Three technical scheme design cases

Here are three specific cases to explain how to apply the methodology to the actual technical design, so that everyone can feel the true effect of the methodology, and it is no longer a virtual feeling.

1 High concurrency technical solution

High concurrency was very popular before, and everyone can also say some solutions, such as using caching, MQ, parallelism... Let’s talk about some of your own ideas.

Problem definition

The essence of high concurrency is limited resources to respond to a large number of requests. Its core problem is that the current situation is insufficient to support such a large number of requests. The system load is too high. It is very likely that the website cannot be opened and users cannot place orders.

problem analysis

The contradiction of high concurrency is limited resources to a large number of requests. Solving this contradiction will solve the problem of high concurrency. The next step is to balance these contradictions. Generally, the idea of ​​"neutralization" is adopted, just like Chinese medicine treats diseases, cold medicine is used for cold diseases, and cold medicine is used for fever. Therefore, it will think from the two dimensions of resources and requests. , Can the resources become more, the common ones are horizontal expansion, can the resources become stronger, the most common is performance optimization, performance optimization will be divided into front-end optimization, network optimization, computing optimization, storage optimization, program optimization..., request Can it be reduced, for example, by answering wrong peaks, merging requests, etc., so that the idea of ​​solving problems is suddenly opened.

The solution is important, but the design process is more important. Once you know what the problem is and how to analyze it, the solution comes out naturally, and the focus is on the analysis process.

Technical solution design case 1

2 Asynchronous processing technology scheme

Speaking of asynchronous processing, the easiest solution everyone can think of is MQ. MQ is a common technical solution. As shown in the figure below, I encountered a problem: the loan-side system sends the target information to the lender-side system. There are about 4000 transactions per day. There are occasionally a few overtime every day, which affects the loan. How to solve this problem, using MQ is the easiest to think of. At that time, the company hadn't used MQ middleware, and it was unrealistic to build one. What should I do?

Problem definition

The existing system capabilities cannot support real-time processing. Synchronous calls put a lot of pressure on the system. It is very likely that the load on the system at a certain point in time is relatively large, and the interface calls will time out if the processing is slow.

problem analysis

Drawing on the design principles of MQ, the sender sends the message to the Broker first, and the consumer pulls the message from the Broker for consumption. The essence of asynchronous processing is abstracted out as data temporary storage + selective processing. Then the problem is here, where is the data temporarily stored? ,RAM? file? database? ……, the choice of processing method is pull or push, timing or random....... Thinking in this way, I found that there are many other solutions besides MQ. After summarizing a general solution, it can be deduced in different specific environments. Different scenarios. The solution designed at that time was to store the data on the ftp server, and the implementation was relatively simple. The solution was not the best, only suitable or not. Isn't the company without MQ middleware, this matter can't be solved.

Technical solution design case 2

3 Scalability technical solutions

Scalability design is a very typical scenario now. The scenario encountered at the time was a real-time crowd computing scenario. Whenever the business side raised a demand, it was necessary to conduct a data calibration, and then get familiar with some of the business side of the business. The next step is Write Flink tasks, test, verify, and finally go online. The whole process has been down for at least 2 weeks, and a simple requirement needs to be raised. I wonder why it takes 2 weeks to go online.

Problem definition: The business side wants to go online quickly but the actual development takes 2 weeks. The main reason is that they don’t understand the business and need to have a familiar stage. This stage takes a lot of time and the real development time is not much. How to solve this The problem is.

Problem analysis: Although the main contradiction has been found, the obvious direction is to involve the development of the business side. The platform only plays a role of support and answering questions. However, let the business side students come in, there is a challenge, and others have not learned After Flink, you let him develop it, is the business willing? To further abstract the entire business, we find that our demand scenarios are changing, and the real-time indicators are also changing, but the entire process is unchanged. It is represented by y = f(x), which means that an x ​​is calculated and transformed into The result is y, so I sorted out what is changing and what is unchanged at that time. To find the constant from the change, there is still a need for an ability to abstract layering. If f() is only regarded as At the first level, there is only one abstraction layer. If there are compound functions in it, there are multiple abstraction layers. This depends on the thinking of the problem. Different people design different abstraction layers. At that time, I borrowed some of Flink’s design ideas and productized the entire process. The business side only needs to select and check some information, and Flink SQL will be automatically generated, and then click to run. SQL is relatively simple for everyone to get started. Basically It is not too difficult to understand. The platform does not need to fully invest in manpower to learn business knowledge, develop, and test online as before.

Technical solution design case 3

Four summary

This book will share some thoughts on the design of the technical scheme. The entire methodology includes essence theory, contradiction theory, system theory, and evolution theory. Three specific cases are used to illustrate how to use methodology.

Original link

This article is the original content of Alibaba Cloud and may not be reproduced without permission.

Guess you like

Origin blog.csdn.net/weixin_43970890/article/details/113881848