"What I have done is not complicated enough, but what should I do?" Such a sigh may be what some of the front-end students of Dachang will hear someday in their work. Because here, countless people will ask you: "What did you do inside to make this thing happen?" "What is the difference between what you did and what he did?" and so on. Everyone wants to do awesome things, it's a blockbuster, but there are so many awesome things, how come I can't do awesome things, it sounds like a newcomer from a small third-tier factory can deal with it freely.
So, how do we "dig deeper" in this complexity? Pay attention to why the verb dig is used here, because the complexity is actually buried under our own stereotypes. Let us look at it layer by layer below.
Don't think complexity is complicated
In fact, when discussing this issue, we must first determine the complexity of this so-called business, and what complexity are we talking about. In this regard, the previous article of the teammates has made the following summary, which covers the complexity of the matter more comprehensively:
- describes how difficult this matter is. : The complexity of the business context in which the matter is located.
- How difficult is it to produce this : The complexity of the interests of all parties involved, business boundaries, and productivity relationships.
- How difficult is it to achieve this? : The specific realization of the thing, the complexity of the technical challenges faced.
- How difficult it is to prove that things are correct : The complexity of measuring the value of things in detail.
I know that the complexity that students often talk about may be the third, how difficult it is to implement. A lot of front-end classmates have to go up and down at this point like magic. I still remember that for a few years, every team wanted to build their own large and complete framework. Although it was also related to the background of the time, it was more or less. It's still a bit too "drilled".
So although the technical realization itself is the foundation of life, before discussing this point, we should first jump out and see if there are problems and pain points in the other dimensions, and whether there is complexity that needs to be solved. This is what we need as the Owner. Things to see.
So how to judge whether there is complexity in a certain dimension, the first step is to be able to clarify the status quo, whether it is to clarify the business concept and business logic, the cooperation method and the cooperation boundary, or the architecture model, etc., have a clear A sense of the overall situation can help us better analyze. The second step is to define the pain points. Whether it is from any perspective of ourselves/partners/users, we can actively find the pain points, filter according to the pain points, which are the key issues, and discover the complexity from the problem itself. After all, our essential responsibility as engineers is to analyze problems, select technologies that meet the problem scenarios, and perform combination adjustments to solve problems. No matter which engineering field it is, it is the same.
Complexity comes from change
Finding the complexity from the problem is the focus of the next step. When it comes to complexity, what do you think of first? The first thing I think of is the complexity of the algorithm. The essence of the complexity of an algorithm is to measure the resource consumption of an algorithm. It starts from the two costs of time and space to evaluate the cost of an algorithm. The evaluation method of this indicator is also very interesting. It is not simply to directly measure the total consumption of time itself, but to measure its growth trend as the size of the processed data set changes.
From the way of measuring algorithm complexity, we can get a very interesting enlightenment. When you always pay attention to the problem in a small scene, it is very difficult for you to evaluate the complexity. When you put the problem in certain dimensions When zooming in, such as the size of the input data set in the algorithm, you can grasp the main contradiction more clearly.
To sum up, in our daily work, we can expand the dimensions of thinking:
- Time dimension: See if there are some problems that will be enlarged and complicated with future business development or continuous iteration of the system
- Link dimension: If the business currently being processed is a part of the entire link, you can jump out to see if there is a problem with the upper and lower boundaries or if it is fuzzy, or how the link can be adjusted to better solve the problem. Don't always carve flowers on the shit hill, do not break or stand, do not hold a hammer to see that everything is a nail.
- Scale dimension: With the increase in user volume and business volume, whether there are any problems that continue to be magnified. For example, let's solve the problem of 1+1 processing N times a day. If our job is to do 10 1+1 calculations a day, it may really be less complicated.
- Horizontal dimension: Of course, in this scenario, we can see if there are other people who will also do this to increase what we call the scale of growth. That is, the horizontal dimension. See if similar problems exist in other businesses, and can you use the same solution to solve similar problems in multiple businesses.
These are all ways to help us discover complexity. So complexity comes from solving uncertain changes in the future. A problem is often complicated because we hope that our solution will still be able to solve such problems in the future.
Invest in the future
A classmate once asked a question: “Many things can be achieved simply by doing business goals, but the technical depth is not reflected, and the growth of the teammates is limited. A better solution means more investment, which is more stressful in the business. Under circumstances, all parties will challenge your plan. How to choose?"
This is actually a relatively common problem, "This thing can be simpler, don't make it so complicated". Whenever we make a plan according to the above complexity analysis mentality, some people will always jump out and say these words. , Complaining that we did not consider ROI Yunyun. First of all, if the leader said this to you, you can say "SB" silently in your heart, hahaha. Of course, we still need to analyze carefully whether the other party is justified.
First of all, we must reconfirm whether our plan is used to solve the pain points that we have defined, and whether the complexity of the plan is based on the conclusions drawn from the several dimensions we mentioned above. If these two points are not satisfied, please reflect on yourself first. If you still think it is correct, then the next step is to focus on the basis and thinking of the derivation to see if there are some misjudgments in it.
After these steps, we can at least confirm that the plan itself is reasonable. In addition to whether the complexity of the plan itself is reasonable, there is also a question of "timing". Sometimes you find scale factors and cost points, but in some cases, there will be no growth in a long period of time. At this time, you make a plan too early. On the one hand, you may be abandoned due to business changes, and on the other It may not be able to see the effect. Just like the 1+1 operation, if it is executed once and executed 10 times, there is no difference for modern CPUs.
The issue of timing itself involves "foresight." Sometimes we advance our investment in the future to the present, thereby reducing the overall investment in the entire timeline. We can first try to communicate this consideration with our partners to see if we can reach a consensus. If the other party is short-sighted (you can consider not cooperating and need to focus on TL), or has a hard time indicator, then we need to see if we can get more resources. On the one hand, you can take the initiative to invest more to help yourself grow, on the other hand, you can communicate with TL to see if this thing is more valuable in the team, and invest more students to complete it together.
It's like all roads lead to Rome. Today you can make a small road with your own feet, but it may be overgrown with weeds in a few days and you need to create a new path; you can also call on everyone to build a broad road for the benefit of the world. As long as you firmly believe that Rome will always be Rome.
Author: ES2049 / armslave00
The article can be reprinted at will, but please keep this link to the original text.
You are very welcome to join ES2049 Studio if you are passionate. Please send your resume to caijun.hcj@alibaba-inc.com.
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。