Start with an interview question

On the topic of growth and thinking, let’s start with a common interview question, “What is the principle of two-way binding of VUE?” .

Many blogs and blogs on the Internet offer a more “standard” answer:

Vue. js adopts data hijacking combined with publiser-subscriber mode. It hijacks the setter and getter of each attribute through Object.defineProperty() to publish messages to subscribers when data changes and trigger corresponding listening callback.

This was the answer given by most of the students in the interview, but there were also some students who were good enough to explain the whole data-driven view process in great detail.

But no matter how good and detailed you are, you’ll only get half a mark at best. Why is that? Because the question is a two-way binding principle, a little thought should tell you that the question should be answered in two ways:

  1. How do Model changes drive View updates
  2. How to update the data after the View is updated.

The above answer, which only answers the process of Model change driving View update, is incomplete.

Why does the answer to such an obvious question come up so often? The main reason is that many students lack of thinking. When they encounter problems, they directly search on Baidu or Gogole, or ask others directly, lacking their own thinking process.

What are the signs of a lack of thinking

The same demand, some people, may get the demand directly to think of ways to achieve. Others will first consider whether the requirement is necessary, whether the interaction is reasonable, whether there is a better way to accomplish the same purpose at a lower cost, and then talk to the product manager.

Some people, when they’re developing, just finish the task. Others, on the other hand, can encapsulate a few common components, put together a common approach, or even put together a scaffolding for their business.

In addition, there are many examples of lack of thinking, such as:

  1. Implement a feature, as long as it can be implemented, regardless of whether there is a more elegant solution.
  2. Only complete the requirements, the requirements change slightly, the code can not directly support.
  3. Can only solve a problem, rather than trying to solve this kind of problem.
  4. Daily C+V method, regardless of whether it should be packaged as a generic method or component.
  5. Are there things that can be done with tools instead of people?
  6. Only know to complete the task, but not to find problems, problems do not go to review.
  7. When asked about their plans for the second half of the year or next month, they do not know

The above can also be used as a yardstick to distinguish junior engineers from senior engineers. But it’s not just senior engineers who need to think.

A person who is good at thinking and summarizing may work for two or three years and become a senior engineer, while some may work for seven or eight years and still remain in the same place. Therefore, not all the growth in time can bring the growth in experience and ability.

We are not workers on the assembly line, can not be to write code “machine” or “coder”, but should be an independent thinking and problem-solving ability of “engineers”.

Can’t think of things to do

Before, a student on wechat added me to talk about growing up. He also knew that thinking more would be helpful for growing up, but he was very upset that he just did not think as much as others, the code design was not reasonable enough, and others always talked about themselves but did not know what to say at meetings.

When we have fewer things in mind, it is really difficult to realize the problems in technical design or have any good ideas. At this time, we can improve ourselves through the following ways.

Learn from the best

Read good people’s code and see how they designed it and how you did it. Talk to the person you think you’re talking to, and a lot of your confusion will be solved.

A better way is to ask questions from excellent people. Of course, this problem must be understood after deep thinking, but there are still some confusion. When asking questions, the most important thing is not to focus on the conclusion itself, but to see how the other person is thinking. This is why when someone asks me a question, I don’t try to help him solve it, but to offer a solution. It is better to teach a man how to fish than to give him a fish.

Here also talk about a simple choice of large companies or small companies, large companies are more mature technology, can understand more things, there will be a lot of big cattle around, can be convenient to learn from them, the norms, the process is more perfect. Small companies, with nothing perfect, can provide a wider space to do more things on their own.

When their technology and experience have not reached a certain level, as far as possible, or go to a big company, big companies will make you understand that what is standard practice, technology atmosphere also will be better, have more to share, someone will review your code, a more mature technology architecture, have mature promotion mechanism, and some will together with you to discuss your subsequent planning, And the opportunity to be involved in the infrastructure of the team. On the other hand, if you start in a small company, you may only focus on fulfilling the business requirements every day and keep doing so, and you may not even realize that you are doing poorly.

When I have a certain ability, it is up to me to choose whether TO work for a large company or a small company. Small companies will have the maximum space to play, and can do more things that I want to do, and bloom their own light and heat.

If you don’t have great people around you and don’t have a great technical atmosphere, there are ways to learn from great people. First of all, you can go to Github to see the source code of excellent open source projects. Good code is the best teacher, especially when you don’t know how to design better when developing yourself. You can Get a lot of good design ideas and ideas from these projects. Secondly, through various platforms, we can get to know some technical talents, learn from them and discuss problems.

Insist on summary output

Another way to force yourself to think is to force yourself to summarize output.

For example, if you learn something, you must practice it in the project. If you can’t practice it, you can produce a share or an article.

When we are learning some knowledge, we can understand it as an input process, and only when we summarize these inputs through our own thinking and produce our own things, it can be regarded as turning what we have learned into our own things. Both output sharing and output articles can help us have a deeper cognition and thinking.

Take reading VUE source code as an example, if reading at the same time to summarize the output, you can in the work or interview to arrange their own thinking things talk about, and even can say where the implementation is not elegant, what better way you have.

conclusion

Not only technology requires us to think, but also how to communicate and coordinate work. Even life and financial management also need us to think and summarize.

Think often, tomorrow will be better!

The above are some of my personal opinions, if there is any inappropriate, please point out, also welcome to add my personal wechat yu_shihu_ to communicate, or scan the following TWO-DIMENSIONAL code to follow my public account “front-end xiaoyuan”.