Live data from Hacker News

How not to hire a software engineer

tonsky.me

181–190 of 239 posts

Re: How not to hire a software engineer

#181
post #126

Earlier quoted context omitted.

Is it amazing that they can't do them at all, or they can't do them in the spotlight in a totally unfamiliar? I have a strong feeling that most of the people you think fall in the former are actually in the latter. Yes, the solution might be a couple nested for loops. But if it's a new question to the interviewee, then they don't know the solution yet.

If you can't find the solution, and you can't work in a slightly unfamiliar situation which is undoubtedly supposed to be your core competency, then I don't see why that's a job you should get. If you're bad at taking tests, being able to make a vague excuse for why you failed one is not an acceptable substitution for passing it.

If you ask questions that are relative to the job and something you might run into or someone asking you for help, then that is different.

But, I've personally never been asked these kinds of questions in a live coding/whiteboarding session. It's always brain teasers or some sort of algorithmic problem. Usually they are things that aren't necessarily hard, but are about as far from everyday work as you can get.

Re: How not to hire a software engineer

#182

Earlier quoted context omitted.

I generally do tell them it's a complex problem and I'm looking more for how they approach it than any specific solution. I don't tell them everything I'm looking for because then they'll just pretend to be the way I want them to be. But I disagree that it's unrealistic. I've had far too many employees and coworkers who don't understand what is being asked of them or don't know what they're doing, and try to fake it…

I like this idea because it allows me to figure out if they have one of the most important skills: being able to say "I don't know" without wasting a lot of time. IMO anyone else saying you should tell them the solutions might not have answers are dancing around needing to have that skill.

I guess if an applicant has done enough research/prep for technical coding interviews, they probably will come prepared realizing that not all questions may have answers or may be able to be answered without context they aren't expected to have.

I know I will after this discussion!

I know I would also get very thrown by a question without an answer if I wasn't expecting it, in a way I don't think I would be on the job. (On the job I know too well through experience that not all problems have good solutions, but in an interview question I maybe would have assumed there was an answer they expected me to get, before this exchange).

Of course, the end goal of interviewing for an employer is maximizing their chance of filling position with good people, which involves balancing false negatives and false positives -- and in fact a "false positive" (wrong hire) is probably _worse_ than a "false negative" (turning down someone that would have been great). So... filtering out some candidate that might have been good may be a neccessary sacrifice, not a flaw in the process, so long as you're doing even better at successfully filtering out those that wouldn't work out. Whatever works!

If I felt someone was intentionally giving me a "trick question" in an interview, I might conclude they weren't someone I wanted to work for anyway, so everybody wins I guess.

Re: How not to hire a software engineer

#184

Earlier quoted context omitted.

I like this idea because it allows me to figure out if they have one of the most important skills: being able to say "I don't know" without wasting a lot of time. IMO anyone else saying you should tell them the solutions might not have answers are dancing around needing to have that skill.

I guess if an applicant has done enough research/prep for technical coding interviews, they probably will come prepared realizing that not all questions may have answers or may be able to be answered without context they aren't expected to have. I know I will after this discussion! I know I would also get very thrown by a question without an answer if I wasn't expecting it, in a way I don't think I would be on the jo…

It doesn't even have to be a question for which there is no answer. IMO it works best with progressive questions where you can start with something straightforward that just validates basic knowledge they should have, and progresses to get increasingly difficult.

I used to ask about the layers in the network stack, and how you might troubleshoot it. I start with something as simple as a firewall blocking a port, or the server not listening on the port you expect. If they do that, great. Anyone who's had to troubleshoot distributed systems should have checked that stuff plenty. Then we try a protocol they might not have used. Most developers have a rough idea of UDP vs TCP, but they might be confidently wrong about some details or try to make stuff up and say "I'm pretty sure...". We go down a layer and try some scenarios where routing is messed up. I don't expect most devs to know about that, maybe someone with more sysadmin experience, but by now it's painfully obvious if they don't know what they're talking about. It happens to be pretty handy on my team, but if at this point someone says, "you know I really don't know a lot about networking", great! I'm glad you told me. Let's skip talking about voltage fluctuations in Cat5 cables and get back to software development.

Another good one is designing a data structure where there's a lot of different access patterns you might optimize for. Gives them a chance to demonstrate some simple coding and CS skills before it gets complex, but then there's lots of room to talk about the use cases. Once you're talking about use cases, are they willing to ask about the trade-offs? Priorities of various use-cases? etc.

Re: How not to hire a software engineer

#185

Earlier quoted context omitted.

I would argue that what makes code "good" is completely subjective which is why I don't spend too much time thinking about it. The only criteria I have for good code these days is "Does it work", "Can I understand it". Everything else is a good IDE's command away for being willed into reality. So I really don't spend too much time on the "good" code debate like I did as a teen reading "Clean Code" and GOF books. I ac…

"The only criteria I have for good code these days is "Does it work", "Can I understand it"." Which of course, are not trivial to achieve by any means. Maybe also add "Can my coworkers understand it?" Which might be a very different metric. "I would have read, in their place, books on type theory and OS design, Posix, in other words things that actually help me build stuff and get things done and that I subsequently…

I don't know. Procedural code in Golang is pretty trivial - you basic constructs are regular in the selection, iteration, and sequence sense with a sprinkle of interfaces and some CSP constructs for concurrent design. That covers like 99% of what you need to write good code. I'd say pattern matching is pretty helpful Ala ML, Haskell, Rust. Beyond that all the GOF and Solid and all that jazz seems to do way more harm than good IMHO.

> If you want to get very far with any of those, you will need to write "good code"

If you have ever looked at the code of the most successful programs the code is anything but "good". Have you glanced at the Linux Kernel code lately? But again, "good" is very subjective. The Linux Kernel works well enough to server the purpose of millions of users and enough people understand it. Its good code!

Re: How not to hire a software engineer

#186

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…

> We just really be testing their ability to sort through a bunch of legacy OOP designed by people who are so board with the project domain that made of bunch of bad abstractions

My preferred coding interview approach is indeed to let the candidate interact with a correct but poorly-written piece of code and refactor it into something more maintainable. I find that reading and working with other people's code is a hugely important part of the job on a modern dev team, but rarely is that part of the evaluation.

Re: How not to hire a software engineer

#187
post #49
post #15

Earlier quoted context omitted.

I'm not sure this is true but I've heard people who work in 'hiring' say so: from the company's point of view there is almost no upside to providing insightful and useful feedback, and there's always a chance that feedback will be used to sue for discrimination, or ridicule the company online, etc. Best to be generic and forgotten about by the candidate as soon as possible

Mostly this. I was a hiring manager at a big company where HR made it very clear we cannot give specific feedback to applicants. We also could not give references for the same reason; fear of being sued. But after a while you learn to speak in code for those cases where you really feel you need to provide meaningful information. The last time I was asked for a reference I was contacted by a hiring manager who said th…

If you can't for legal and ethical reasons say bob sucks don't hire him then you can't communicate the same thing in a way that is as subtle as a brick.

Next time before you do something like that I suggest you communicate with your companies lawyer and ask his opinion on the matter before you get your company sued and yourself fired. Especially if you are going to discuss the matter on the public internet.

Odds are incredibly good that its trivial to discern your actual identity and that you have done the same thing repeatedly. Its entirely possible that someone could be working out right now why they weren't hired and whom they should sue.

Re: How not to hire a software engineer

#188

I look to see if I can trust them to not do dumb things. That's really it. What's the ego, arrogance, competence, willingness to ask questions, interrogate things, redefine problems to be less work (or none at all). Do you see what's not there? Programming language competency. Database knowledge. Things like that. I've been hired as a Ruby programmer, I didn't know Ruby. I was hired for mainframes in the 90s - I had…

I interview quite a lot, and one of the things I try to do in an interview is work through a problem that I almost certainly understand more deeply than any of the candidates (both because it's my niche and because I've worked through the exact problem with hundreds of candidates before). There's a certain minimum bar that I expect any educated and intelligent individual to achieve if they're a good match for the job…

If I smell any bs then I immediately change tactics and make sure I put them deep over their head. For example, "what are the strengths and weaknesses of classifying grammars via the Chomsky hierarchy?"

There's 3 ways to answer these kinds of questions and it exposes you as either a genius (or in this case a linguist), a non-genius (real geniuses are as common as 7.5 ft tall people) or a bullshitter trying to look like a genius.*

I've never met an actual genius in an interview so let me address the other two. That third group is a nonstarter. I've known the person for 10 minutes and they're already trying to deceive me. How the hell am I going to build a product with them?

Kim Scott, some SV big wig wrote an entire book on this called Radical Candor. Essentially it's "don't bullshit people (and know where your taking the relationship when you use that rule)"

I strongly believe companies work best with the smallest bullshit quotient possible. They may sell more or be more profitable with certain flavors of bullshit, but things are easier and more stuff gets done without it.

At the end I would have rather actually made something than duped people with sham products sold on dreams

---

* I actually can't answer that question but I could probably identify the neighborhood of a real answer (...something something limitations of the von nuemann model restricting the constructions of parsing systems something something...). The point isn't to answer it, although that would be quite impressive; it's to see how far someone digs into their own BS.

Re: How not to hire a software engineer

#189
post #172

Earlier quoted context omitted.

I just don't really get this attitude. What exactly you want me to ask assuming I know salary and position? General information about company is usually right there on the website. I am really not sure what exactly the hiring manager is supposed to be asked at that moment, especially by someone young who does not have enough experience to distinguish between lying hiring manager and the one that tells the truth. I co…

"What exactly you want me to ask assuming I know salary and position?" "Who are your most important customers?" "What is your monthly recurring revenue?" "What is your best selling product?" "What's one thing you like about working here?" "What's one thing you don't like about working here?" This isn't very difficult. Just requires a slight interest in the industry you plan to work in.

None of them is useful for anything. They are just questions that you ask to fulfill the "must ask question" requirement. Generally, product is on company main page. Asking that one likely shows you did not seen it.

Moreover, they are unlikely to tell you monthly recurring revenue. That is just odd question. Our company would not definitely.

Hiring manager will not tell you what he does not like about working there - for the same reason why you are not truthful about why you left previous place. Seriously. I would not ask the like dislike question for similar reason - it strikes me as odd and possibly would mark me as someone with low social skills. But the risk there is not too high.

Re: How not to hire a software engineer

#190
post #172

Earlier quoted context omitted.

At my last employer, I sat in on an interview for a co-op with my boss. After asking the interviewee some questions the conversation went basically like this: Boss: Do you have any questions for me? Co-op: No Boss: Would you like to know about the company? What we do? Co-op: No I couldn't help myself from laughing. I know he's just a student, but he's still a 20 something adult. No interest at all, just looking to ch…

I just don't really get this attitude. What exactly you want me to ask assuming I know salary and position? General information about company is usually right there on the website. I am really not sure what exactly the hiring manager is supposed to be asked at that moment, especially by someone young who does not have enough experience to distinguish between lying hiring manager and the one that tells the truth. I co…

- Tell me about your software development methodology.

- How are requirements communicated to developers?

- How is work by developers tracked?

- What VCS do you use?

- What bug tracker, etc?

- Do you practice devops?

- What's your build process look like? Automated? Continuous deployment?

- How big is the team?

- Do you do sprints? how long typically? How do you decide what to work on in a sprint?

- How do you determine when something is "done"? Who decides?

- Describe your infrastructure.

That's usually enough to get started. You can drill down as far as you want on pretty much any of those.

Post reply on HN