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?
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.
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 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 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.
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.
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.
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.
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.
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.
But at least with Elance and their tracker, any time not accounted for with a screenshot doesn't have to be paid.
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?
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.
Oh the irony!
" If the average wage of your applicants is between $5 and $25 and hour "
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.
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. :)
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.
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.
How to Hire and Manage Virtual Assistants
How to Hire Like a Bootstrapper with Special Guest Laura Roeder
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:
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.
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.
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?
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.
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
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.
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.
Thanks for the article, it was a great read.