12 ms·
I will not hack on your codebase for free in an interview
- staticelf 13y agoAfter reading on that page and coming back, I felt a bit blind. But I agree with the post. Very well written.
- stinkytaco 13y agoBoth of the posts on that blog just read as sort of bitter and sad to me. I'm sorry you can't find a job, dude, but maybe your anger management is getting in the way.
- showsover 13y agoAgreed. The author sounds a bit agressive. Perhaps it would have gone better to politely explain why he could not / would not want to work an entire day for free. Also, an entire day? Since when are tests that long?
- jrs235 13y agoI understand where he's coming from but he comes off as very aggressive. He could have made it passive aggressive though... Did he have to sign over his IP rights before working on it? He could have worked on it and got a feel for things. If he liked the code and company and salary negotiations no harm done. If not, and he wishes to be passive aggressive argue that they owe him money for IP or he'll sue for copy right infringement. Company's that do this walk a fine legal line. I like to see and understand a companies risk assessment, mitigation, and contigency planning...
- tbrake 13y agoIf the author was really being asked to implement features in a codebase that were expected to go live at end of day that's just exploitative and they have every right to be upset at being asked to do that for free.
- cpayne 13y agoBut who offers to do a technical test for the entire day? For me, any interview going longer than an hour has some serious issues...
- VLM 13y agoCompare to some actual technical tests. A CCIE test has varied thru the ages but seems to have stabilized at an hour. I have no idea what an entry level dotcom would need with someone operating at that level, but it probably happens. The problem is at a CCIE lab test you're being evaluated by people more or less as good as you, but your average dotcom will be hiring you because you know more than them in a specific area not because they're smarter than you and they need to staff a team of underlings. probably. Maybe A / B teams or rotating pager duty with another CCIE. Maybe. Look into the length of an oral PHD thesis defense. That's usually not a full day. I would agree that in comparison to existing standards a full day is way too long.
- danielweber 13y agoThose are once-off tests. I didn't have to take an SAT for every college I applied to 5 million years ago, but I took one, and all the schools used the test. If I'm looking at three places and each of them want me to sacrifice a day for the interview, that's a lot of my time, especially if I am currently employed.
- VLM 13y agoshould read: CCIE test .. one day. Same length as the pair programming exercise.
- hnriot 13y agoThis guy is just lashing out because he can't find a job - personally I don't believe him about his interview code being released at the end of the day - that sounds much like the interviewer was trying to create a little pressure to assess how he performs under those conditions. working during an interview isn't "for free" - both the interviewers and the interviewee are both taking a considerable cost in time which is a contract entered into by both parties for the best interest of both. The company spends a day also. I see this from the other side far more often. Candidates that come in that claim to be able to code and yet when put on the spot can't do much of anything, wasting huge amounts of time and money. When I fly someone cross-country for an interview I don't go ranting online that I wasted that money. I'm not sorry he can't find a job, he needs to grow up and stop whining and grok how this stuff actually works.
- king_jester 13y agoHow dare this guy get angry about being asked to work for free for someone else's profit.
- stinkytaco 13y agoThen politely say "I don't think this is appropriate, but thanks for the opportunity." Setting up a blog that so far is exclusively for complaining about interviews seems a bit much.
- berntb 13y agoPersonally, I'd pay money to see the real code before considering a job offer... :-)
- informatimago 13y agoOn the other hand, the pingpong table is probably enough hint.
- _jb 13y agoI have to disagree there. A workplace that emphasis on fun at work does not imply bad code quality, nor does it imply good code either. Not sure what the fuss is about ping pong.
- alisnic 13y agowell, at least they didn't give you puzzles
- mschuster91 13y agoHey, I'd take the offer - you get to see if the coding style and the procedures used are even remotely what you expect. I personally would never join a place still using CVS for source code management, even SVN is something I'd like to have a night of good sleep before accepting. Same for not having proper bug tracker systems. Edit: Also, as the introduction to How Stuff Works will likely be done by a dev team member, this presents you with the ability to ask the dev guys how the job really is, and not what a clueless HR idiot tries to sell you.
- druidsbane 13y agoThese are easy things to ask directly without working for free ;)
- mschuster91 13y agoIn most cases (distinct HR department) the HR guy doing the interview will have no idea what processes the IT department uses. Worse case, the HR guy is actually a decent IT guy (so that the IT-related questions in the interview are actually fair), but he has multiple different IT departments which each use different operations policies so he can't answer your detail question. Happens especially in bigger companies or, as I experienced, in government.
- kabdib 13y agoA dummy project is your best bet. It provides a nice stable fixture from which you can gather repeatable data, and you can tweak it over time as you discover flaws in it. If you're already employed, you're probably taking a day of vacation or sick time. So you're being paid. On the other hand, you're losing a day of vacation or sick time. This has been true for years and years (but that doesn't make it right). Frankly I would seriously worry about trade secret exposure, and any restraint against "moonlighting" or competition by your current employer (some employers forbid working on open source as well). Working on live code puts both parties at risk here. There are indeed companies where, if I had worked on their live code, I would never have worked there (one company was where I learned the phrase "train wreck").
- 13y ago
- wldlyinaccurate 13y agoYou know what? I wish companies let me play with their codebase in an interview. At least then I could see how much truth there is to all the "yeah we totally have a great automated test suite and build process" I get told during interviews. A whole day is unreasonable, but I'd jump at the chance to do what TFA describes as "free work" for an hour or so.
- leokun 13y agoI wish I could have gone back in time to look at a codebase before saying yes to a job. I wouldn't have taken it had I seen it.
- rrich 13y agoI would hate to find myself in a situation like that, but bad code isn't the only thing to look out for. I would dread finding out 80% of their code came from open source and that they made it a point to not contribute the changes back to the community. This would really rile my feathers. Particularly if they asked applicants about their open source contributions.
- RogerL 13y agoThe truth of this statement makes me weep inside. Jump at the chance to look at the codebase. A whole day coding, I get the concern there, but yes, otherwise, I urge you a thousand times, look at the codebase.
- peteretep 13y agoFor bonus points: can they provide instructions for you that allow you to go from zero to working dev-environment within a day?
- nraynaud 13y agoAt my last company, we gave a toy test outside the codebase for code production skills (basically a skeleton and some unit test to make green) and a simple task (changing a color, swapping an icon etc.) inside the production code for the navigation and orientation skills. A secondary target was that the candidate had seen the real production code in the real IDE, with a future co-worker next to him before accepting the job. We would hog the candidate's time for half a day, but it was not half a day of production for us, it was also a lengthy team lunch at a restaurant, and a lot of talk.
- awjr 13y agoI can see how he would be annoyed to do a day's work, however I would potentially have compromised on an hour or two. I have discussed , in detail, solutions to a company's technical issues as part of the interview process. The interviewer may also have had no other way that they felt they could evaluate a candidate effectively. However in defence of the OP, if somebody asked me to work with them for a full day I would also want paying for my time.
- johnchristopher 13y agoI do not fully understand some of the negative comments from HN in that case. If the same story had happened to a graphic designer then most would agree,as usual in that case, that you have to set limits and not work for free "just to see what you can do".
- eli 13y agoWell, it actually is different comparing a freelance graphic designer to a fulltime developer.
- eshvk 13y ago> If the same story had happened to a graphic designer then most would agree,as usual in that case, that you have to set limits and not work for free "just to see what you can do". On the flip side, literally every interesting answer that you give folks in an interview process could potentially be considered to be free work. I used to work on recommendation systems. Say, I go interview at another company in the same space, literally any potential what-if machine learning problem can eventually get into the situation where it goes off text book fairly quickly. At that point, any information that I talk about has two values: 1) it helps the people understand that I can do this shit. 2) it also helps them maybe solve the problem based on my experiences from my previous job. In the case of 2), they are essentially getting free work. How do you resolve such a situation? Should we have an industry wide standard where people pay you a market rate for every hour you interview?
- lucasnemeth 13y agohttp://dilbert.com/strips/comic/2010-04-02/ http://dilbert.com/strips/comic/2010-04-02/
- scotth 13y agoIsn't that what a portfolio is for?
- throwaway0094 13y agoThat's fine. We'll try to evaluate your abilities in some other way, with the initial impression that you're a prick. :-/ A day is a pretty unreasonable request. Maybe an hour would be more reasonable?
- err4nt 13y agoI have heard that large publishers, like Time magazine, will commission artists to create covers for multiple stories. They may have up to 5 tentative cover designs for any publication, then they are free to choose (right up until press time) which fully-designed cover they wish to run. The thing is - they PAY for each cover they commission whether they use it or not. ---- My career began in graphic design. Many people try to get you to submit work and only the winner gets paid (or paid in full). I've had other 'take home assignments' or interview tests that they tell me to block off half a day so they can 'see my work' to 'tell if I'm a good fit'. Don't be fooled by any of it - good work != good workers, and it's much more valuable that they see how you work on their team than how well you perform in skills that can be taught. I quickly made a simple rule: I do the work; I get paid. @Hiring managers: If you want to see a sample of my work, and my past portfolio isn't good enough for you - pay me for a small freelance project before offering me a contract. It's low-risk, everybody gets paid and is happy, and if you don't like what you see, don't give me more work. It's very simple. Anything less is criminal (where I live). @Devs: Only have two prices: Pro, and Pro Bono. Nothing in-between. Pro means there's no such thing as family discount, or friend discount, or a 'deal' on things. If the person knows you and wants you to be successful in life the last thing they'll ask you to do is work for less profit. See those selfish people for what they are. You should be happy to pay full price for anything, and it just makes it better if you're able to support somebody you know while paying full price. Pro bono means it's $0.00. You should always have at least one project on your table that you are donating your time back to the community. Ever use Firefox or Chrome? Linux? OS X? Android? You already understand the benefits of pro bono work in the open-source software community, but as a worker maybe there are ways you can give back to the community you live in as well. Find people who need your skill set and make a habit of learning new things while helping others. If you don't do any pro bono work, it's easy to get caught in the 'discount delusion' and you end up trying to give up all your profit instead. Do pro bono, and then insist on the full (fair) price for everything else.
- eshvk 13y agoSo I have gathered that these are some of the populations of developers: 1. There is a class of people who will not do algorithmic interviews, who think they are puzzles and not exactly what a programmer does on a day to day basis. 2. There is a class of people who think doing homework assignments makes no sense, especially if you have a full time job and this eats into your evenings. 3. There is another class of programmers who won't work on coding projects because you may potentially be exploited. For a group of people with highly specialized skills (who get underpaid when compared to lawyers and doctors), we do tend to complain a lot.
- yummyfajitas 13y agoDon't forget the 4'th group, the class of programmers who refuse to put code on github. I've gathered there is a population of "developers" who refuse to demonstrate the ability to code at any stage of the interview process. (The OP is definitely not part of that crowd, given his willingness to submit a pull req to some open source project.)
- static_typed 13y agoReally? I am required to have an account with Github, to prove something? In the real world, some of us work on highly proprietary code bases, where putting any code up online could expose the risk of future lawsuits or prosecutions, certainly this has already happened to individuals in the industry. Thankfully in the real world there are some sensible and mature interviewers who are able to look beyond the heinous crime of not having a Github presence.
- yummyfajitas 13y agoPeople who can't easily demonstrate their skills are always at a disadvantage relative to people who can. For every one person who is great but can't publicize any of the good code they write, there are a lot of people who simply suck. Differentiating between them is expensive (read: hours interviewing the good candidate, many more hours interviewing bad candidates) which is why the people with a good github/bitbucket/ftp server full of code are at the top of my list. If they all bomb the interview, maybe I'll move down the list to the people who's skills are unknown. This simple reality is why one should demand more money from employers who impose restrictions on what one does outside of work.
- nc 13y agoAnything more than an hour or two should be paid for. That's been my experience interviewing across London and SF. Completely agree with the author, being asked to create potentially production-izable work is ethically wrong. On the flip side, you learn a ton about how the engineering culture by looking at their codebase.
- ygra 13y agoI wonder how the copyright situation would be if you were to write code during your interview that they continue to use. That's before any sort of contract that details what rights the company has to your work (since they cannot take your copyright they usually reserve all other ways of using it). So technically that's still your work and you have full rights to it.
- nc 13y agoIANAL You're right you'd own full rights to your work. That doesn't make a difference though - you'd realistically never sue them.
- tocomment 13y agoA whole day is a little excessive but other wise that's exactly what an interview should be. I'd like nothing better than to see the actual code I'd be working with and see how I work together with others on the team. In fact I once passed on a job offer because they wouldn't let me see the code until I accepted.
- hoopism 13y agoPerhaps the interviewer could work on the job you had to take PTO just to go to the interview. Then you can assess his skills and just say you were WFH. Fair trade?
- static_typed 13y agoFirstly, I think they wanted to 'assess' not 'asses', well at least I hope so (spell checking is not optional; even on a blog). Now, I agree with the blog post: if you want me to code at interview it has to be open source, pseudocode or a toy library. Not your production app. I don't want to see you proprietary code till I am hired in case some moron on your staff later goes on a spree suing people on an open source project where the code looks 'similar' to what they may have seen in your code-for-free cheapskate interview process.
- ctz 13y agoI don't see what the problem is: it's clearly not work for hire, and he doesn't mention any explicit copyright assignment. At the end of the day the candidate retains copyright, and the company has no right to the changes. (Of course, the idea of a day-long technical interview exercise is truly insane.)
- 6d0debc071 13y agoThe code was going out at the end of the day. Whether they had the copyright or not, they clearly intended to use it. What's he going to do; take them to court over it?
- jerven 13y agoI would, and if it wasn't me my current employer might...
- iamthepieman 13y agoI understand the reluctance to work on the production code for an entire day. But like others have commented, I would rather do that and get a chance to see their end-to-end process rather than coming in on the first day and finding their dev environment is a complete mess. I've come in as the new guy on a project and been greeted with a zip file of the code base (already out of date). It was complete with hard links to the main developers personal test database running on his machine.
- jawns 13y agoSo here's the problem: 1) A great way to assess your technical chops is to watch you code. 2) A great way to see if you can do the actual work that you'll be expected to do on a day-to-day basis is to work on a real-world task on the team's actual codebase. 3) If you have what it takes, then it's crappy to have you "work for free" for a day. But if, after the day's over, it's clear that you don't have what it takes ... then have you really "worked for free"? (Remember, freelancers don't get paid unless they deliver.) Here are some ways to address this problem: 1) Do paired programming on the actual codebase -- but on an old problem, the solution to which has already been implemented in production. This makes it clearer that the exercise is merely to assess your skills and not to get free labor out of you. 2) Pay all in-person interviews for their time. Once they've passed the phone screen and whatever other preliminary hurdles you've set up, you should feel pretty good that they're not just wasting your time. So compensate them. 3) If you don't have the budget to do #2, which -- let's face it -- is uncommon, then perhaps you could offer a signing bonus to anyone you end up hiring that essentially repays them for their time.
- josephlord 13y agoRegarding solution (2) it is probably that you should offer to pay for their time. Many people can't accept paid work under their current contracts. Also whatever the plan if the interview is going to be for more than a couple of hours let the interviewee know the rough plan in advance.
- iamthepieman 13y ago4) Do paired programming on an actual feature or problem for an hour or two. Work with your potential team members and discuss the feature, do some rapid prototyping etc. The assumption isn't that your code will be deployed at the end of the day, but that both side will get to see how the other works and you don't waste too much of anyone's time if it's not a good fit.
- VLM 13y ago"perhaps you could offer a signing bonus" Comp time. You wasted a vacation day at your previous employer by "working" here so your official start date is Friday but don't bother coming in until Monday morning. Seems simple enough. Or you come into work on your start date but I'm not giving you any work assignments of any sort for n+1 days where n is whatever is normal (zero?) Or start on Monday but don't bother coming in the following Friday.
- honoredb 13y agoI agree here, but I wonder if it'd be kosher to pair program on an open-source project...that my team totally intends to incorporate into our closed-source product?
- BuildTheRobots 13y agoThe last place I interviewed with set the bar pretty high as far as I was concerned. After a pretty standard interview one afternoon, I got asked if I'd be willing to come back in for a couple of days to see if I got on OK with their current team. They made it extremely clear that as they'd be taking up a couple of my days, they'd pay me pro-rata for them whether I got the job (and chose to take it) or not. If you're interviewing with a company that actually cares about the happiness of their employees, then they tend to make this pretty obvious pretty quickly. I would suggest that the ones who make it obvious are the ones you want to be working for.
- orenmazor 13y agoyou charge $56/hr in a daily rate? O_o
- bulatb 13y agoHigh or low?
- orenmazor 13y agolow... a good rough base for freelancing should be triple whatever the salaried hourly rate equivalent would be (i.e. $80k/year => $40/hr, so you should be charging $120). I do give a break if I'm charging in bulk (i.e. I have a really long term ongoing project with you and we negotiate a different rate).
- ezhil 13y agoToo bad! Interviewees are not guinea pigs! High time that interviewers realize this.
- lucasnemeth 13y agoWell, I've made a interview at a company that asked for pair programming in their codebase, but actually paid for it. Since it was just 2 hours, it was cheap for them, and I didn't felt exploited. I felt it was a great way to get to know the company and discuss real code. I really don't like algorithmic interviews, they normally just test you CS 101 memory under pressure.
- tokenadult 13y agoToo aggressive in tone for what the gripe is here. I wouldn't hire this guy. Several of you long-time participants on Hacker News have noticed various iterations of my FAQ post on company hiring procedures,[1] and if you haven't read that, I invite you to follow the link and read it. Genuine work-sample tests are a GOOD idea in hiring, as most of the comments already here have said. Perhaps a full-day work sample feels too long to most job applicants, compared to a one-hour work sample (but how much would paying each applicant help with that?). There are also intellectual property issues here (but doesn't freedom of contract in most countries allow a way to resolve that issue?). But he doth protest too much, methinks. In any job application situation, the company's concern is "can this applicant really do the job and do it well?" The applicant's concern is "will I really find a good fit in this company and advance my career here?" In general, a work-sample test is a very good idea for answering both kinds of questions, and anyway research shows that a work-sample test is a far more valid hiring procedure than most other hiring procedures that have been tried. Check my FAQ link for research citations on that topic. [1] https://news.ycombinator.com/item?id=5227923 https://news.ycombinator.com/item?id=5227923 P.S. Yes, I intend to touch up my FAQ draft some more and then post it to my personal website. I just bookmarked the blog post kindly submitted here as another resource to refer to as I update my FAQ. AFTER EDIT: I'd be happy to discuss with readers who disagree with this comment what the nature of your disagreement is. That helps me learn to make the FAQ better for its next posting on my website.
- RyanZAG 13y agoSurely the disagreement should be obvious? If they interview 50 candidates and get each candidate to do a free day of work, they're exploiting the candidates and the market. As others have said, there is no reason not to let the candidate work on related OSS projects or on already solved tasks. Adding new features to a code base for free is not on. This is like hiring labor for your bridge building company, getting 50 people and having them drag rocks around all day and then not paying them. Feels close to illegal.
- nevinera 13y agoAs we're all aware, adding extra developers to a project will cause it to finish sooner, so adding dozens of them for one day each should get your product out the door weeks ahead of schedule. Right? Right??
- epaga 13y agoThis is one of those articles where I more or less agree with the author's content but absolutely detest the tone and style in which he makes his point. He could have easily made the same point with far more calm and eloquence - why the anger and the tone that at least to me comes across as extremely arrogant?
- mburst 13y agoI had a similar thing happen to me when I was interviewing at companies right before graduating. One of the companies sounded like an awesome opportunity. They were willing to fly me out to San Francisco to interview me. However, the interview consisted of me doing 3 days of pair programming on their application. After the initial shock of excitement I realized the cost to fly me out there was much cheaper than they could hire a dev for. I actually thought it was a pretty ingenious way for for a startup to get cheap work while raising money. As some people have already suggested I think there are some good ways to avoid having to do this while still getting an idea for the candidate. You can offer to pay for their time, you can have them reimplement a feature you already have, or as the article suggests work on an open source project that one of the parties are familiar with.
- 6d0debc071 13y ago> LD (frustrated): "But I need these features out in the field today. Anyway, I don't see what the problem is, it's only a day's worth of work." "This is meant to be to assess my competence. They're gambling your deadline on either being extremely sure that I am going to be good at this job, in which case they're trying to get a free day's work out of me. Or they're taking a worse gamble on someone they're not really sure of, in which case they have no respect for you and by extension their workers. Either way, you shouldn't be using work that actually matters to test new entrants; in the former case it exploits me, in the latter case it abuses you. So, given it's clear I'm not a good cultural fit to this company, I'm going to have to decline."
- mcv 13y agoWhen they say "I need these features out in the field today", my response would be: "shall we reschedule the interview then?" Don't waste your time on an interview when you've got a tight deadline. Make some time for the interviewee.
- ronaldx 13y agoI agree with the principle that you should charge a day rate for a day's work. However, I don't agree with the author in this case. For the author, this is an unusually genuine opportunity to see what the work is actually going to be like. If the author feels that compensation for this time is necessary, they ought to confirm the salary would be at a level to cover the time-cost and risk of interviewing. Asking for money up-front is (unfortunately) sending a signal that you need to be compensated early because you expect not to be employed as a result of your work.
- PaulJoslin 13y agoJust looking at his two blog posts, I think that the company's hiring practice worked perfectly and weeded out someone who may be technically competent, but is toxic to the work environment. His tone is aggressive and completely self centred - imagine trying to have a meeting with him where he sticks stubbornly to his opinion, refusing to listen to other opinions and potentially throws tantrums whenever he doesn't get his own way. Secondly, the fact he refuses to pair program with a developer on the existing code base ' to see how he works within a team / on code - suggests that he probably would equally be unlikely to do anything outside of what he is technically being paid for. I'm not saying anyone should work for free, but sometimes you have to help out, whether it's working a bit later or helping during a crunch time. He comes across like he only would want to work on things that interest him, during the hours he's paid and then be out the door. I think the company that was hiring did a good job of filtering him out.
- peteretep 13y ago+1 Part of being a developer is there's going to be some crap I can't shield you from as your manager, despite my best intentions. If I think you are going to suddenly turn barrack-room lawyer on me, or tell me it's not part of your job, or anything other than deal with it professionally and helpfully, you're a poor team fit. And if you understand so little about how programming teams work, and think that you are going to - with no context of the codebase or problem space - significantly improve my Senior Developer's work such that you're worth your contracting day-rate for the interview (and are paranoid to think that the interview is a big scam to get you to work for free) ... you're probably delusional.
- visualcsharp 13y agoIn other words, you're getting upset that I have knowledge (and maybe experience) about how business really works, and to you that's a liability. In other words, you want sheep who "shut up and code." Interviewees have to protect themselves from unscrupulous companies looking to make off with free work. If you don't want to come off as one of those companies then don't make a candidate do a day's worth of free work. That's what the blog author is saying and he's completely in the right. Remind me never to work for you.
- hawkharris 13y agoDuring my recent search for a programming job, two companies gave me tests to assess my technical skills. The first company's test was similar to that which the OP describes. A manager gave me a list of company contacts and asked me to build an interface for sifting through it. It was a boring, tedious task that benefited the company, but wasn't particularly representative of my skills or knowledge. Contrast that with the second firm, which gave me a coding challenge. They gave me a list of prompts, including interesting ones such as "Build your own A.I. algorithm that can interpret poker hands." Not only was the second test more interesting and indicative of my skills, it made me respect the company a lot more. I ended up accepting a job with the second company because their creative interviewing approach made me more excited about their offer.
- yeukhon 13y agoImagine you apply for Google or Facebook, you know, a dream job undergraduates want to be in and they said "dude you can hack on this little ticket with me today and I will show you the codebase." I am sure in this case majority would say "fuck yeah let me see how good your codebase is." Like many have said. One way to find out whether you like to work or not is whether the code looks interesting, how your co-workers work with you and what type of problems they are solving.
- mapleoin 13y agoIt seems everyone has their own opinion on what a tech interview should look like on both sides of the barricades. I think it would be great for companies to advertise the interview process in the job ad. Just three lines on the various steps in the process would help a lot. FWIW, I really like it when I can hack or even see their codebase upfront.
- VLM 13y agoOne missing aspect in the discussion is its pair programming not here's a task see you again in eight hours. I'd grill the heck out of my pair partner. Interviews go both ways and I hope I'd be paired with a real live employee not future supvr. I would probably learn more about company culture from that guy in 5 minutes than I could from management in multiple hours of regular interview. Its worth it to me. I'd also look at it like an intrusion, uh, experiment. How much can I learn about this place in a day. Not being sneaky about it at all. You're going to be exploring the dark corners of the environment once/if you're on the job as a regular employee, so start shining a flashlight in there today. Yeah yeah they said we'd implement feature XYZ and we are doing that but it doesn't mean I don't read the surrounding code and verbally grill mr pair partner about his firewall or DB or caching system or whatever semi-related stuff I can talk about. Thats interesting. I'll trade labor for "interesting" anytime. Its a pair event. Maybe I'm just old but I'm assuming I'd pull off a partnership where I talk about architecture and the pair, if he approves, does the grunt work (and maybe he intentionally sticks errors in to see if I can grunt as well as he can). Yes I know thats not exactly traditional pair programming but then again this isn't pair programming, its an interview of both sides. On the other hand, if their idea of pair programming is some dude micromanages me while I do all the work, I agree with the original author, F that. We just don't have enough detail. It kind of sounds like if I ran into this dude at a bar or a con and we started talking shop about life in the biz, we'd have a fun old time talking and then he'd surprise me by sending me a bill later. If I show up for a short interview at 9am and they demand me sit around till 5pm they better be feeding and hydrating me, and not cheap mcdonalds either. This actually happened to me once, and everyone left happy and well fed and that's exactly how it should be. Maybe I'm a cheap date but I'll "work" for a day for a $200 steakhouse lunch. Not every day, duh, but... Finally "if we decide to hire you, your salary starts today" sounds like a fair deal to me.
- eshvk 13y agoI don't mean to knock on the pair programming model. It works amazingly for some people, there are cults around it disguised as consultancies and I even had fun with a few pair programming exercises. But... does your company actually pair program? If not, how do you know that you are not testing pair programming skills rather than testing whether the person can work on your stuff? For example, when I write code, I write it in iterative drafts. I find that my train of thought breaks when someone points out a trivial piece of syntactically wrong code that I put in there as a filler for stuff that I am going to work on once I have finished iteration 1. I think of it more like solving a math problem where I sketch a picture and then gradually turn it into a sigma/lambda type proof. It is incredibly distracting if someone stops you in the middle of the picture and asks you how this has any connection to the final product.
- acorkery 13y agoI hope the guy who wrote this is 15. http://hownottohireadeveloper.blogspot.co.uk/2013/10/no-im-going-to-test-you.html http://hownottohireadeveloper.blogspot.co.uk/2013/10/no-im-g...
- hoop 13y agoUmm, I WISH all of my past employers let me peak at their codebase, experience their development process, and pair with an employee before asked to accept an offer. FWIW, I did a free "starter project" for my current position and it was completely awesome. Worked with many teams, learned a few codebases, learned the metrics/logging systems, and learned the true size and formation of the production environment. A+++, would interview again.
- rilindo 13y agoThe developer does came across as a prick. The thing is, does the company allow anybody to access the code? Probably not, because that code is very likely proprietary company information that only certain people are allow to view and modify. So from that standpoint, validating the skill set using opensource tools would be the way to go. Having an outsider view and modify internal company code demonstrates poor judgement on the part of the interview, as that code is not her/his to just expose to anybody. I would be wary of even considering that role if interviewer is willing to expose their code without considering the legal and ethical consequences of that action.
- Angostura 13y agoPersonally, if it is a job I'm really interested in I would prefer to show my chops offering some free consultancy on an interesting problem, rather than answer daft hypothetical questions for an hour and a half. But no, I wouldn't do it for a whole day.
- meshko 13y agoAs flawed as the interviews are, whatever you do that makes you filter out a person with an attitude of this type, it is probably working.
- legacy2013 13y agoA company I recently interviewed for handled assessing my technical skills in a way I found acceptable without having to pay me. I was sent a small Requirements document to program a small app that had nothing to do with their application, but would show off my technical chops. I was told to use whatever language and framework I wanted, but it had to be production ready code. I spent a little over half a day working on it and submitted it. During the on site interview I was given an hour to update the application with new requirements, then I went through a Peer Review as if the code was going out to the customer. I thought this was completely fair, as I wasn't doing work for them but they were able to receive a fair assessment of my skills through more than, "Write a recursive function to calculate the factorial of a number" Having an interviewee code on a live code base, whether or not they are being paid, is just a bad idea. They don't know anything about the code or architecture of the project, and aren't as invested in the product as the people actually working for the company are. What happens if the person writes some bad code that works? Do you throw it out? Will it slip through the cracks? What if they change something that was already coded that they don't know breaks something else? Do you not allow them access to the rest of the code base? The questions go on and on, just save yourself the trouble and don't do it. The fake application idea works great
- alkonaut 13y agoA full day is unreasonable for an interview. But "working for free" for a while isn't. Of course they want to see you working on that particular codebase rather than some other code. And even more obviously you want to jump on the opportunity to see the code. An hour or two of pairing is completely reasonable. That said: shipping code written by a person being interviewed is nonsense. Either the person was assigned completely menial tasks which doesn't evaluate their skill at all, or the manager is a complete nutjob that wants to ship features written by someone who has never seen the code before. If the employer can't provide a person to pair with, and says you should spend an entire day coding features to go live immediately, it would actually seem like the employer believes interviews can be used as free labour. That idea is so stupid it is hopefully rare enough that it doesn't even deserve blogging/discussing. There are tons of useless interview procedures that actually deserve discussing.
- rschooley 13y agoPair programming on a company's app is the single easiest way to know what you are getting yourself into. I recently did a full day of this and by the end I understood their whole stack, where the system failed, and managed to find a, "oh shit look at that... that's awful" part of the code. I would take 4 hours in a potential employer's codebase in a heartbeat.
- optimiz3 13y agoIANAL, but any code written by the interviewee is likely not owned by the company, thus exposing the company to serious liability if said code is used in production. Most employment contracts have a "work for hire" clause with respect to copyright assignment. In contrast, most interviewees at most sign an NDA.
- codingdave 13y agoI get his point, but this is the wrong way to express it. For high-pay, high-impact jobs, 8 hours of time to get through the hiring process is not unreasonable. My current job had a few hours of interviews even after they had narrowed the candidate pool down to just myself, to be sure I was a fit for the company culture. VP/C-level positions in large companies will put you through the ringer with multiple days worth of discussions. I would gladly pair program for a day vs. 20 hours of interviews, tests, and other evaluations. One day, get it all done, and get a decision. Sounds great, especially if I had already set my day aside for the interview. So my guess is that aside from the obvious attitude problems, this guy has never held a truly senior level position, because he clearly does not understand the time that goes into hiring. I highly doubt this company had 50 people pair program with them. This guy was probably their final candidate, and probably would have had a job offer by the end of the day if he had chosen to be cooperative.
- stefan_kendall 13y agoDoes work performed in an interview constitute work for hire? I wonder what the copyright implications are in the US.
- trcollinson 13y agoJust a few comments I left on this blog post, maybe someone here will also find interesting or useful: I'm sorry, but I must respectfully disagree on a number of points. I think you make a number of flawed assumptions and miss some great opportunities when you pass up an interview that allows you to work in their code base. 1) Maybe this company was different, but as for me if I bring in an interviewee and say "Let's pair on some code for a day, and try to release a feature" I know up front this will be an up hill battle. Can you really say that you, an interviewee who has never seen the code base, will suddenly make amazing production grade code? I am absolutely sure that if I were to grab one of my other engineers, seasoned in my code base, I would get this task done in half the time. The point is, I am assessing you to see how you work with me, what your attitude is while we pair, what your contribution to the process is, and to a lesser extent how your code looks. Can I get this out of an open source project enhancement, maybe. But I can certainly get this out of my code base and it will cost me more than it will cost you in income. 2) You've missed the opportunity to look at my code base for a day. I can't name the number of times where I have walked into a company after a lovely interview experience and said to myself "I wish I had seen their code base, this is horrible". Your other blog post states you want to "test the company" before you take a job. Test them. 3) I won't discuss how low your day rate is, and how it establishes that you are an inexpensive engineer (that may have been what you were trying to get across) but I will discuss investment in future earnings. In my last few jobs I have received at least a 5 figure signing bonus, and generally a healthy pay raise (this is generally why I move companies). When I sit down to pair for an interview "for free" I don't think of it that way. I think of this as an investment into my future earnings. I am going to get a signing bonus from this "trendy startup, complete with ping pong table". I am going to get a healthy pay raise. It will equal far more than my day rate. You might say "But what if you have to do 5 or 10 of these interviews with companies before you get a job?" I often do! Getting a job is a numbers game. But I am still highly compensated for my time, just not right that moment. It is ok to defer payment. Investments can be quite rewarding. (Not to mention, money isn't everything. There are other reasons you may want to leave to another company. Account for that in your equation). If I interview with 10 companies and they all have me working on their code base, I hope they enjoy the one day of free work. I won't get paid by all of them. But I will not lose a dime of my own income in the end. I will make it back when one of those 10 companies hires me. I understand from this blog that you would rather not be tested and that you would rather not work on a companies code base. But a company that wants to hire you, wants to hand you a pile of cash and a hefty salary and benefits, needs to assess you somehow. You also need to assess them. I think a day of pairing on their code base can easily tell you if you are a fit for them and they are a fit for you. In the case of this interview, maybe they very quickly figured out you are not for them.
- meerita 13y agoWhy they can't foresee this instead making work for free? I mean, you get a technical team who can interview the possible guy, talking code, you can know what's the guys skill level, if you cannot see how good he is in interview without making him do puzzles, work for free, then your team's technical skill is really low.
- S_A_P 13y agoI've noticed a trend as of late with developer blogs. It seems that a bull market for developers has made a bunch of prima donnas of some of these folks. The point made is valid(dont work for free, and the interview process is broken), but seems he also felt the need to include all of the essential holier than thou blog techniques to make this point: - a "mock" conversation that leaves the person in charge flummoxed - use of the word "hipster" using this word is now kind of self parodying... - inferences that he shares the love by contributing to open source - use of the f word to drive the point home. So I came away thinking this guy was a dick and probably difficult to work with, I wouldnt hire this guy even if he was the best developer Ive ever met. That said, yes- the interview process is broken, there needs to be a better way to assess developers in the real world and not resort to trivia and "working for free". I think its been proposed here pretty often that a small short term contract is probably about the best way to be fair to both parties. The developer gets to show off what he/she is capable of, and doesn't have to give away IP for free. The company is protected by not having to make a judgement call based on how he/she answers programming trivia. The team gets to see how this person works and thinks about problems, especially if it is an in person interview.
- tbarbugli 13y agonot hired!
- bsg75 13y ago> we've got some features I want to implement and push live by the end of the day This is not an interview. The interviewer is focused on his "regular" job, not the candidate. Plus, the candidate can't possibly become fluent enough in the company's app/API/codebase to actually accomplish the task in a day. Interfail.
- metaphorm 13y agothis blog post is bad and the author should feel bad.
- matiasb 13y agoPretty common!
- noonespecial 13y agoHint: A really good way to hire is to actually pay candidates as short term consultants and see how they do. It's real work, on your real product, likely for less than you'd spend to "interview" anyway.
- cdata 13y agoOn the one hand, TFA is obviously put off by both the tech stack and the hiring procedure. This suggests to me the possibility of a poor cultural fit, so the outcome is probably for the best. On the other hand, it is reasonable to have a backup plan for situations where someone is adament about not working on your proprietary code for free. Any legal issues aside, as someone familiar with the existing code base, a lead should be able to conceive of a contrived scenario that closely maps to work that will be done on a day to day basis. While I am personally an advocate for contributing to open source projects as part of a company's cultural, that is not something that all companies are okay with, or that all leads see as valuable. Without judging one way or another, this is another factor that should be considered for cultural fit.
- stox 13y agoSilly question: If I hack your code during an interview, don't I own the changes, and derivatives thereof?
- lxa478 13y agoGood lord, does nobody plan before they start hacking away? If someone wanted to watch me write software, they would see a bunch of scribbling on a notepad or whiteboard for most of the time.
- lifeisstillgood 13y ago1. I will hack on my codebase for an interview. Look at my github account and choose say three issues. I will fix one and you can see the pull request. 2. Otherwise, fuck you, hire me. I am available on a day rate for heavens sake. You can throw me a project that will tart up your site, improve your jenkins flow, add 100 test cases. Whatever. This is a massively scalable approach, an the way you should be parcelling out work most of the time.
- stcredzero 13y agoI would love to see your codebase while interviewing. There's no faster way of seeing if you're a competent bunch to work with. Also no faster way of detecting interpersonal and "soft" dysfunctions in your group.
- jerven 13y agoI completely agree with the blog post writer. I have a job, and if I was to work on some other companies code base while still working for the current one, all kinds of copyright issues ensue (Swiss). Having someone, who is not an employee mess around in your codebase before they are hired is a lawsuit waiting to happen. Not worth it, and if you could convince me to come into your office for an interview and this is what awaits me I am leaving in no time. What happens if you don't hire the guy and sell a 100,000 copies with his work product in there? Do you own the copyrights or have a license to it? Probably not, and if it was me coding then my lawyer would have a field day with you and your company. So besides the insanity of not hiring a developer like you hire anyone else by references, reputation and limited work sample tests. Do you think you can tell some lawyer, please work on this case for 8 hours and then I will tell you if you get hired is going to go along with this? He will bill you 4000 chf for the pleasure and so would I. In Europe you have probation periods, i.e. you hire someone and find out that they can't do the work you terminate them on the spot. Is that expensive, relatively yes. But if that happens you already screwed up weeks earlier and it is time to pay the piper. This entire consult to hire, or whole day interviews just seems unacceptably unproductive and ethically as well as legally questionable.
- mcx 13y agoI'm kind of curious, before doing a live coding session or anything like that has anyone used a snippet of code from the codebase and asked the candidate to go through the code and see if the candidate understands it / feels comfortable with their coding style?
- jwatte 13y agoAt end of day: svn revert -r
- ubercore 13y agoWe do like real-world assessment when hiring. We always pay the candidate's contract rate for the hours spent though, and if they don't want to enter that arrangement, we find some open source or other real-world coding exercise that doesn't benefit us. Seems only fair.
- angersock 13y agoJust a weird question that occurred to me in the first few paragraphs... Why is it always a ping-pong table? I don't get it. Pool tables are way more fun.
- swalsh 13y agoPersonally, i'd be okay pair programming on a base. But there's no way I'd do it for a WHOLE DAY. If i'm unemployed... maybe, but if i'm just looking for something different. I'd never have the time to spend a day at an interview. These guys aren't sharing the risk evenly here. There are 3 scenarios. We both like each other, i get hired. I don't like them or they don't like me and I don't get hired. 2 out of the 3 scenarios end in a no hire. They may loose a small amount of productivity, but I loose a day.
- aspensmonster 13y agoAnother article being penalized. On the third page now. I love you, HN algorithm :)
- gruseom 13y agoThe cost of having a team member hand-hold a new person through the code is almost certainly greater than any value the newcomer would add in a day, so if the OP's argument had any merit, he should have been the one paying them.
- greenyoda 13y agoDo you really need to take up an entire day of somebody's time just to see how they code? Is there something that you can see in eight hours of coding with someone that you can't see in one or two hours? Also, if you're going to require full-day interviews from your job candidates, it's not likely that someone who already has a job that they like will be interested in interviewing with your company. And if you're looking for highly qualified, experienced developers, they do already have jobs that your company is trying to lure them away from. You don't want to artificially limit your candidate pool to students and the unemployed.
- army 13y agoI think day-long interviews are fine, and I think real-world work samples are fine, but the combination is pushing it a bit as far as what is fair to ask job applicants to do, unless you're going to have some sort of explicit and upfront agreement about a trial period.
- rkv 13y agoThis is definitely wrong - legally and morally. I have had companies show me snippets of their code base to analyze and work on which is fine. Gives me a better feel about how competent to development team is rather than isolated puzzles and questions.
- QuantumGood 13y agoIf they are really hiring, the interviewee should do it. If he can't sense whether they are really hiring, he shouldn't do it. But it should be preceded by something else first, such as fizzbuzz. And that said, it should be shorter than a day, but still, if they're hiring he's there because he wants the position, and this is an excellent test.
- vpatryshev 13y agoSo you won't see the code until hired? Not very smart, I'm afraid.