Hacker News new | past | comments | ask | show | jobs | submit login
How To Hire Outsourced Developers (donnfelker.com)
120 points by donnfelker on Jan 15, 2014 | hide | past | web | favorite | 77 comments

Is anyone else tired of being assigned homework when applying for jobs? In both this and the author's previous article on hiring, he mentions giving people tasks to complete by a certain deadline as part of the hiring process. For someone that's just starting out as a programmer then maybe that's reasonable, but for those of us that've been in software for years, what's the point?

You wouldn't ask a carpenter to make you a closet before you decide if you want to hire them, you look at the other houses they've created (at least, you should. There's a lot of crappy carpenters out there, and it feels like I've worked with them all). You don't ask your mechanic to change your oil for free, and then MAYBE you'll let them fix your car. So why is this just the status quo for software developers now? I have a job and family, why the hell would I want to spend my free time jumping through hoops for you when you could easily look at all the work I've already done?

I dunno, just my $0.02. I've been asked to do a lot of dumb programming challenges before job interviews, and I'm over it. I'm a professional and my time is valuable, why would I want to waste it figuring out how many ways you can turn a string of numbers into math problems?

/rant. Whew.

Well, for context... This is for hiring a freelancer on oDesk, and he's paying them to do the homework. It seems like a pretty fair way to evaluate a candidate.

If you have a look at his examples, they seem like reasonable questions too; they're not "turning a string of numbers into math problems", they're practical demonstrations of applications of the different technology stacks. If I were hiring a freelancer for a project, I'd probably do something like this with the option of just showing me some past work instead.

I've honestly never hired a carpenter or mechanic for a business before; from what I understand though there's usually a short probation period at the start where they're paid but can be let go summarily. This is the same kind of situation, only it's a shorter period.

SheepSlapper, your most recent post is showing up as dead. Might want to check to see if you're hellbanned.

He's not hellbanned most likely. He used the forbidden "mast##b##ing" word, which will instantly kill a post on HN. For some reason.

> when you could easily look at all the work I've already done?

While I agree with you that homework-style pre-screenings aren't something I like, I think for a lot of people it's hard for prospective employers to look at previous work, since it may be proprietary. Also, this is for a contractor role, and he says he pays their full rate for this homework assignment.

This. After the first 1.5 year I had nothing to show because the products either didn't launch, or were software for companies internal usage. So I would have been happy to do that. And since it's paid at the full rate, what's the problem?

40 years of programming experience here. As far as I am concerned, if a potential employer wants to hire me for an hour or a day or a week to try me out before making a hiring decision, that is a fair exchange. In fact, where I live, an employer can fire you without notice and with no reason at all during the first 3 months of the job. That's the law, and this blog is really just about a more sensible way to pick people for the 3 month trial that are more likely to stay the course.

This is certainly preferably to wierd programming quizzes and coding on a whiteboard in front of silent people who give no clue as to what basis they are judging you. At least this guy gives you requirements and you know that you must provide a working application within an hour. Very clear targetted goal to aim for.

I totally agree.

I generally solve this issue by paying the developer for the programming challenge. Usually, it's something that benefits the project that I'm working on. Then, if I hire them, it's a pretty easy transition.

So what if I find a bad dev or two and lose a bit of money. The good devs way more than make up for the investment in the bad ones.

Nailed it.

It's the other side of the coin to culling out folks who don't have "public" work that you can look at.

I have been encumbered by IP agreements for years that make showing my code to anyone seriously problematic. Even talking about certain architectures can be borderline.

A paid hour is a reasonable amount of homework if someone is actively looking for a job. You can't pull someone from a firm that isn't looking, but for contract work, it's reasonable. If I'm actively applying for a job that I am very interested in, I want them to do a lot of things that scare away other candidates and will allow me to shine. I've happily done 4 hours of unpaid homework. An hour is perfectly normal.

Exactly. Getting hired for a normal salaried job can easily involve an hour or two in phone screens, and then basically a whole workday in on-site interviews. An hour for a contract position seems completely reasonable.

Won't get much done in an hour. That's not even enough to reach the fear and confusion stage while coming up to speed on an existing codebase.

Right, you would look at similar things that your potential carpenter has built. You would also try to do that with programmers. But a good deal of the things programmers built are team built, or proprietary, it's difficult to know what they've created in the past. Having them work on a simple task beforehand is a way to normalize and make sure every programmer you're looking at is on a level field.

Also, unlike a programmer, a carpenter can't simply copy+paste work that someone else did and claim it as his own. It's a lot harder to fake tangible work in real life than it is to fake intangible work on the internet.

They can point at a house and say "I built that" even if someone else did, and how are you going to know the difference? The same way as you verify that someone in software did the work they said: put in the due diligence. That part can't really be avoided.

A programmer might not be allowed to show you their past work due to it being proprietary.

>You wouldn't ask a carpenter to make you a closet before you decide if you want to hire them, you look at the other houses they've created[...]There's a lot of crappy carpenters out there, and it feels like I've worked with them all

The author is saying you could have avoided working with any of the crappy carpenters, if you had paid them to make something dead simple in an hour as part of evaluating them.

Well this one is ok, since he is going to pay for that one hour. Then again, if you do know how to program in the programming language but don't know the APIs used it can be more than one hour to get something done..

I was interviewing with someone that wanted me to make an example sentiment analyzer for twitter and facebook to get hired. But he wanted someone to do it for free, I of course wanted money to do that.

Can a developer on a H1-B/TN/etc visa in the US legally do these homework assignments?

IANAL. They can do the homework in their free time, but they can most probably not get paid for it. http://www.nolo.com/legal-encyclopedia/part-time-work-multip...

Thanks for posting this.

IANAL but my understanding is that on H1B, you can only work for your current employer. So, you cannot do these assignments legally and you definitely cannot accept money. But it is possible to have multiple H1Bs to work part time for multiple employers even though that is a totally different story.

Yes. I'd hire anyone who willing to work and has the skills. To me, great talent is everywhere. You just have to find it. I have just happened to find great talent over seas. I HAVE hired nearshore (USA) and had success and failures too.

Side question: don't other people also have serious issues with the practice of using tracking software that take screenshots, or even worse, webcam shots?

When I was freelancing I quickly refused a lot of potentially well paying jobs because of the requirement to use such monitoring software (their loss imho...). I don't have a problem with video-chatting with an employer about anything, or even with a temporary screen-share during a testing task or interview process, but having my actual work monitored like this felt like a total invasion of "my space".

I don't know about you, but doing it this "big brother-ish" way feels very demeaning and I refuse to work for people that treat me like that and I hate it that it's starting to become a "standard" nowadays, at least for "low level" work.

During college I had a job in a coffee shop, and one day after a slow afternoon the bossman came in and later called me over to his computer, where he was reviewing his CCTV footage, and said "Look at how long it took you to make this cappucino, this is simply unacceptable!". I walked out.

Now imagine if your family relied on you having this job? How awful would that be.

Yup. And to be honest, the surveillance was not even the worst part, the guy was just generally a shitbag. But yeah, considering all the scandals and such involving corporations spying on employees, it's probably safe to say that it's mostly the most vulnerable people who have to put up with it. But IT freelancing is probably too much of a niche for there to be any public outrage about stuff like spying on contractors.

Using tracking software is insulting. It is usually for the same reason why physical stores are full of cameras -- making sure you do not steal. In the case of software development stealing as in making sure you are not using your time for the benefits of the client.

One can argue that any version control system that is used frequently enough is also a tracking software. In this case as long as your client is not stalking your commit logs to come up with made-up excuses not to pay; and you are actually doing your work (not spending some of the client-paid time for hobby projects) that should be perfectly fine.

Which makes me think that these days tracking software should become much less relevant for honest purposes because git, hg etc distributed VCSs encourage very fast and frequent commits.

It's probably for non technical clients who wouldn't know how to read a commit log, but could probably tell the difference between code on the screen and facebook. oDesk also offers a ton of other stuff from code like data entry,design etc.

It feels like it'd be hard to get work done that way too, unless you could somehow manage to forget that it was taking place. I can't really do much serious work when someone is standing behind me looking over my shoulder. If it's genuinely interactive or collaborative, sure: if they're looking over my shoulder because I'm showing them something, or they're helping me to do something, then sure. But standing behind me just "monitoring" me as I work solo? Sorta a creepy situation, and more than a bit distracting.

Yes, very much.

But at least with Elance and their tracker, any time not accounted for with a screenshot doesn't have to be paid.

What would you say about an application-specific tracker? i.e. software that only takes screenshots of your work in a specific app, e.g. Xcode, and never of the desktop or any other window.

Let's say this is for personal use and not any big-brother scenarios. It periodically saves screenshots of a particular app, keeping only those screenshots that differ from the previous one and making in effect a compressed-time screencast of your work in that app.

This is something I've thought about making but I'm not sure how many people would find it useful. Any votes?

I still wouldn't use it. Then again, I wouldn't take a "bill by the hours" contract. I stopped visiting RentACoder when it was clear that this was where most of the work was going.

If I tell you I'll deliver something for $xxx, by mm/dd/yyyy then I'll deliver it for $xxx by mm/dd/yyyy. It shouldn't matter whether it takes me an hour or a week, as long as you get it for the agreed price by the agreed date.

I worked for a year with sporadic screen-shots and webcam shots on oDesk. I don't like webcam shots but I found screen-shots to improve my productivity actually.

I can see why folks would be opposed to this type of software. I'm not a fan of it either except for the use during the initial interviews and reviewing work. After the contractor gains my trust I never check the screen logs and half (if not more) of my contractors do not not even use the software. They enter time as "manual".

"Cut anyone who’s English (or whatever your chosen 5/5 language is) is terrible and very difficult to read"

Oh the irony!

maybe it was intended? lol

No, just a lack of coffee. Fixed now. :)

Sorry I couldn't resist the jab. Thanks for contributing.

One more.

" If the average wage of your applicants is between $5 and $25 and hour "


Fixed. Thanks!

+1 for no ~foreign people are dumb~ undertones I've seen in other posts. I'm brasilian and I'm sure my skills could punch the skills of some developers elsewhere in the face, even if I make less. If you don't respect people who you work with, what are you? That's why, also, I'm at my last remote job, after this one goes, I'm getting back to local and corporate stuff.. Current one is great, but I've had enough bad experiences

The problem is that English speaking people rarely learn other languages and therefore don't have much skill at communicating with people who are not fluent in English.

Communication is a two-way street. When I was working in the UK in multinational companies, the employer put a fair amount of emphasis in using International English in all communications. For those of us with an interest in literature this was a bit difficult because our heads were filled with flowery language.

If you have any second language skill at all, then you can probably deal reasonably well with 3/5 English speaking folks as long as you are careful to avoid slang and write your emails in clear International English.

You should contact me (see my profile). We're always looking for remote devs and we have a pretty good reputation at this point for how we work with remote developers.

It's not that foreign people are dumb, it's that foreign dumb people become developers. American dumb people do other stuff.

It's not even that. It's that good developers don't need to bid on outsourcing sites.

We do something similar if we are hiring a remote freelancer. Although first thing we look for is github code, then we do a short call, and then if that all looks good we do a 10 hour paid task. We then scale the work up from there with larger and larger tasks as our trust in them grows, because, as we've found, the hardest part of hiring freelancers is getting people that can reliably deliver. You don't want to give someone a too large task initially because the risk of them not delivering is too high and you need to know that you can cover the work if necessary.

Excellent. I like it.

This post doesn't contemplate one of the biggest problems on Odesk. The best of the "team" will perform the test. Then they put one of their low level team members on after the team leader passes the test.

The only way I have learned to work around the problem is to require use of the odesk time tracker with WEBCAM. Can't hide who is doing the work with the WEBCAM taking shots of the person. :)

Another way to handle this is to NOT hire teams, but hire independents. That's what I do on oDesk, to ensure the person you hired is the one doing the work.

Unfortunately it can't be avoided. I've always asked the question and most will say they work alone but then proceed to have team members do the work. It can become a big waste of time.

Very true. I've ran into this problem as well. Fortunately for me the team was actually very good. I'm glad you brought this up though. Good points!

Actually Skype works quite well. As soon as candidate says "my mic is not working" and "camera is broken" you know that guy with name Ashish really does not exist - it is just imaginary person made by contracting agency.

However, odesk just recently started id verification process but I still relay on simple Skype calls and actually talk to person.

If it is agency I want to talk to manager/tech lead and actual programer.

Do people go through this much to hire from oDesk?

A while back I would just hire 3 people for the same project. One would always stand out pretty early and I would stick with them after the first week. After a few projects I had a list of great people which I still use today.

A couple of transcribed episodes from 'Startups for the Rest of Us':

How to Hire and Manage Virtual Assistants


How to Hire Like a Bootstrapper with Special Guest Laura Roeder


Rob also has a great course on Udemy which shares a lot of the same philosophies that I do. View that here: https://www.udemy.com/startups-guide-hiring-virtual-assistan... I highly recommend it.

Nice insights. Thank you for sharing.

This is simple. If you are hiring an engineer you should be one too. This way you can hire faster and fire faster. No bullshit.

Outsourcing work overseas is 5x cheaper than local try-and-see-how-it-goes. Not a long term solution but a short term one to get stuff done. Hire fast, fire fast. So if you make a mistake move fast to get another one on the job. You wont bleed as much money from a mistake of outsourcing to the wrong candidate.

I have been through this a number of times over the years and documented my learnings on outsourcing pros & cons here: http://www.theroadtosiliconvalley.com/technology/outsourcing...

"Something interesting happens at this point in the process. An average of 50% of the candidates never continue past this step. The reason is not exactly known but I suspect it is because they simply do not know how to perform the task that is given to them"

If you're picking 10 candidates and only (initially) asking them for 1 hour's work, they're probably dropping off due to lack of interest in your project. They might not be taking you seriously.

I should clarify, I hire them for 1 hour and if they succeed in the task and I like their work I'll hire them for the project.

RE $5/hr - You'd be surprised what kind of applicants you get from around the world. I've had a very good iOS developer from India for $12/hr for awhile now. Great find. I also give my workers bonuses if they finish early, go above and beyond, etc. Key thing: Take care of people and most likely they'll take care of you.

Looks like I edited out my $5 an hour remark before I saw your reply. :)

Hijacking the thread...

I'm from Brazil and would like to get jobs elsewhere (the rates here are just sad). I've looked into oDesk and Elance, but the jobs / conditions suck. I've also tried getting in touch directly with companies when I see job postings, but it seems there's a barrier to hire from this side of the hemisphere.

Does anyone know any good site focused on remote job postings?

careers.stackoverflow.com has some remote jobs posts (they have an 'allow remote' flag, but a lot of times they actually don't, but some do).

There is also weworkremotly.com and some github.com ones, but you can check jobmote.com as it acts sorta like an aggregator for these sites.

HN's monthly "who is hiring" threads have served me well.

A challenge that involves creating a small app in just an hour or two, with tight guidelines to follow? Sure it's doable, but this says to me - I'm not looking for someone creative. I just need a code monkey that can follow instructions.

What do people think of the OP's test repo?


This is a sensible test, I guess, but the OP is just satisfied that the devs know basic syntax and conventions? Would it be more productive to ask more open-ended questions...such as, instead of telling exactly what tests they should write, ask them to write tests that verify the system is working.

Hell even if they did it in Minitest, that ability to conceptually prove how systems in Rails work would seem more valuable than knowing RSpec convention

You could totally do this. I think variation like this are great. I do this all the time. Depends on the type of developer I'm after. I've had advanced challenges/etc. One of my best hires went above and beyond my requirements and stated (in the pull request) that we could do X, Y and Z to improve the code and test coverage. I hired them and they helped me launch a product. But I agree, you can do exactly what you said. Feel free to take this and change it up. :)

MiniTest has 'rspec syntax' with 99% less dirty fucking hacks.

Personally, I'd probably do it more like the author did. Not that Minitest (or others) is better or worse than RSpec, but rather RSpec is what I have experience with and if I were going to take over the project for whatever reason, I'd much rather have things already in the state I'm familiar with.

In a somewhat related question... remember the guy[1] who worked at Verizon who out-sourced his job? I'd sure love for him to write up exactly what/who/when/how he did that and got it to work out so smoothly; except for the part where he got fired.

1. http://www.npr.org/blogs/thetwo-way/2013/01/16/169528579/out...

In the android app the line "Create a ListView that groups the recent commits by author in a custom view." is confusing to me. What I get from that is something of this form:

however the example jpg doesnt look like it.

I can see how this could be confusing. However, this is an opportunity for the candidate to communicate with me. In the real world, features are not always 100% fleshed out and sometimes you need clarification. This could be used as one such example. But, I agree, this could probably be improved a bit. Thanks for reading. :)

Does anybody have an idea about how to stand out in the crowd where many remote developers disappear, replace themselves with somebody else in their team without telling you, and so on?

This is my biggest problem now. I've been freelancing for about a year, and so far I got every single one of my jobs through friends and ex-colleagues. Currently I live in Hungary and there is an obvious demand for the things I do (mainly Android and back-end Java stuff), so I'm pretty sure there is somebody out there who could use somebody like me with a better rate than back home.

But it's not easy to build trust, especially over the internet, if the default position of the client is that you must be doing something shady unless proven otherwise.

This works if you already know how to code, and can come up with a quick 1 hour problem for them to solve. And it is a lot of work on your side as well. Filtering the list, checking the code, making sure they didn't cheat by checking github logs, pay someone else to review the candidates.

It would almost be quick to post the job online, break it up into stages, hire someone, check their progress, and move to the next person if their work is not satisfactory.

I am right now trying to score some freelance work, I found a gig at elance and put in a proposal. That gig had almost 200 proposals, how would the job poster even filter these out? It sounds tough and tedious job. Your guidelines makes sense and also tells me how my prospective clients might be thinking.

Thanks for the article, it was a great read.

If you're doing a fixed price project, how can you get oDesk to let you hire the candidates for just one hour?


Pretty sure the personal attacks are unnecessary.

Applications are open for YC Winter 2020

Guidelines | FAQ | Support | API | Security | Lists | Bookmarklet | Legal | Apply to YC | Contact