Live data from Hacker News

Hiring Without Whiteboards

github.com

331–340 of 471 posts

Re: Hiring Without Whiteboards

#331
post #203

We use a 3 step process, sans whiteboard: 1. First interview, the candidate interviews us. What market we serve, what our development processes are, what our technology stack is. If they express interest by being prepared and asking good questions, we send them home with 2. a programming task. Choose 1 of 5 tasks. The tasks are not abstract problems or puzzles, but come out of the designs we've implemented. We ask fo…

How do you avoid awarding candidates who violate your request of no more than two hours and spend considerable time coming up with something amazing? They may still produce 100 lines of code — but those 100 lines may end up being unusually elegant, beautiful code that stumps 40 year veterans. How do you avoid punishing someone who took your requested time constraint seriously (or otherwise didn’t have enough free tim…

Actually, if they spend more than two hours, the question is why. We are happy to see them get interested in the task and dive deeper, but we just don't want to ask for more, that would be unreasonable in our view. It's fine if the code is broken, or has a couple of bugs. (It's best if it compiles though!)

The goal is as much to learn how they think, solve problems and communicate as it is whether they know how to write software.

I'll give one example: One task is to figure out how long it takes to grab the current time from the operating system. We use a rather obscure OS. A candidate chose this and solved it simply (though it's got a couple of points to mind), but then he got curious and wanted to know whether a virtual machine had a different timing and then what the performance on a different operating system was. He told us that he spent about 8 hours altogether. I felt a bit bad on one hand, but on the other, it's exactly what we like to see: Solid programmers who love programming technology for its own sake.

Re: Hiring Without Whiteboards

#332
post #189

Earlier quoted context omitted.

A lot of people in other comments below are criticizing take-home tasks, but honestly, this sounds nice and balanced. I'd much rather have a couple days to think about a problem and a few hours to implement it over having to take time off work, pay to go all the way to your company at a time that works for both of us, and deal with a white board interview. It's a way bigger investment. So long as it's a small, confin…

I oppose take-home tasks as an interviewer. I don't think employees or prospective employees should be taking work home with them, ever. Instead, collaborating on a problem with the interviewee, discussing the problem and potential solutions, observing how the interviewee recognizes when they go off-track, how they respond to hints and suggestions... these are all better signals than the culmination of some homework…

We have both elements. The code they wrote is subsequently reviewed live with 3 or more of our engineers and all of these aspects are explored.

I think what gives our approach balance is that we are also committing to making a time investment. Reviews typically last an hour, which means that the 2 hours we ask from the candidate is matched with 3-5 hours of our engineers' time to review and discuss with them.

Re: Hiring Without Whiteboards

#333
Adding my own personal experience.

At the end of last year I wanted to change jobs but I was paranoid about my raw algorithm knowledge. I've been a consultant for over 15 years. The last company I worked at for a decade. I've developed software given a specification, worked with teams to design applications, lead teams, presented to management of companies, and even was part owner in a company -- but I never was good at rote memorization.

I know my limitations and I know how to find answers.

So, for 4 months I practiced online programming problems, read interview books, and had my wife quiz me nightly. The nightly quizzes were whiteboard answers and I had to explain the solution enough that my wife understood.

In the end, I was interviewed at 4 companies: Daugherty Consulting, Google, Amazon, and Target. (For Google this was my second interview in two years. The first interview was a shock, I froze during the preliminary interview, and for two years contemplated if I'd ever quit my job.)

Daugherty never had me do whiteboard programming but did ask me some algorithmic questions. These were much easier to answer verbally. In the end I was told I didn't have enough experience in consulting working with large companies. (This was a bit of a shock but whatever.)

With Google, I never got past the first round. I felt very good with my solution coding in a Google Doc, but, they had wanted me to implement the Python bisect_left function. Instead I just used it to solve the problem.

At Amazon I made it onsite, but again, I failed to whiteboard a hashing function to their satisfaction. They told me it could have been overlooked if my architecture skills were stronger. They did complement me highly on my communication skills, which I appreciated. (I had worked for two weeks rewriting my accomplishments journal using the STAR[1] format.)

Target (where I work now), was completely different. I was given a choice of real-world-like problems to solve and a couple weeks to code. Two were pretty heavily algorithm/math-focused but the third was right up my alley -- implement a microservice backed by a data source and a different (potentially flaky) service. I took my time, wrote code I'm proud of, deployed it on Google Cloud, and explained my solution in detail to a Principal Engineer. There were still personality and experience questions (and I think also some algorithm questions) but nothing like my other experiences. It felt much more grounded in reality. Are you a solid developer, good communicator, and good fit for the company. In the end I didn't get the exact position I applied for but I'm still extremely happy.

My takeaways:

1. Maintaining an accomplishments journal as more beneficial than I could ever imagine. I write down everything I'm proud of - when I'm proud of it even if it seems minor. I can always delete it later. Also, the STAR format is actually really good.

2. Don't stagnate in learning. Technology and methodologies are changing all the time. I don't follow every fad or code in my spare time but I feel strongly taking some time periodically to maintain a level of expertise is a good investment.

3. Knowing my strengths and weaknesses really helped me focus while preparing for my interviews.

4. Learning from interviews and maintaining confidence was big for me. I took notes immediately after each interview of what I wanted to work on. I asked for as much feedback as I could get. These notes made it back to my journals and are things I'll refresh time-to-time because I know nothing is a given. Who knows what I'll want in another 15 years.

[1] https://en.wikipedia.org/wiki/Situation,_task,_action,_resul...

Re: Hiring Without Whiteboards

#334

The issue with LeetCode style interview is that almost EVERYONE can solve those questions after studying a couple weeks/months. The only thing that LeetCode questions predict is if the candidate has been training for LeetCode questions. The fact that Google, Facebook etc still use it as a gatekeeping mechanism makes me believe they want to find cogs that will specifically spend hours studying for it. Making sure that…

Right but in some ways this is what they need. Someone who can stare at computer science material, that is probably boring, for long periods of time. Someone who has a good memory for details, can remember routines. Can "solve" problems that have been solved before by applying theory. Someone who is willing to follow the rules and go through the process.

Remembering the solution to a problem isn't the same as solving it. Testing if people can regurgitate solutions is at best pointless.

Re: Hiring Without Whiteboards

#335
I interviewed with one of the companies on that list a few years back (noredink). They gave a timed hackerrank style coding question as round one (so I guess technically not a whiteboard). I passed that, then I had an interview with an actual person.

He asked me vague question, like what is architecture, I started to reply with what design tradeoffs I made on the app I was working on. He literally laughed at me, and said that is not architecture. I was shocked that someone would laugh at a candidate but said ok, what does architecture mean to you? He responded, I ask the questions here not you. I immediately ended the interview. Worst interview I have ever had. Every time I see that company brought up, I think back to that experience.

Re: Hiring Without Whiteboards

#336
post #308

Earlier quoted context omitted.

The best programmers i've worked with don't have degrees in computer science, or anything like that. Metallurgy, civil engineering, mathematics. On the other hand, i've worked with plenty of people with CS degrees from respectable universities who were useless. A degree is not anything like a certificate, and universities simply aren't in the business of actually deeming anyone suitable to hold any software engineeri…

BTW, another thing: are you saying that computer science departments are not deemed to properly accredit people in computer science knowledge...? But no-name low-ranking SW engineers in a dim-lit meeting room in front of a whiteboard are good judges of CS knowledge?

I am 100% saying that, yes.

Re: Hiring Without Whiteboards

#337
post #308

Earlier quoted context omitted.

The best programmers i've worked with don't have degrees in computer science, or anything like that. Metallurgy, civil engineering, mathematics. On the other hand, i've worked with plenty of people with CS degrees from respectable universities who were useless. A degree is not anything like a certificate, and universities simply aren't in the business of actually deeming anyone suitable to hold any software engineeri…

You completely missed the second part of my post: "The whole hiring process could be replaced with a timely renewal of accreditation." The accreditation would be available to anyone. Just like anyone can become a lawyer in Japan for example. You don't need to hold any diploma for that. Although it might increase your chances to get accredited if you have formal education.

Fair enough, that does address the point about hiring seniors.

But if universities can't currently usefully certify people for fundamental development ability, after having them on campus for years, i don't see how they'd be able to accredit seniors for the more complex skills they need.

Re: Hiring Without Whiteboards

#338
post #336

Earlier quoted context omitted.

BTW, another thing: are you saying that computer science departments are not deemed to properly accredit people in computer science knowledge...? But no-name low-ranking SW engineers in a dim-lit meeting room in front of a whiteboard are good judges of CS knowledge?

I am 100% saying that, yes.

You just dismissed one cornerstone of modern civilization. Namely higher education. Good job I guess?

Re: Hiring Without Whiteboards

#339

I am starting to think the interview is a waste of time. Sure, you want to make sure the person is more-or-less who they claim to be on the surface, but you will never really understand their capability for reasoning with your problems until they are working in your process. One of my earlier jobs dealing with code involved a very brief interview (no whiteboard involved) followed by a 6 month contract offer. The deal…

We already have this extended trial period in tech, it’s called an internship, and responsible companies pay interns. Some internships come through university co-op programs, some through organizations that set this up for people following non-traditional career paths, and some companies “roll their own.”

But these positions are overwhelmingly for people breaking into the field. They have much to gain, and very little to lose by working for a company for three months with an uncertain expectation of a full-time job.

Now consider hiring an experienced worker who is out of a job. If Alice offers them a contract with the company having an option to turn it into full-time, while Bob offers them full-time work with the understanding that a major screw-up would lead to dismissal during a probationary period, Bob’s offer is much lower risk.

Finally, consider an experienced worker with a job. For a non-hypothetical example, they’re working at a famous name, with options, and a YC startup that has grown to 200 employEes recruits them.

It’s going to be very difficult to get them to walk away from guaranteed employment that feeds their children, for a temporary gig with no equity participation And the understanding that it’s an extended job interview.

—-

The above focuses on the candidate’s risk/reward calculation. What about the company?

Well, the least experienced person has the greatest uncertainty. They might be very smart, but unable to work well with people. How would we know without giving them temporary work with people?

The most experienced person has the least overall uncertainty. They “brought the receipts.” Without arguing about how they should be interviewed/tested, if they aren’t a completely toxic person, if they have a non-fatal weakness that pops up, it can probably be managed to be fixed, or accommodated.

The employer’s risk goes down as the candidate’s experience goes up. Sure, it would be a bed of roses if the company could hire senior people on a one-year contract and see how all the intangibles work out, but that usually isn’t necessary, and it’s not going to happen often enough to operationalize that as part of the process.

—-

TL;DR:

There is no one-size-fits-all approach that fits all levels of experience, and also scales to large numbers of hires, and also is repeatable.

But the kernel of what you suggest works well for the sweet-spot of high-uncertainty and low risk to the candidate.

Re: Hiring Without Whiteboards

#340

One of the most telling questions I ask when interviewing is “what was your favorite or most complicated project you’ve worked on and how did you solve the problems you encountered?” I don’t need the interviewee to show me a perfect implementation of a red/black tree. Hell, I don’t remember it. But I want to know what they found challenging and how they went about solving it. Often times they will give me all the tec…

You're selecting for candidates that either have the kind of memory that lets them recollect those experiences on demand, or can fabulate it. Once word gets out about your interview process candidates will just prepare something ahead of time, as they do for the HR interview already.

What was the last interesting project you personally worked on and what were the challenges with it? What technology did you use to solve them?

I mean if you literally can’t remember anything of what you’ve worked on ever, no I don’t think you’d be a good hire. And also this part is surprisingly hard to bullshit. You can say “well I worked on an eCommerce site and it was hard because we had a lot of visitors” isn’t a full answer. If that’s as much as you can give me, no I don’t believe you contributed much to that project. Maybe I’m wrong and you are brilliant and just can’t remember, but it’s a risk of false negatives that I think most employers will find acceptable. But: “It was hard because we had a very complicated system for determining the final price of the whole cart because of discounts offered if you bought certain pairs of products together. I didn’t implement that system and we had plans to eventually rewrite it but in the meantime we started calculating the prices in our task system instead of during the web requests. It reduced web server load and made adding things to the cart feel faster.” Me: “OK that sounds neat but how did you prevent race conditions? Say while the first calculation was running the customer added a second item that triggered another calculation? What if the first task finished after the second?” Then: “Ah yes I recognized that it would be a problem when writing that code. At first I tried using a lock using Redis for the cart but that just made the tasks serial and the whole thing took longer. Plus if a task failed or was interrupted it could cause issues. So instead I just put the latest task ID onto the cart object in Postgres so I always knew which the latest task was. When a task finished and wanted to update the price first it would lock that cart with the Redis lock, then check if the ID still matched its own, then update and unlock.”

The above tells me how they think and what they think of. If I’m not getting enough technical detail out of them I will ask stuff like “what Redis primitive did you use to create the lock?” But usually the interviewee will go into lots of technical detail all on their own.

Post reply on HN