Live data from Hacker News

A Method I’ve Used to Eliminate Bad Tech Hires

mattermark.com

321–330 of 517 posts

Re: A Method I’ve Used to Eliminate Bad Tech Hires

#321

Earlier quoted context omitted.

Sounds like I'm completely the opposite of you! I'm fine with someone sitting next to me - I love pair programming. But cutting off internet access means no StackOverflow, no online documentation. The test should be very similar to normal working conditions.

Why would you need Stack Overflow ? Seriously, is the ability to copy/query from Stack Overflow expected from 'programmers' these days ?!

StackOverflow often provides an answer to a specific trivial question faster then going through the docs. There is no point to memorize or read plenty of docs for trivial things such as 'sort array of objects by key', etc. I see no problem with this at all.

Re: A Method I’ve Used to Eliminate Bad Tech Hires

#323
post #122

Earlier quoted context omitted.

Do you not use frameworks or anything? CoC (Convention Over Configuration) solves most of the problem for you, since it's basically CRUD, and that is boilerplate stuff in pretty much any language.

Of course the task should be a test of the stuff you'll be doing on the job. If the job is to create quick websites without a whole lot of complexity for lots of clients, this would be an apt test. I'd fail that miserably and probably not like the job anyway. If the job involves working on more complex backend systems, then have the candidate write an async messaging system or DB storage system from scratch. I'd ace…

Maybe we're just very different. It would only take me minutes to whip up a few Django models, a few CRUD views and a Bootstrap frontend, but I've never needed to write a messaging system or DB storage from scratch (there are dozens of these off-the-shelf).

That having been said, most of my value is writing sane, readable, cohesive code that can easily be extended years later, with a minimum of refactoring. That's what has been most valuable to the businesses I've worked with, and employers love the fact that my team is the one with the lowest implementation times for new features.

Re: A Method I’ve Used to Eliminate Bad Tech Hires

#324

Earlier quoted context omitted.

This isn't a viable approach for much of the hiring pool, as a majority of working engineers have contracts which explicitly forbid work for contract for other employers. As such, if you hire any of those, you're hiring somebody with a proven willingness to ignore their contract, which is a strong anti-pattern.

I don't understand the paid part at all. If I'm working full time, $200 isn't going to swing me one way or the other on deciding if I want to do your homework assignment. And if you come up with a ten-hour problem, then we're talking more of a chunk of cash, but you're also asking me to burn a lot of free time. I'd much rather travel and meet you in person and do stuff there, but if you don't have the budget for it,…

>> but you're also asking me to burn a lot of free time.

I don't understand why you think improving your employment situation wouldn't be hard work.

Re: A Method I’ve Used to Eliminate Bad Tech Hires

#325
post #5

Does anyone have experience with this style of interview from the candidate side of the equation? I want to move to this style of hiring; however, I fear that because it's against the grain I may miss out on good candidates. Is that unfounded?

I do from both sides, albeit without being paid to do the exercise. Take-home exercises are great. When I was looking for a job last year, I liked that it was something simple and low-pressure (compared to typical coding-interview practice) which approximated how programmers actually work . It was OK to look something up in the documentation if I didn't have an API memorized off the top of my head. It was OK to chang…

I want to second that, with the caveat that, if the exercise is unpaid, I am much less inclined to do it (mainly because I am too busy with paid work to take on more, especially unpaid).

I've interviewed with companies that gave all kinds of exercises. I have no problem with take-home exercises, if they're implemented like the article suggests. A few times I've gotten "do this exercise and we can maybe pay you a bit for your time", followed by them never paying and me never asking. If you decide to pay someone for exercising, tell them how much beforehand, and pay them as soon as they hand it in.

The best interviewing experiences have been with paid onsites for companies, even if I didn't end up getting hired in the end (I got to meet the team, work with them, they took me out to dinner, etc, it was nice).

Re: A Method I’ve Used to Eliminate Bad Tech Hires

#326
The place I used to work had actually tried something like this, but it completely fell apart, and I imagine when I tell this story you'll realise why.

One guy came to us from a recruiter highly-recommended. He had a few years experience, but he was widely respected online via his community contributions. He was also out of a job due to redundancies. It was enough to get him an interview, and he could talk well, so my bosses got the dev manager to set up some basic problems on a client website to solve.

He seemed like a nice guy, and he had a lot of questions, which was a good thing. He had a nice chat with some guys over lunch, telling them that he'd been unemployed for several months, and he was down to his last savings. He was able to fix the problem purely through looking on some forums for the answer, and that answer helped him fix the problem. The dev manager was happy, and the PM's were happy. The devs that worked with him were brought into a room to see his solution, and everyone in there said he should be hired. We had a new dev!

He was instantly given a project from the backlog, which was billed out, and would take around six months. He clearly knew what he was doing, so he was left to his own devices. To cut a long story short, the code he was writing was absolutely shocking, and he'd engineered a solution you'd need a PhD to understand. He was also finishing tasks really quickly, but they were bounced right back to him because his code was full of bugs. He stayed with the company for a while longer, but was ultimately let go. That project went over budget by six figures. It turned out that he was let go from his last two places for similar reasons. He was a junior developer that believed himself to be senior, and as such he disregarded any advice from anyone but managers. He had claimed open source contributions, but he was widely considered because he'd made thousands of posts on an open-source project forum, and due to their community contribution rules these posts deemed him a candidate for MVP. Despite thousands of posts, he'd never really solved a problem for anyone.

I looked through the code he had written during his trial, and it was largely the same mess, but obviously smaller and self-contained. It wasn't an optimal solution, and he'd written 500 lines of code for what should be a 20 liner. The dev manager used to be a programmer, but hadn't written code in a while, and didn't see a huge problem with it. When the rest of the devs were asked about it, they all said that they thought his code was messy/crazy, but the managers wanted him, and the guy really needed a job, so they said yes.

I'm not saying that this solution isn't a good one. If you can do it, I'd argue that it's the best way for a typical company to hire a developer. What I would add is the following:

1. Management should not publicly offer their opinion on a candidate before technical advice is given. If the managers weren't praising him, our devs might have had the confidence to say no.

2. Any technical test should be fully QA'd before a "Yes/No" is given. You're not just looking for someone that can write code. You're looking for someone with domain knowledge of your tool-set that can offer solutions to problems. If you're shown a bunch of code with little context. Funny enough, the code that he submitted was actually fixed by another dev on the following Monday.

3. Make sure they're not working on something that actually needs to be delivered in the next week. This guy was brought into the office on a weekday because he was unemployed, but it turns out most of the pressure for this was from a PM who said that the problem he needed to work on was actually required in that sprint.

Re: A Method I’ve Used to Eliminate Bad Tech Hires

#327

Earlier quoted context omitted.

I don't care about getting paid. I don't care if I am doing it at home or in the interviewer's premises. Don't let me connect to internet. I'll also leave my phone with you just to make sure I don't have access to the internet. I don't mind taking the time away from current employment to go through the process. BUT PLEASE LEAVE ME ALONE THOUGH WHILE I AM AT IT. FOR GOD'S SAKE DON"T SIT NEXT TO ME AND TALK TO ME OR EX…

Sounds like I'm completely the opposite of you! I'm fine with someone sitting next to me - I love pair programming. But cutting off internet access means no StackOverflow, no online documentation. The test should be very similar to normal working conditions.

'normal conditions' vary widely, normalisation to a lowest common denominator allows for easier comparison.

The other extreme end is the young students assumption, "you don't need to know everything, just where you can find it", but the ammount of stuff I have to look up repeatedly increases exponentially with, eg, every wiki-page I read and that just takes too long to the point of impossibility.

Re: A Method I’ve Used to Eliminate Bad Tech Hires

#328
post #96

Earlier quoted context omitted.

This isn't a viable approach for much of the hiring pool, as a majority of working engineers have contracts which explicitly forbid work for contract for other employers. As such, if you hire any of those, you're hiring somebody with a proven willingness to ignore their contract, which is a strong anti-pattern.

Or a $200 donation to their fave charity

That is a really good idea.

Re: A Method I’ve Used to Eliminate Bad Tech Hires

#329
post #110

Love the idea of paying people. That's great. However, consider the perspective of someone who already has a job in the industry. If every company did this, I wouldn't be able to interview at more than one per week. Not only that, but the Friday and Monday onsites mean I miss work on TWO separate days. This would be a non-starter for me if I had any decent pool of interest from other companies, although it's great fo…

I feel like it's in the best interest of the employer to leave the choice of tools fairly open and see what the potential employee elects to use. For the example given in the article (a basic web application), I'd be very interested in whether the interviewee decides to go with a heavy stack, does it completely in vanilla JS, or something in-between.

I wonder about this. I'm pretty new to js frameworks and I see the advantage when things need to scale or get very complex, and I get that companies use these things. But for a simple assignment like this, is it better to use vanilla js and maybe handlebars, or "show off" that you can implement all the routes and whatnot in Angular, even though that's overkill? Or maybe the interviewee's justification of their choice teaches you that they understand the trade offs.

Re: A Method I’ve Used to Eliminate Bad Tech Hires

#330
I think one flaw is that everything happens over the weekend meaning the developer has Friday to understand everything and then be ready for Monday. Personally, I don't know half the issues I might run into when I first start a new project, and if they expect me to just "make assumptions" the solution I end up with could be miles from what the wish for (both in direction and size). If it was Monday to Friday (or Monday to Monday), there's a chance for me to ask questions, get smarter and iterate on the solution - same as I would if I was actually working.
Post reply on HN