Current location - Recipe Complete Network - Complete cookbook of home-style dishes - How to quickly judge the ability of a front-end engineer?
How to quickly judge the ability of a front-end engineer?
There is a serious study in academic circles to examine people's technical level. See: Dreyfus model explanation.

Dreyfus model divides people's skill level into five levels: novice, advanced novice, competent, proficient and expert.

The identification of different skill levels is like this:

Novice: When reading the instruction list, you must take it step by step. It is necessary to give detailed and specific operating rules to be effective. For example, if you cook a dish that has never been cooked before, you need to read the menu instructions, how to do it in the first step, how to do it in the second step, and so on. Until the cooking is over.

Senior novice: limited situational insight, equal treatment of all aspects of work. I'm not interested in holistic and systematic things. This is the level of coolies. For example, he can do some work with the master and help others. You can solve specific small problems by repeatedly searching search engines and StackOverflow.

Competency: able to solve various problems in the field independently. This is a general enterprise recruitment, and I hope to recruit to the level. If you are recruiting, you will be able to do the job with a little adaptation, which will save you worry and effort.

Proficient: experienced, self-correcting, self-improving. People at this level can think inward and improve their skills through reflection and feedback. This kind of enterprise can be regarded as a master and master, and it is not easy to cultivate.

Expert: Work by instinct, without explanation or reason. In fact, if you ask him to explain, he may not be able to tell you why, but intuition gives the answer, and he is still right. The number of experts is scarce, which requires long-term training and practice. The usual saying is 10 experts come out, 10000 hours law.

This is theoretical study, which lacks maneuverability in practice, and it is difficult to quickly judge the actual situation of candidates. I don't believe that you open a lot of resumes. Every skill noun of the newly graduated students is covered with a bunch of "proficiency"-do you believe it? But it can be used as a reference standard to judge the level of vocational skills.

As a result, various enterprises have started various "written tests" and "computer tests", and many rounds of interviews have strict requirements on academic qualifications and college background, in an attempt to filter out unsatisfactory candidates and leave qualified candidates. Of course, it is feasible, but the effect is average, it is easy to make mistakes and miss people with ideas and skills. Otherwise, it will not lead to various "recommended" recruitment.

Paying attention to academic qualifications and schools certainly has its advantages: it is a means of rapid filtering. After all, the IQ of people who can get into a good school will not be too bad. However, a friend in a big digital company said that there are people who have been studying the security field since they graduated from junior high school, and their technical ability is also excellent. If the backstage processing is harsh, these people will miss it. Because people's lives are diverse, there are various historical background factors that affect their experiences. Some people have different experiences from others, but it doesn't prevent them from becoming excellent. Recruitment, in fact, is to build a trust relationship. If there is enough information to prove that the applicant is excellent enough, that is enough. Rules and regulations are only an aid, not an end.

Recommended recruitment is actually much more reliable, because it is easy to let people know the level of familiar people. This is endorsed by the credit of the recommender. What people usually say in communication, what books they read every day, what fields they pay attention to, what problems they have thought about and what they are familiar with, this acquaintance who often chats often knows. However, this kind of recruitment has great limitations: the scope is narrow and it depends on opportunities. How many good players can you recruit by recommendation? Good players are often the object of competition, with limited window period and basically no shortage of work.

Having said that, we still need a more efficient way to judge the skill level and recruit the right people.

Back to the Dreyfus model at the beginning, since people's skills are graded, we should also focus on different perspectives when dealing with different job requirements. If the recruitment process is the same, it is easy to make mistakes. For example, you are looking for a "master's degree", but it is not appropriate to let people have a bunch of written and computer exams as soon as they come up. The other party will be very annoyed. It is not "string algorithm" that embodies advanced technical ability. On the contrary, people who have just graduated take advantage because they have only studied for a short time and are deeply impressed. I don't believe that you let people who have worked for 10 years compare with fresh graduates majoring in computer science to write sorting algorithms, which really may not win. But it doesn't matter-doesn't it work without reading the manual and checking the documents? Smart people never learn by rote. The important place lies in the accurate and profound understanding of the problem domain, the evaluation and grasp of the advantages and disadvantages of various technologies and the balance of various conditions.

When dealing with novices, the key point is whether the basic skills are solid and the professional achievements are excellent. More importantly, his enthusiasm for his career, learning ability and research spirit. Some people want to talk about technology. They are full of enthusiasm and enthusiasm, and are very curious about unknown and new concepts and technologies. It's hard for such people to think the worst. Because he is self-driven, he can learn and make progress without urging. On the contrary, people who think that this profession is well paid and just want to make a living rarely go far. Most of these beginners are graduates and people with less working years. Testing and assessment, you can check whether the understanding of basic concepts is accurate and the approximate scope of knowledge field through written examination. Even, arrange a challenging task and let him try to solve it and explain his ideas.

The strategies for investigating competent people and proficient people are different. It's useless to do the questions in the written test, for the reasons mentioned earlier. This kind of recruitment is the highlight, the company likes to find and can work. So there are many places for assessment. I think it can be divided into several aspects. Whether the consciousness is advanced or not, whether it will reflect on thinking; Whether he is good at solving problems and creative; Whether there is deep accumulation and extensive knowledge.

The development ideas of the industry are also constantly changing, and the tool chain is also constantly innovating. Smart people don't need brute force, like to use tools to improve efficiency, and like to automate operations to liberate manpower. It depends on what development tool chain you use and what development environment you use. Explain why? Good developers will pay attention to emerging tools in time, understand what problems it can solve, and try to absorb and solve their own needs. Without this idea, work efficiency will be reduced. Because you will fall behind the development level of the industry. People who are good at self-reflection will urge themselves to correct themselves, which is the characteristic of proficient people. Reference: Why do excellent developers learn new programming languages?

The ability to solve problems is the highlight, and it is also the main reason for enterprises to recruit personnel. People should be good at solving practical problems and learn to solve problems intelligently. Solving problems depends on thinking, means and creativity, which is the real test of human ability. A good developer will consider many possible options, estimate the pros and cons, and give a better solution. When encountering difficulties, they will try in various ways. Experienced people often use a combination of technologies to solve difficult problems instead of using a language and a tool everywhere. Therefore, it is necessary to check the problems and difficulties encountered in the past project experience, how to solve them, and how to think. It is said that some companies don't hire engineers who can't use Google. Google can't open it? Hey, hey, this is the difficulty you have to overcome. If this can't be solved, what research and development will you do? Google is the most comprehensive and up-to-date general index of human knowledge, making full use of it with half the effort.

Investigate the depth and breadth of knowledge, whether you have a deep understanding and mastery of the concepts in important fields, and the cognition gained from various work experiences. Ask him what books he has read and what he has studied. To put it bluntly, do you know much? Some companies like to use the list model to assess, list a bunch of knowledge points and concepts in the field, and ask people if they understand, knowing is good, and not knowing is bad. That was not the case. People's working process is independent. If there is no job opportunity to contact and solve some things, then some rare problems will never be encountered. Of course I don't know. But can you say that if you haven't done it, you must not have done it well?

In addition, people's skill tree is actually "uneven". What do you mean? The technical field is so vast that you really can't master every field. In fact, you do more in this field and know more, but you use less in that field and know less. At this time, it depends on the specific knowledge field and what it is like. Do you need a complicated background? Technologies with high thresholds require much more supporting skills, such as AI and machine learning. However, the general product application field is not. Understand the core concepts and design intent, and review manuals and best practices to get started. This will not happen for the time being. It doesn't really matter. Just study hard for a while. But in the field with high threshold, it takes a long time to study. This is the essential difference.

I have seen an employee skill tree published by a company, which is all-encompassing, and almost all the knowledge and skills in the IT field are in it. It also claims to require "all mastery". I don't know how it defines "mastery". According to the definition of Dreyfus model, what can be done is God, not human beings. This is pure bragging. I don't believe it at all. If there is such a person, come out and let me worship. Because every slightly larger field is enough for you to study for a lifetime, because they are also developing rapidly. There is a saying in the industry called "full stack engineer", and those who advocate full stack are often front-end engineers. Technical experts who study the back-end work field often despise such people: Do you really think that clicking Node.js can solve a bunch of back-end transactions? I also know some front-ends, which can also be called "full stack", but I know exactly what the professional level of different fields is. There are also many complicated places to be solved in the front end. The whole stack is actually anti-specialization, which is a low-cost choice in the case of scarce human resources.

The higher level is to examine people themselves. Is a person's vision broad enough? Do you know anything about other fields? The answers to some questions are not in the domain itself, but outside the domain. The so-called "Kung Fu is beyond poetry". The company emphasizes teamwork and always faces different problems of division of labor and cooperation. For example, when products and operators put forward demands, can they put themselves in others' shoes? Strong sense of cooperation? Nobody wants to be a thorn in their side, right? Make a mess of the atmosphere and interpersonal relationship of the team, and everyone is unhappy and unhappy. How can we do a good job with peace of mind? In the end, it will only reduce the efficiency of the team and even collapse.