Easy to find an ideal employee - non-official interview technology guide
Author: Joel Spolsky Translation: Chen Bin Editing: Rick Ju March 23, 2000 to hire the right people for Fog Creek Software is very critical. In our field, there are three types of people to pick. In an extreme, which mixed, even lacks the most basic work skills. Just ask these people two simple questions, read their resume, you can easily eliminate them. Another extreme type is a talented super star these people write a LISP (a manual smart programming language) compiler for Palm Pilot in order to use the assembly language. In these two extreme types, a large group of candidates cannot be determined, maybe some people in them can do? The key here is to understand the difference between super stars and that a large number of people belong to the middle type, because the Fog Creek Software Company only hires super stars. Below I want to introduce some techniques to find super stars. Fog Creek's most important employment standards are: with minds, and completing the job. People who meet such standards are their employees needed by our company. Remember this standard. Remind this standard before going to bed every day. One of our company's goals is to hire such potential people, rather than hiring people who know certain technologies. Some specific techniques owned by anyone will be over time, so people who have the ability to learn new technologies are more cost-effective than employing those who only know how SQL programming is only in this minute. Have the mind is really a very difficult defined quality. But let's take some questions you can ask in interviews, through these questions, we can find out that people with this quality. It is very important to complete the work. It seems that people who have the mind but can't complete their work often have a doctorate, working in big companies, but no one in the company listens to their suggestions because they are completely detached. Thanks to punctuality, they would rather think about something for some college. These people can be identified by the following characteristics. They always love to point out two similarities between different concepts. For example, they will say "Spreadsheets is a special programming language", then spend a week to write a movie, wisdom white paper. This white paper is discussed, as a programming language, Spreadsheet regards all aspects of calculating language characteristics. Smart, but useless. Now let's talk about people who do work but there is no mind. They love to make a stupid thing. I have never considered that I have to rely on themselves or anyone else. By manufacturing new work, they have become the company's liabilities rather than assets. Because they not only contribute value for the company, they also waste good employees. These people typically paste the big pile of code, not to write the child. They have completed their work, but they did not work in the most intelligence. The most important rule at the time of the interview is: Make decisions when the interview is over, you have to do a straightforward decision. This decision only has two results: hiring or not employing. Before returning to your computer, immediately use email to notify the recruitment person in charge of your decision. The subject of email should be hired or not employed. Then you need to write two paragraphs in the body to support your decision. No other answers. Never say, "hire you, but can't be in my team." This is very rude, because you suggest that the respondents are not intelligent to work with you, but in his mind is suitable for the born group. If you find that you are tempting, I want to say that "hire you, but can't be in my team", then make this sentence into "not employed" and say it. This is fine. Even if someone can do it in a particular field, it will be good in other teams, and it is not employed. The change of things is so fast, we need people who can succeed in any place.
If you find an idiot expert (an idiot with some special ability), this expert is very, very proficient in SQL, but in addition to this, there will be no hire. They have no future in Fog Creek. Never say, "Maybe, I don't want to eat." If you are not allowed, it means no employment. Look, it is much easier than you imagined. Is it not allowed? Just say no! Similarly, if you can't make a decision, it means not employment. Don't say, "Well, hire, I think it is like this. But about ..., I want to know ...". This is not employed. The most important thing is to remember this, give up a possible good person is better than enrolling a bad person (the translator is pressed by the Chinese philosopher, "rather than monk killing one thousand, not letting one, huh, huh). If a unqualified job seeker enters the company, it will consume a lot of money and energy. Other excellent employees should also waste time to fix this person's mistake. If you are still hesitating, don't hire. If you are an interviewer of Fog Creek, when you refuse a lot of candidates, don't worry about the Fog Creek, there will be no worries. This is not your problem. This is the issue of recruiting person in charge. This is the problem of the Ministry of Human Resources. This is the issue of Joel (Translator Note: Fog Creek, the author of this article). But not your problem. Do you want to ask yourself, which situation is worse? One situation is that we have become a huge, bad software company, full of guys that are empty, such as causal shells, another situation is that we are a small and high quality company. Of course, it is important to find outstanding candidates (and hiring them). People who have a mind with minds and completing their work are one of the daily works of each employee in the company. But when you really start interviewing a candidate as a member of Joel Creek, it is necessary to make a lot of outstanding people to break the head and squeeze into the Fog Creek. In short, no matter how difficult it is a nice candidate, don't lower your standards. But how do you make an employment or not hiring this difficult decision? You just ask yourself during the interview process: Does this person have a mind? Can this person complete work? To make a correct answer, you must ask questions when interview. Let's make a joke, I will ask a problem with the worst interview in history: "What is the difference between VARCHAR and VARCHAR2 in Oracle 8i" This is a terrible problem. Mastering this trivial technique and Fog Creek wants to hire no contact between you. Who will remember this? If there is an online help, you can find the answer in 15 seconds. In fact, there is a worse problem, and I will talk about it. Now we have to talk about interesting parts: What questions will be mentioned when interview. My interview question list comes from me to Microsoft to find the experience of the first job. There is actually hundreds of Microsoft interview issues. Everyone has a preference. You can also develop a set of your own interview questions and interview personal styles so you can make a decision to hire / do not employ. The following is some interview skills I have successfully used, before the interview, I read the resume of the respondent, and then write the following to my interview plan on a piece of paper. This plan is actually the list of questions I want to ask. The following is an example (used to interview programmer): Do you satisfy the question C language functions that describe the items that should be answered by the items participating in the item? Design problems challenge you still? Before the interview, I am very, very careful, avoiding your own first. If you have already thought that you have thought that a Ph.D., a Ph.D., a man with a mind.
Then, in the next hour of interview, no matter what the MAS's Ph.D. said anything, you can't change your initial impression. If you think that this should be a fool before the interview, then what he said when he interviewed. The interview is like a very delicate balance. After an hour of interview, it is not easy to conclusion to a person (but you must conclude after the interview is over). Some inconspicuous details may affect the final conclusion. If you have a little understanding of the candidate before the start of the interview, it is good to add a heavy weight than a certain end of the balance. This will have no use in the interview itself. I have once before the interview, a hiring personally ran into my room. "You will definitely fall in love with this guy!" For a boy? Heaven, this is simply let me go crazy. I should say it, "Well, if you have to make this, I will like him, why don't you hire him, why bother me to waste time?" But then I was too young, so I was an interview. When this guy began to say some stupid, I said to myself, "Wow, this should be an exception, maybe it is a great wisdom." I started to see him with rose glasses. So I said "Employment" ended the interview, although he is a bad interviewer. What happened next? Except for me, other interviewers said, don't hire this person. The lesson is that if you don't listen to others, don't detect this interviewer in front of the interview. The most important thing is to talk to other face candidates, unless you have made an independent judgment. This is a scientific practice. As the first step in the interview step, the purpose of the introduction is to make the respondent relax. I usually spend 30 seconds, talking about who I am, how to do next interview will. I always make the testor to believe that we care about how he (she) solves the problem, not his (her)'s final answer is or wrong. By the way, when you interview, you don't want to sit in a table with the candidate. Otherwise, there is an obstacle between you and the interviewer, and suggest a more formal and serious atmosphere, so that it's hard to Relax. A better way is to put the table against the wall, or sitting on the same side of the table, which helps to relax in the candidate. Only if the candidate does not perform abnormalities because of nervousness, you can more effective interviews. The second step is what projects have been done recently. For students who have just graduated, if there is a paper asks the paper, if there is no one, I will ask what they have done. For example, sometimes I will ask, "Which course do you like most? Don't Be sure to be related to the computer. "In fact, I will be happy if the course and computer have no relationships and computers." Sometimes you will find that this computer system has chosen as little computer related courses, but has elected a lot of music related courses. But he (she) said that the favorite course is "object-oriented database." Hey, yes. But if you directly admit that you like music than the computer, not here, I will be more happy. When you have a work experience, you can let them talk about the previous job. I asked this question to find the same quality: enthusiasm. When the respondent talked about his (she) recently, you observed the following signs: · Talking about the project they have done; their speed is faster, the language is more vivid Lively. This shows that they are interested in some things, passionate (because many people in reality do not care about the projects of the project). This is also a good signal even if they are excited to express their negative feelings of the projects they have. "I used to install Foo Bar Mark II for the last boss, but he is a fool!" People who show enthusiasm are people we have to hire.
The poor candidate does not care at all, so it will not be excited at all. A very good signal is when the candidate is very excited about the previous job, so that they have forgotten that they are being interviewed. Sometimes it is very nervous when the candidate is just beginning - this is very normal, so I usually ignore it. But when they talk about the monochromochromatic art, this guy became extremely excited, it is not nervous. Yes, I like this admission, because they care about what they do. (What is monochrome calculation art? You can see the power of your computer monitor) · I can explain things seriously. Some people are rejected by me that they don't explain their projects they have done with ordinary people. Many people in engineering are always thinking that everyone knows the Bates theory (translator Note: Bates theorem, an economics theory) or the Peano Axiom (Translator Note: Peano's Axioms, some of the the the the the theory of some the thelation). If the respondent starts to happiness, let them stop, then you said, "Can you help me busy? It is to practice, can you understand what I just said with my grandmother?" But even so, some people continue to use those terms, and they can't understand what they are talking about. God! · If this project is a team project, see if they have signs of responsibility for leadership? A candid may say: "We use X methods, but the boss said that it should be Y, and the customer said that it should be Z." I will ask, "What do you do?" A good answer may be "I Try to open a meeting and the team in the team, then engage in a way ... "The bad answer looks like," Well, I can't do anything. I can't solve this problem. "Remember, smart And you can work. A way to figure out if someone can complete the work is to see if he (she) is tending to complete the task. In fact, you can take the initiative to ask them to give you an example to prove they can serve as leadership and complete the task. - For example to overcome the company's ascible habits. Now let's talk about the third paragraph on the list and you can't answer questions. It's interesting. The key to this idea is to ask some questions that cannot have an answer, just want to see what should be handed. "How many ophthalmologists in Seattle?" "How much is Washington Monument?" "How many gas stations in the Los Anne?" "How many piano tunners do you have?" They will actively give an estimate. "Well, the population of the Lubes is 7 million; each person has average 2.5 cars ..." Of course, if their estimates are completely wrong, there is no relationship. It is important that they can actively try their questions. They may try to figure out the reserves of each gas station. "Well, it takes four minutes to fill a reservoir, a gas station has ten oil pumps to run 18 hours a day ..." They may also try to estimate from footprint. Sometimes their ideas creativity make you surprised. Sometimes they directly want to check the yellow pages of LA. This is a good sign. · Uncleatly candidates are difficult. They looked at you stunned, as if you were from Mars. You have to prompt: "Well, if you want to build a city like a Los Anchree, how many gas stations do you need to establish?" You can also remind them: "How long does it take to fill a boring tank?" However, these eucalyptus brains will only sit there, you have to drag them forward. Such people don't solve the problem, we can do this. Regarding programming issues, I usually ask the candidate to write some small functions in C language.
Here are the topics I usually have: Calculate a string in reverse order to calculate one byte (BYTE) in an inverse sequence (BYTE) Before you search for a given byte (byte) in a string Find a possible longest sub-string, the string is converted by the string of the same characters to integer integers to convert into strings (this problem is very good, because the candidate should use the stack or STREV function) Note, usually you Will not want their code to write more than 5 lines, because you don't have time to understand too long code. Now let's take a look at some of the questions: The first question: A string in reverse. I haven't seen the interviewer in this life, I can do this one once. All of the coupons attempt to dynamically generate buffers and then output the inverse strings into the buffer. The key to the problem is that who is responsible for allocating this buffer? Who is responsible for release that buffer? Through this problem, I found an interesting fact that most people think that they understand C actually not understand the concept of pointers and memory. They don't understand. This is really shocking, can't imagine that this kind of person can make programmers. But they are really! This problem can determine the coupon from multiple angles: · Is their function run fast? Look at them how much this calls the Strlen function. I have seen the Strrev's algorithm written by the candidate actually only o (n ^ 2) efficiency, and the standard algorithm efficiency should be o (n), the reason is that this is because they call Strlen once again. function. · Do they use pointer operations (translator Press: Original to Pointer Arithmetic, refers to the value of the addition and decrease of the pointer variable)? Use a pointer to operate a good phenomenon. Many so-called "C programmers" did not know how to use Pointer Arithmetic. Of course, I have said that I will refuse him because the candidates don't have a specific skill. However, understanding the pointers in the C language are not a skill, but a kind of talents. Every year, a university is needed to enroll more than 200 computers, all of these children are 4 years old, starting to write adventure games in Atari 800S in Atari 800S. They also learn Pascal language in college, and they have been great. Until one day, their professors told the concept of pointers, suddenly, they didn't understand. They can't understand anything in the C language. So 90% of the computer system student transferred to facilitate political science. In order to save the face, they told friends that they were involved because their computer is handsome and beautiful. Many people are determined that there is no understanding of the string of the pointer in the brain. So understanding the pointer is a kind of quality, not a simple skill. Understanding the pointer requires a few bends, some people are not good at turning these bends. The third question can examine the mastery of the interviewer to the C 's computment, but this is a skill, not a quality, so you can help them. Interesting, they have established a subunies to calculate the number of bits 1 in Byte, then you ask them to optimize this subunies and try to speed up the running speed of this function. Smart candidates will use the surfactist algorithm (after all, this table has only 256 elements, can't use much memory), and the entire table only needs to be established. Discussing with smart candidates to improve time / space efficiency is a very interesting thing. Further tell them that you don't want to initialize the query table when the program starts. Smart interviewers may recommend using buffering mechanisms, for a specific Byte, only when the first query is first queried, and then the calculation results are placed in the query table. This will check the table directly when you are queried later.
The special especially smart interview will try to have a shortcut to establish a query table, such as a BYTE and its set of BIT numbers can be followed? When you watch the candidate write C code, the following techniques will help you: · In advance to the accounts, you fully understand, no good editor light is difficult to write code on the paper, so you don't care about them Hand-written code looks not neat. You also fully understand that there is no good compiler and debugger. It is difficult to write a completely do not have a bug for the first time, so please do not have to worry about it. · Good programmer's logo: After writing the "{" symbol, it usually immediately keeps up with the "}" symbol, then fill in the code in it. They also tend to use naming rules, although this rule may be primitive. If a variable is used as an index of a loop statement, a good programmer usually names it as few characters as possible. If the name of the index variable of their loop statement is CurrentPagePositionLoopCounter, it is not enough to see the experience of their write code is not enough. Occasionally, you will see a C programmer writes the same code if (0 == Strlen (x)), and the constant is placed on the left side of ==. This is a very good phenomenon. This shows that he has always been forced to develop this habit because it always puts = and ==. · Good programmers rendered a plan before writing code, especially when their code used a pointer. For example, if you asked a chain list, a good programmer usually draws a sketch of the linked list on one side of the paper, and indicates the location where the index pointer in the algorithm is currently moved. They have to do this. Normal people are not likely to start writing a reverse sequence sheet for a sketch. Poor programmers start writing code immediately.不避 免,, you will find bugs in their programs, so we have come now to come to the fifth question: Are you satisfied with the code? You may want to ask, "Well, where is BUG?" This is a question from hell, you have to answer this question. All programmers will make mistakes, this is not a problem. But they must find errors. For functions for string, they usually have forgotten the string end of the output buffer. All functions, they all commit Off-by-one errors (the translator is pressed: the maximum value and minimum value of a variable may be 1). They will forget the semicolons ending the normal C statement. If you enter a zero length string, their functions will run errors. If the malloc call fails and they don't write the error handling code for this, the program will crash. Take all the programs for all things, very, very small. However, if you really touch one, ask questions more. You said, "there is bug". They will carefully check the code. At this time, I observed whether their inner heart began to shake, but there is no problem with the code. In short, after the programmer has written the code, ask if they are satisfied with the code is a good idea. Just as regis asking them! (Translator pressed, Regis Philbin is the host of the game TV show of the US ABC TV. Is this "Is this your last answer?") Section 6: About the design. Let the candidate design something. The original designer of Jabe Blumenthal, Excel likes to design a house. Jabe said that there was a candidate to run to the whiteboard, draw a square, which is his full design. God, one square! Reject this guy immediately. What kind of design problem do you like to ask? · Good programmer will ask more information. Who is the house made? Our company's policy is that we will not hire those who don't ask who is designed before design.
Usually, I have to worry that I have to interrupt their design and say "in fact, you forgot to ask this house to design. This house is made by giraffe." · The stupid candidate thinks the design Like painting, what do you want to paint? Smart candidates understand the design process is a series of difficult trade-off. A great design problem is: Design a trash can on the street corner. Think about how much weigh you want to do! The garbage can be easily emptied, but it is difficult to be stolen; it is easy to put in garbage, but it is impressed by the wind. The garbage inside will not be blown out; the garbage can be sturdy and cheap. In some cities, the trash can must be specially designed to prevent terrorists hide a timed bomb. · Creative candidates will give interesting and unique design. One of my favorite problems is to design a placed shelf for blind (the translator as Spice rack, there is a specially putting the shelf in the kitchen of the foreigner, put a lot of small cans, inside Various pieces of seasoning usually many of the suggestions of the respondents are to engrave Bryiwen (a blind man using the text) on the tin of the displacement, so the text will be rolled up and deformed. I met a candidate, his design was put into the drawer, because he felt horizontally to be more convenient to do vertically. (Try to see!) This answer is creative so that I am shocked! I have an interview with a programmer, never thought of similar answers. This creative answer does jump over the rules of ordinary people consider the problem. Just because this answer is too creative, and the candidates have to go, I hire this candidate, and he has now become an excellent project manager in the Excel team (the author presses, this article is working in Microsoft. ). · Always fight for a determined knot. This is also part of the qualities that completed the work. Sometimes the respondent will not make a decision, trying to avoid difficulties, and the problem that is difficult to leave is not decided to do it directly, this is very bad. Good candidates have a tendency to promote things naturally, even if you intend to drag them back. If the discussion of a topic is beginning to turn there is meaningless, a good candidate will say, "Well, we can talk about this all day, but we have to do something. Why don't we start ..." We came to the seventh part and challenged. This is very fun. I have been paying attention to the interview. When the interviewer's answer absolutely 100%, you can say: "Well, wait a minute." Then spend two minutes to play the devil's game (the translator pressed, original for Devil's Advocate, the devil spokesperson refers to the violation of his conscience, defending the wrong evil view). Remember must definitely argue with him when you can definitely. This is very interesting. The weak candidates will yield. Then I will talk to him. · A firm account will find a way to convince you. They will convince you with President Kennedi. "Maybe I misunderstood what you mean," They started like this, but the text is still standing firmly. I will hire such a person. It has to be admitted that the status of the two sides of the interview is not equal. It is possible that should be afraid of your power, not dare to argue. However, good candidates have enough enthusiasm and courage to persist in the right point of view, they will forget to be interviewed because they are eager to persuade you. Such people are people we have to hire. Finally, you can ask what you want to ask. Some people like to see if the respondent will ask some smart problems. This is the standard technique for popular interview books on the market. I personally don't care about what to ask, because I have made decisions. Trouble is that the candidates may have already seen 5, 6 people, and they have been a few rounds of interviews, they may be tired, so that they can't prepare a smart and unique problem for each round of interviews. So if they don't ask, it doesn't matter.