I have a new startup and need some additional Java programmers. The problem is: the majority of applicants have just gotten completely stuck and given up when presented with an extremely simple programming test. The first of the two questions is barely more complicated than "Hello World", the second is a bit harder but the algorithm is described in pretty good detail in the question.
It's only one problem, but actually there's more than one question coming out of it.
1: Since strictly speaking I could do the whole project by myself, it would just take a lot less time if I got some extra help early on: can anyone advise me on how to balance my time between trying to hire more people and working on the project?
2: How can I attract competent programmers while still being open about being a small startup with limited funds?
3: How can I do a better job of filtering out people who can't code at all, given that lying on resumés is almost standard practice where I'm operating, and that I haven't had any success getting anyone to do an online code test before the interview? I'm already filtering out anyone whose resumé is suspiciously similar to anyone else's, or who claims to have made Java contributions to projects I know to have been written purely in another language.
You don't say where you are based, but here in London there is currently a major shortage of good developers, so if you don't offer a very attractive package then you will only get poor quality candidates.
I've interviewed candidates for mid-level jobs at a large university and found that maybe half of the shortlisted applicants get stuck on basic 'hello world' stuff. The conclusion we came to was that a) we offer less money than some other places do and b) we offer fewer exciting startup-style perks, leading to the best people not wanting to apply. Also resumes are not a good predictor of performance.
First thing to do is find out why more good candidates are not applying. Compare your job ads to others that target similar people for similar roles. Remember it's not all about the money. Location, community, funky office space, career development prospects and working on a project that matters are all a big deal, amongst other things. Consider using Lean startup principles. Do 3 versions of your job ad and see which one gets the most responses. Of those responses, which ones lead to the better candidates. It may be that some perks/words/phrases/ad locations get lots of low quality people, but others get just a few high-quality people.
Once you get more people to apply, I'd recommend:
If you have trouble getting people to jump through the hoops then they are either not that keen to work for you, or not suitable candidates. Talk to them to find out which.
One of the best ways to short-cut the hassle is to use Stackoverflow careers (friends have done this and say it has been very useful), and you should definitely read Joel Spolsky's excellent blog post on how to hire developers: http://www.joelonsoftware.com/articles/GuerrillaInterviewing3.html
I don't think you can go the traditional route on hiring a developer. You don't have the resources relative to the available pool of talent.
A new programmer should be able to pick-up on your code base if you put in the time; otherwise, you're going to need the money. Think about it in terms of the time you invest now to the time you'll save in the long-term. If you can start building a good team, you can attract other programmers.
I realize this may not be the ideal answer you wanted, but I don't see a quick fix here. You may get lucky and find one good programmer by running job ads.
Good advices from Matt. If I may add a couple of things:
Conversely, if your business has lots of potential from a business and/or from a technical point of view and it can provide a great professional experience to your employees (technology used, position held), make sure to highlight it in your job ad. That's definitely a plus. May be open up the job position to more than "just" programming?
In answer to all your questions:
1. This depends on you, on your other partners, on what you're building, and who you can find to work with you.
Can you find someone equal or better than you technically? Can this person help define the libraries you're going to use, the architecture, the tools, the processes and so on? If so, great! You've found an ideal partner: each of you can do his or her own thing and come together every now and then to make sure you're on the same page.
On the other end of the scale, if you have to rely on hires that have a lot to learn you'll have to play manager, mentor, teacher, technical support, during which time: you won't be spending time on your work, and they'll be unproductive while you help out.
2. An easy way to attract talent is to describe the job in terms of challenges or objectives. You can't list a set of requirements. Your job ad (if you're using one) should include:
Be honest and up-front about what commitment you're looking for, otherwise you'll just be delaying a difficult discussion or separation.
Other ways to find your perfect developer: friends, family, meet-ups, conferences...
One advantage to being small is that you can try people out. The idea is to bring the person in for a day or two (a lot of people won't be able to do this, but if they're interested they may be able to do something similar in the evenings) and see how things work out. The person should do actual work that you need and in return you should pay the person.
Are you looking for people in your immediate area? What about remote workers? If you go remote the pool of available people grows, obviously.
Think about whether you can accept people coming and going (e.g., you may be able to solve the problem with interns or contract work), or whether you're going to need the people you hire to stick around for a while (most likely).
3. You can't rely on resumes. The online code test before the interview is fair, unless you're asking for too much time from people.
For the people that say they won't do it because they don't have the time... it's difficult. My opinion is that if you don't have the time, then I don't either. I think about all the crap that comes up at work that has to be done that nobody wants to do, and I imagine that the person that wasn't very flexible on day one will probably be less flexible as time goes by.
The way you present the task might influence their reaction, so be considerate. Make sure the person is motivated, explain why you need them to complete the task, and thank them for their time.
For the people that can't do because they don't know how to do it, you probably can't afford to wait for them to get up to speed. But that's your call: every new hire must meet a minimum level of technical proficiency, the level is yours to decide.
You're doing it right by making sure they're technically competent first, but don't forget that you also need to make sure the people are motivated. You need both. It's like Joel Spolsky says: "smart and gets things done."
Not "smart and/or get things done."
One recommendation is posting your projects on freelance sites like Elance. It's safe to do business on these sites because they have escrow payments and plenty of feedback on the providers that bid on work.
There are other freelance sites too like odesk.com or freelancer.com