Try to keep it simple

Simplicity is the first principle of architecture design, it deserves our serious consideration

qryctree
5 min readJun 3, 2021

Simple definition

What is simplicity, simplicity refers to the shortest path to solve the problem. For example, if we start from point A to reach point B, the straight line is the shortest distance. The straight-line distance can be reached faster under the same means of transportation.

Complex definition

The definition of complexity is relative to simplicity. Complexity means solving the same problem, costing more, and not getting obvious benefits. For example, if we still start from point A to point B, we don’t take a straight line and take some detours (red route). Obviously, the road has become longer. Compared with a straight line, it takes more time. As shown below:

Simply consider feasibility

If the scenario of the problem changes, the simple solution may not solve the problem, and the simplest solution will become infeasible. The original relatively complicated solution will become the simplest solution at the moment. For example, if there is a landslide on the straight path between A and B in the above picture, the original road will be blocked. Then the original curve (red route) has become the easiest solution to get from point A to point B. When we consider the simplicity of the solution, we must consider the feasibility.

Simple to solve the real pain points of users

The plan is not only simple and feasible, but also to truly solve the pain points of users. This is the core thinking of our choice of plan. The same problem remains. If the user’s needs are not to get from point A to point B as soon as possible, but to travel from point A to point B, among the many possible routes from point A to point B, which one is suitable for the user?

At this time, it is necessary to analyze what the user really wants. For example, if the user wants to enjoy flowers, viewing flowers is the income. User time is limited, time is cost. Users have limited money, and money is the cost. If the user just wants to pass the time, then time may not be the main cost, or even a benefit.

According to specific scenarios, analyze the weight of users’ costs and benefits, and find the least cost path that meets user needs.

The relativity of user pain points

If users have limited money, they want to use as little money as possible to buy products with more features. The solution is to choose a cost-effective solution, such as Uniqlo’s idea, which are all basic models, allowing users to spend the least money and get the most important experience of the product.

Analysis: Money is a cost, and more and better functions are benefits.

If users are very rich and want to achieve the most perfect product experience, they don’t care how much money they pay. Then it is a luxury solution, willing to spend hundreds of times or even higher prices than normal products in order to enhance the experience.

Analysis: Money is not a cost, a perfect product is revenue, and the real cost is time.

The process of selecting technical solutions

When we choose technical solutions, we should try our best to achieve our goals through simple solutions. There is no difference in technology itself, and there is no omnipotent solution. Each solution has its suitable scenarios. The key is to identify the pain points in the current problem, find a solution that can solve the current pain points, and balance costs and benefits, as well as simple and complex trade-offs.

The first step: Identify the needs. It is necessary to simplify requirements as much as possible. Simplifying requirements is not to delete requirements, but to find the real needs of users. More functions are not better, more functions may be less useful for customers.

Step 2: Find a list of feasible solutions. Make a list of all the options, don’t even care if they are feasible.

The third step: screening and removing infeasible solutions. Pay attention to solutions that are not feasible today, and may become feasible in the future.

Step 4: Select the best feasible solution. 1. Weigh the costs and benefits of the program. 2. Weigh the complexity of the plan. Complex plans mean risks and potential costs (such as maintenance costs).

Examples of pick-up scenarios

For example, I often pick up my wife from get off work. It turns out that every time we temporarily communicated the pick-up location, and then looked for each other, it turned out that we couldn’t find each other at all. The reason is that they know each other differently: one person knows the correct name of the road, another person remembers the name of the road incorrectly; one person can tell the direction, the other person uses the wrong direction; one person is talking about the bridge, the other People think it is a bridge on another road. No matter how precise one party’s expression is, the other party still cannot be found, and the two people are not describing the same concept. Therefore, this scheme is complicated, and there is no way to make a consistent agreement on the concepts that may be used in the description in advance, which brings huge potential communication risks.

Improvement: Together with my wife, I chose a location that is relatively easy to pick up, and tell my wife to pick you up here in the future. When picking up my wife in the future, I just need to say, see you at the old place, and I promise you won’t pick up wrong. Although the selected location is not necessarily the best choice every time, it avoids the huge risk of communication, and it is simple and worry-free every time.

The principle of this simplified scheme is actually “agreement is greater than configuration.” You don’t need to make an agreement every time, you just have to abide by the agreement set in advance. In program design, “Convention is greater than configuration” is often used, such as the source code directory structure of the program. It is agreed that src is the source code of the main program, and test is the source code of the test program. You don’t need to tell the compiler when compiling. Execute the test cases in the test directory as agreed, and compile the source code under src into an executable program.

to sum up

Under the premise of achieving the same effect, the simpler the method, the better. In this way, our design solution can not only solve the user’s pain points, but also introduce the minimum cost or complexity.

--

--