Finding good employees is getting to be tougher everyday, especially in the Rocky Mountain area where I live and work. The shortage of IT workers is very real in a number of hot areas in the country, and as of November 2000, Denver is one of those areas. My company is constantly looking for good IT workers as much for need as for anticipation of need. I have gotten quite a few emails from people asking about career advice, so I decided to write down some thoughts I have on this. One side is hiring people to work with and the other is how you get hired (Do you really want to "get" hired?). This article deals with the first side of the coin, while Career Advice for DBAs deals with the other.
I will not be addressing the details of running ads, online v. print, recruiting firms, etc. Everyone has their own opinion and mine is they are all about as effective as any other. Eventually, somehow, you will get people into your office that you can meet and speak to, and make a decision about. This is the part of hiring people that I am giving an opinion on.
Who Should You Hire?
So whom should you hire? The short answer is "The best person for the job!" Of course, the corollary to this is "Who is the best person?" I used to think that you should hire the most technically qualified candidate. Merit rules, right? Well, as I grow older, I am not sure if this is correct. What I have learned over a few years is that qualifications come in many shapes and sizes and not just the technical ones.
I have a friend who is a great network engineer. He really understands lots of issues regarding networks, bandwidth, fault tolerance, etc and is a great employee as well. So would I hire him to run the network for my company? No!
Why not? (as my two year old says). I would not hire him because he would be bored at my company and would want to leave after a short time. Actually, he knows this and wouldn't even take such a job. >From what I have read and experienced, boredom is the main reason that most people look for another job. And in this market, once someone starts looking, the salaries out there may just lure him or her away from you. My friend and I both know that he is not a good fit for my company, despite being one of the most technically qualified people I know for the job
In my humble opinion, having been a manager and an employee at multiple companies, the most important thing is
to hire someone you and others get along with. Someone once told me that when interviewing someone there were
two questions he had to ask himself about the person. These questions had nothing to do with grades,
experience, quality of work, etc. The two questions were:
- Is this a person I would go out and have a beer with after work?
- Could I drive across the country alone with this person?
At my company, which is fairly small, the entire development team interviews potential programmers after our CTO. We then unanimously decide whether to hire them. As we have grown from 3 (I was 4) to 8, we have yet to have a problem and it is something I really value. This is one technique I think I will definitely take with me to future employers.
I have given my thoughts on the type of person to hire; now how do you find them? Well, I feel that you have to have some minimum of skill for the position when I hire you. I usually require the completion of a short test by candidates after the phone interview, but just prior to the face-to-face interview. Some people do not like the idea of a written test, but I have found that it provides me with a baseline for comparing different people as well as allowing me to see how the person performs under some pressure.
My test is designed to ask both general and SQL Server specific questions with a few other technical questions sprinkled in. The goal is to get an idea how much SQL experience the person has and how they write code. In one place I even had the person take the test on a computer and write actual SQL against a test database. This was the best method since I firmly believe that you should use the tools available. After all, when was the last time you developed a program and BOL was not available? Not everyone (including myself) has the time or resources to get a computer dedicated to the interview process and setup the databases, security, etc. before every interview, but it was a really helpful tool in assessing knowledge.
I am including some of the questions that I ask here for your perusal. Feel free to use them and be sure you can answer them if you come to interview with me. Not all of these are appropriate for a written test. Some are better suited for oral interviews. Usually I pick 5-8 of these for a written test and then pick more once we start the oral interview.
Sample SQL Questions
- You have two tables: Customers with 3 rows and Orders with 5 rows. The structures look like this:
Customers (CustID int, Name char( 20))
Orders (OrderID int, CustID int, Qty int, Price money)
How many rows are returned by this query?:
Select * from Customers, Orders
- What is a correlated subquery? Give an example using the tables from the previous question.
- Suppose you have the following data:
Customers CustID Name ------------ -------- 100 Joe 101 Steve 102 Bob Orders OrderID CustID Qty Price ------- ------ --- ------ 1000 100 2 $10 1000 100 4 $5 1001 102 10 $12Write a query to return all customers and the number of orders they have placed? Only include customers with at least one order.
- Given the data above, write a query to return the orders that have more than one line item?
- What is declarative referential integrity?
- What is normalization? Why do it? Why not do it?
- What backups would you run if you had to implement a backup scheme (type, frequency, location, etc.)?
- How would you notify the DBA automatically that some event had occurred in SQL Server?
- How would you notify the sales manager that a large sale had occurred?
- What is OLAP?
- Given an unlimited budget, how would you setup the mission critical sales database that records over 500 sales/sec from 100+ users? Give the physical architecture you would employ for the databases, logs, etc.
- What is a clustered index? How many clustered indexes per table? How many other indexes?
- How do you troubleshoot a slow query? Given this query takes 22 minutes to run and you can verify that, how would you go about troubleshooting this and speeding it up?
Select a.name, b.phone, b.type, c.rep >From customer a, phones b, rep c Where a.custid = b.custid And a.repid = c.repid
- What is replication? What types are there? When would you use replication?
- Discuss a time when your integrity was challenged - How did you handle it?
- What would you do if someone asked you to do something unethical?
- Have you ever experienced a loss for doing what is right?
- Have you ever asked for forgiveness for doing something wrong?
- In what business situations do you feel honesty would be inappropriate?
- If you saw a co-worker doing something dishonest would you tell your boss? What would you do about it?
- What brings you joy?
- If you took out a full-page ad in the New York Times and had to describe yourself in only three words, what would those words be?
- How would you describe your personality?
- What motivates you the most?
- If I call your references, what will they say about you?
- Do your consider yourself a risk taker? Describe a situation in which you had to take a risk.
- What kind of environment would you like to work in?
- What kinds of people would you rather not work with?
- What kinds of responsibilities would you like to avoid in your next job?
- What are two or three examples of tasks that you do not particularly enjoy doing? Indicate how you remain motivated to complete those tasks.
- What kinds of people bug you?
- Tell me about a work situation that irritated you.
- Have you ever had to resolve a conflict with a co-worker or client? How did your resolve it?
- Describe the appropriate relationship between a supervisor and subordinates.
- What sort of relationships do you have with your associates both at the same level and above and below you?
- How have you worked as a member of teams in the past?
- Tell me about some of the groups that you've had to get cooperation from. What did you do?
- What is your management style? How do you think your subordinates perceive you?
- As a manager, have your ever had to fire anyone? If so, what were the circumstances, and how did your handle it?
- Have you ever been in a situation where a project was returned for errors? What effect did this have on you?
- What previous job was the most satisfying and why?
- What job was the most frustrating and why?
- Tell me about the best boss you ever had. Now tell me about the worst boss. What made it tough to work for that person?
- What do you think you owe to your employer?
- What does your employer owe to you?
- Tell me about an objective in your last job that you failed to meet and why.
- When is the last time your were criticized? How did you deal with it?
- What have your learned from your mistakes?
- Tell me about a situation where you blew it. How did you resolve or correct it to save face?
- Tell me about a situation where you abruptly had to change what your were doing.
- If you could change one (managerial) decision you made during the past two years, what would that be?
- Tell me of a time when you had to work on a project that didn't work out the way it should have. What did you do?
- If you had the opportunity to change anything in your career what would you have done differently?
- When was the last time you "broke the rules" (thought outside the box) and how did you do it?
- What have you done that was innovative?
- What was the wildest idea you had in the past year? What did you do about it?
- Give me an example of when someone brought you a new idea, particularly one that was odd or unusual. What did you do?
- If you could do anything in the world, what would you do?
- Describe a situation in which you had a difficult (management) problem. How did you solve it?
- What is the most difficult decision you've had to make? How did you arrive at your decision?
- Describe some situations in which you worked under pressure or met deadlines.
- Were you ever in a situation in which you had to meet two different deadlines, given to you by two different people, and you couldn't do both? What did you do?
- What type of approach to solving work problems seems to work best for you? Give me an example of when you solved a tough problem.
- When taking on a new task do you like to have a great deal of feedback and responsibility at the outset, or do you like to try your own approach?
- You're on the phone with another department resolving a problem. The intercom pages you for a customer on hold. Your manager returns your monthly report with red pen markings and demands corrections within the hour. What do you do?
- Describe a sales presentation when you had the right product/service, and the customer wanted it but wouldn't buy it. What did you do next?
- How do you measure your own success?
- What is the most interesting thing you've done in the past three years?
- What are your short-term or long-term career goals?
- Why should we hire you?
- What responsibilities do you want, and what kinds of results do you expect to achieve in your next job?
- What do you think it takes to be successful in a company like ours?
- How did the best manager you ever had motivate you to perform well? Why did that method work?
- What is the best thing a previous employer did that you wish everyone did?
- What are you most proud of?
- What is important to you in a job?
- What do you expect to find in our company that you don't have now?
- Is there anything you wanted me to know about you that we haven't discussed?
- Do you have any questions of me?
- Why do you want to work here?
- What other opportunities are you looking at right now?
- Who is your hero? Why? (or role model)
If you really want the answers, they are here.
Once I have the technical questions, I then usually probe in various areas based on the test to try and determine how skilled this person is with SQL Server and SQL in general. 10-15 minutes should give you a good idea what the person knows.
After that, it's on to the really important questions. At least with me, the non-technical questions can make up quite a bit for a lack of experience. The answers to these questions can help you to answer the two very important questions I listed above.
I think it is important to have a fairly standard set of questions here so that you can compare your feelings about the way the candidate answers the questions (not the answers themselves) across people. I would pick 7-8 of the following questions with the first candidate and then mark them. All subsequent candidates would be asked the same questions.
Questions to Reveal Integrity/Honesty/Trustworthiness
Questions to Reveal Past Mistakes?
Questions to Reveal Creativity/Creative Thinking/Problem Solving
Miscellaneous Good Questions
As I mentioned before, hiring people is an art. It takes practice to find out what you and your team want and need. Having some standards here, just like in coding, help you to make a good decision and more accurately compare people against one another. After all, it costs quite a bit in time, money, and effort to hire someone. It's worth a little preparation to find out who is the best fit for your company.
One final note: you should also be aware of what you cannot ask. At least according to the law. I hate discrimination and find that there are good reasons not to ask most of the questions prohibited by law. Do yourself and your company a favor and be aware of those that apply in your area if you interview people.
I encourage feedback, especially about the questions. I would be interested to know what people think about them from either the interviewer or interviewee perspectives. Once again, this is completely my opinion, feel free to use it, and I hope it helps you find a colleague and friend someday.Steve Jones