Author: Joel Spolsky Translation: Chen Bin Editing: Rick Ju March 23, 2000
Employee is very critical for Fog Creek Software. 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 is the most important employment standard:
Has mind, and complete work
Just these. 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 rules at the time of the interview are:
Make a decision
At the end of the interview, for the interviewer, 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 answer. 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 programmers):
Introducing the question of the project that the item participating in the item cannot answer C language functions Are you satisfied? Design problem challenge
What else do you have?
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 the candidates do not perform abnormalities because of tension, you can make more effective interviews.
The second step is what the question is recently made. 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 projects they have done, they become enthusiastic; their speed is faster, the language is more 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? Unplug your computer monitor, you can see it, you 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 Angel?" "How many piano tunners in New York?" "Smart candidates guess you don't test their expertise, 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. The unsathest 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:
How many Bits in a link table (Linked List) inkdened a list (BYTE) is found in a string in reverse sequence 1 Search for a given byte (Byte) Find possible longest sub-string in a string This string is a string converted by the same character 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 won't 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:
Does their functions 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 a pointer operation (the translator presses: the original is Pointer Arithmetic, refers to the value of the addition and subtraction 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 observe the respondent to write C code, the following techniques will help you:
In advance, you fully understand that there is no good editor light to write code on the paper, so you don't care whether the code they handwritten seems to be 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. A good programmer's logo: After the programmer is written after the "{" symbol, immediately keep 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 ==. A good programmer will subscribe to a plan before writing the code, especially when their code is used in the 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 ABC TV network of ABC TV. Is his intention? "Is this your last answer?")
Section 6: Issues on 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 will worry about I have to interrupt their design and say "in fact, you forgot to ask this house to design it. This house is made by a group of giraffe." The stupid candidate thinks the design is like Draw, 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 certain 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. I always leave the last 5 minutes of the interview to sell my company. This is very important. Even if I don't intend to hire this candidate. If you are lucky to find a great candidate, you are willing to do anything to persuade him (her) to come to your company. Even if they are not a good candidate, you must try our best to make them excited for Fog Creek, so they will leave a good impression on Fog Creek at the end of the interview. Remember, the respondents are not just possible employees, they are also customers, and the salesman of our company. If they think our company is great, they may recommend friends to interview. Ah, I remember that I said that I will give some examples of a very bad reaction that should be avoided.
First, avoid the problem of illegal problems. Regarding race, religion, gender, birth country, age, service record, whether old soldiers, sexual orientation, physiological disorders are inelastic. Even if they say they serve in the army in the army in 1990, don't ask questions. Maybe this will let them talk about the experience in the Gulf War. But your problem is not legal. If you write them over Techion in Haifa on your resume, don't ask if they are Israeli, even for chat, because this is illegal. There is a very unhanective example. Click here to have a lot about what is illegal discussion. (But the rest of this website is stupid enough.)
Second, don't give advice in the problem, our company likes or doesn't like what kind of employee. An example I can think is to ask if there is a child or whether it is married. The candidate may think that we don't like the employees who have downsides families.
Finally, don't ask the topic of brain tendons, such as 6 matches how to spell out 4 triangles. The problem like this is the problem that the respondent has the quality of the candidate with "a head / complete work".
The interview is that it is integrated with science. But as long as you remember the principle of mind / complete work, you can respond. If you have the opportunity, ask your colleagues to interview questions and answers. This is one of the topics that our company's employees are keen on lunch.
This article is first published in English, entitled The Guerrilla Guide to Interviewing