Live data from Hacker News

How not to hire a software engineer

tonsky.me

31–40 of 239 posts

Re: How not to hire a software engineer

#31

What i've noticed recently with interviewing candidates is some lack the ability to work outside the way they work normally, especially in practical tests. Things like, "I usually work from home, so its too difficult to concentrate in this meeting room", "I use Windows, so writing code on a Mac is really hard" and the most common for some reason for why the technical exercise isn't working "Intellij usually saves the…

Unless the IDE you use everyday is the whiteboard, these are all fine and valid criticisms of your hiring tests. If you want to see real-world results, give candidates real-world conditions (including their preferred OS/IDE/workspace environment).

> under pressure

is this a common occurrence in your company? people expected to code well under direct supervision and a strict short time limit?

Re: How not to hire a software engineer

#32

I'm currently working on revamping the way we do the first interview, which is nothing more than a filter. We currently ask mainly, let's face it, poor theoretical questions. I want to ask more experience based questions. so instead of: Explain what a database index is Ask: Can you give us an example of a time you used a database index? What were you trying to achieve? Could there have been a different solution to re…

be more open-ended?

> Can you give us an example of a time you used a database index

Hey this query is slow, what could we try doing to speed it up?

Re: How not to hire a software engineer

#33
Here's an idea for how to actually do a technical test (if you do want to do one).

1. You bring the candidate in to your office. You have their future desk already available with computer and development environment already functional. Pick a somewhat standard environment configuration.

2. Have an exercise already prepared. Best option is not a "build this from scratch" but have something that already works and needs some additional feature. Something small that could be done in, at most, an hour. Another option is two or three smaller tasks that together would take as long.

3. You give the candidate incomplete information. You describe the task clearly and in a mostly complete way, but leave out a number of details.

4. Very clearly explain these things. One: You won't be on them; this is not pair programming and they should feel at ease and free to do however they want. But you will be sitting in the next desk and you will be doing something unimportant so they can -and should- ask you anything and all they want. They can also use S.O. or whatever search service they want but you'd prefer that they asked you first. Two: You won't be looking at their code unless they want to show you. Three: they have around one hour, but time doesn't matter that much. If giving out more than a single task, indicate that they won't be judged by how many they manage to finish.

5. During that time, you focus on the questions they ask you. What they ask, how they ask them, which problems they face, what things they do or don't understand. This is the key. This is what will tell you about how they think, what things they know and which ones they don't. Keep an eye on them, if they seem too quiet you can interrupt them with simple "how's it going?" or "something wrong?", but don't push it too much so that you don't stress them. You may even suggest a 5 minute break for a coffee/water half-way through if you feel they might need it.

6. The whole idea is to get them to do some task but more importantly to get them to talk about it. When they are done, or when enough time has gone by, don't go over their code. Instead, ask them how it went, what they managed to do, if they got stuck. If they got it running, they can run it. If they want, they can show you the code or part of it. but you don't need to focus on that. Focus on their talk.

7. Finally, do offer them the option of showing the code. But then, get them to show it and explain it. Don't just go over it yourself.

8. The task(s) should be adequate and reasonable for the role, of course. But try to lean on the easier side more than on the harder one. And remember: do leave some information out. The task should be clearly understood but not finely detailed so that they will need to ask and maybe even make some decisions. (You can make them have to decide something by giving them more than one option as answer to some question.)

Re: How not to hire a software engineer

#35

I suppose I'll be the first to say that yellow as a background color is a horrible design choice. And it's not even using the background color CSS option alone, it's got some weird tiled single pixel yellow image on top of it! What??

Firefox > Reader View

Save your eyes.

Re: How not to hire a software engineer

#36

Lately I have done a few at home code challenges for companies. They usually take several hours. They are perfectly functional and use minimal code but, the only feedback I receive is: "we're not moving forward". They won't discuss anything with me. The only impression I get is that your company is terrible and I will never respond to your recruiters again.

For me, honest and accurate feedback is the one thing that is missing. When I get rejected, the response is usually "You are not a good match to our company culture". What I would appreciate would be "Your lack of experience in managing remote teams is a gap for us." I feel that quality to the pool of candidates will increase once this feedback loop problem is fixed.

When I do interviews I try to give good feedback. My goal is that in 2 or 3 years if the candidate is interested in working with us again that they will certainly pass the interview. However, "You are not a good match for our company culture" is feedback I've definitely given and it's a bit hard to give details.

There are a couple of main things. Usually when I have this issue it's because the candidate seems really keen to do things or have things that we just don't offer. For example, "Every piece of code must be a micro service". Some of our code works that way but lots doesn't and we aren't going to change it. Another example might be a very junior person saying, "I want to be the scrum master". Well, we don't do scrum master in our team and even if we did, we would be unlikely to pick that person.

Basically, "You aren't a good match to our company culture" is saying "I really think you would be very unhappy here based on your responses". Again, I try to explain if I can but I also don't want to get into an argument. If I'm getting "no go" feelings and they aren't reciprocated, this seems doubly like a problem.

My advice, if you are getting this response a lot, is to consider how you are responding to questions. You may be projecting an inflexible attitude. Don't wait until the end of the interview to ask questions about how things work. Try to make sure to fit it in at every place you can. How are they doing their development? What are the people like? How do they resolve disputes? How do they decide on their tech stack? etc, etc.

However, also think critically about the place you are applying into. If you think, "Oh this is an awesome place" and they think "This guy isn't a good fit", That's a pretty bit mismatch. Did you listen well enough to their explanations? Are you sure that it works the way you think it does? However, if you are thinking, "Oh well, this place is OK. There are problems, but I can fix them", maybe there is a mismatch between what you think is a problem and what they think is a problem.

And while you might be thinking that "not a good match" is corporate speak for "you can't balance a B-tree", my experience is that it really means exactly what it says. As much as my ego takes a hit when I experience it myself, in retrospect every time I've gotten that response it's because it was true. I would have hated that job.

Sorry for the rambling nature of this reply. I should be working, but I hope it was helpful.

Re: How not to hire a software engineer

#38

All the things most programmers do these days are pretty mundane and the only thing you need to ascertain is if they are familiar with the technologies that are being used. "Can you show you know sufficient SQL? Did you write applications before using Rails/Django what have you? Distributed this, Web that - OK, jobs is yours." After all that the productivity of the programmer is solely based on the work environment a…

> All the things most programmers do these days are pretty mundane and the only thing you need to ascertain is if they are familiar with the technologies that are being used.

this is exactly the company/boss i would not want to work for. It is exactly the opposite. You should not care if the person if familiar with the tech you use. Who cares if you do php or c#? Does it REALLY make any difference when it comes to taking the business logic and adapting it into MVC/API?

Re: How not to hire a software engineer

#39
A perspective from the interviewer's side. Since I run a small startup, when hiring, my first thing to determine was that whether I would be able to work with the candidate. Hence, I would come up with a puzzle, a maths problem, or even a guesstimate, just to see the thought process and that whether there is any "gelling". Things to evaluate are, original thinking, how well the candidate puts his perspective forward, how well he takes suggestions, how quickly he reaches the crux of the problem etc. If there is a face to face interview, the general assumption is that the candidate is talented, more important is that whether he can work with others in the company. If I am hiring someone who will work alone, without anyone's inputs, I might change the process (something like an integration or SSIS workflow) but have not needed to encounter that as of yet.

I usually go through the resume, and have interviewed enough coders to understand that they would know about what is written on the resume. Hence, knowing the background is good enough for evaluation, but feels repetitive during the interview. (Also, if you have had 4-5 years of experience, and 2-3 jobs, you can only stay for long if you had good skillset)

Re: How not to hire a software engineer

#40

What i've noticed recently with interviewing candidates is some lack the ability to work outside the way they work normally, especially in practical tests. Things like, "I usually work from home, so its too difficult to concentrate in this meeting room", "I use Windows, so writing code on a Mac is really hard" and the most common for some reason for why the technical exercise isn't working "Intellij usually saves the…

Well to be honest, I once had an interview (and got the job) where I had to use a Mac for the programming test.

It was a rather annoying experience when you are not used to it and some of your time does get lost fighting with the system.

In this case, I do think it was a good thing because everyone in the company had to work on a mac. I do believe it's not a reason to complain, just work with the tools you get, but it might impact their performance a bit

Post reply on HN