Become a nicer interviewer
Since the beginning of my career, I have interviewed over 70 candidates as an interviewer (2018 - 2021) and participated in the interview process of over 10 companies as a candidate.
Have some experience of my own.
The principle of the interview is to pick out the right person for the corresponding job requirements, which is usually not covered by some specific technical questions in detail.
The principle is to try to keep it as practical as possible, for example by looking at skills that will be used in the real world.
The human mind always prefers certainty, and both the candidate and the interviewer are influenced by this underlying preference.
The interviewer prefers to examine the candidate's ability through definite and specific questions.
The candidate prefers to prove their ability by preparing answers to definite and specific questions.
However, is this the right way?
Undeniably, even the process of preparing answers to known questions is a good way to learn, but the perspective of knowledge obtained in this way is very one-sided, and the final answers corresponding to those questions are usually the answers summarized above the collection network, mostly missing the path of thinking from the source of the problem to the solution.
If your goal is to pick out candidates at the mid-level and above, do not use the above approach.
Because the value of mid-level engineers is in the way of solving problems, developing solutions on higher level, and excellent communication and understanding skills
Typically I would suggest that the requirements for a mid-level frontend engineer would be something like:
- We won't ask you to master complex sorting algorithms, or even to write a complete bubble sort.
- We won't ask you to implement complex and obscure data structures, such as red-black trees.
- We won't ask you to master a wide variety of UI libraries, such as React / Vue / Angular / etc.
- The candidate would be expected to be able to find and resolve bottlenecks in the code and be able to articulate trade-offs between cases.
- The candidate would be expected to master common data structures in UI engineering, such as arrays, maps, sets, and DOM trees, as well as common CS topics such as Big O notation and tree traversal, but more importantly to apply these principles in engineering practice to create better UI (faster and stronger).
One more important thing is communication skills. I tend to ask a few wide-ranging questions during the process, and I pay particular attention to how the candidate is structured to answer those questions, and how the candidate reacts when they are more confused about the questions.
And is a CS degree required for software engineers?
As far as I know, 80% of CS exams (college) are not even related to computers. That's math, physics, statistics, math and more math.
The duty of most majors in university education in the modern education system is to teach the methodology of learning knowledge, not applied or research-based knowledge.
Programming is amazing in that it does not have a clear gate. When you choose this direction, you decide that you will continue learning for the rest of your life. So this position may depend on your passion for programming and persistent effort.
As an interviewer, I have met very nice interviewers and also very bad ones, so after a deep experience.
My thought is that every candidate is probably a treasure, and the most important ability of an interviewer is to find out what makes each person tick.