Ask HN: understanding software contractors

8 points by throwavay452 ↗ HN
I've been burned a couple of times when hiring software consultants, still trying to understand them.

1. What does it mean if somebody has Ok references, years of experience in programming, charges me for learning the code but can't produce anything that works (I always had to correct his seemingly well written code as it was hanging my software - he could see it with a bit of testing). Could it mean that my software is too bad or too complex? My code to test ratio is higher than average but I was trying to code quickly, in order to show it for initial evaluation.

2. I hired a contractor rejecting a few other candidates. He knew I had time sensitive tasks. Soon after being hired and receiving advance payment he tells me that he is relocating and asks for a week off. Then another week. And another week. After 3 weeks, do I have the right to give him a bad reference online?

3. Are all good programmers taken this summer? I am trying to find one now, but everybody is either too busy or not enough qualified.

Any advice?

11 comments

[ 2.9 ms ] story [ 40.7 ms ] thread
(comment deleted)
1. "Ok references" aren't great, and years of experience don't mean much. It's possible that your software is too complex, but if that's the case I'd recommend letting contractors in relatively easily. Give them something isolated and well-defined as a goal, and as they work on it, they'll get familiar with the codebase and be able to work on something larger scale.

2. In this circumstance, I think you absolutely have the right to give a bad reference, although given the short-term nature of your relationship I'm not sure what would come of it. Taking an advance and not doing any work is almost certainly a breach of contract. While it might not be worth your time to pursue this in small-claims court if the amount is relatively small, telling as many folks as you can about what happened is certainly a reasonable avenue available to you.

3. I may be interested, but I know nothing about what you're doing. Shoot me an e-mail if you'd like to talk.

Great advice regarding "something isolated and well-defined". I'll contact you off-site
Have you tested them?

How about finding them from Weekend Camps?

Reading code is more difficult then writing code. Understanding a complex system is difficult -- understanding a complex system with poor architecture is nearly impossible.

If anyone is bidding on the work without looking at your code first, that's a good sign they're someone to avoid. If someone had a large project they wanted modified, I'd expect to spend a few hours with the code before agreeing to work. If it was really awful, I'd probably turn down the job.

Very few good programmers are looking for jobs. When you say "bad reference online" it makes me wonder if you're hiring from a site like odesk ... and those sites are generally programmers scraping the bottom. If I drew the wrong conclusion from that comment I apologize.

Sounds like you got ripped off by people who overpromised and underdelivered.

Hire slow, fire quick. Give potential contractors a small job and see how they perform. Don't hire them for the big gigs until they're proven.

Maybe you need to up your budget, or network to a greater degree to find the right fit.

Possible cause:

The start of every project is fun. Its new. I have a paycheck again. Horray! When it comes time to actually start doing work, the lusture wears off. Whoa, this is more complicated than I thought, hrm, I am kinda stuck. I'll take a break for a day, clear my head. Then one day of procrastination turns into 2, then a week. From there it just turns into an endless cycle of dodging the client and making excuses about the 'code being a mess' because you are so far behind and there is no chance of ever catching up.

Possible solution:

1) During the interview, look for signs of interest in the domain the software covers. Or interest in the specific technical problem you are trying to solve.

2) Look for a candidate who is maybe a little less experienced but is really looking for a chance to prove themselves.

What sort and how much specifications, documentation do you give them ? Do you provide a project plan that they have to agree to in writing?
I think the biggest problem is your current code. It's really important part. I am working on a project, which was initially written by following all bad practices you could think off. Well, happens, what can you do :) But the biggest issue is finding someone who is capable move forward without breaking while fixing. Experience doesn't matter in such cases, look for very detail oriented ones and if you find them drop me a line :)
1. Not enough information.

2. Yes, depending on what you guys discussed beforehand.

3. Yes, pretty much.

software contractor here who occasionally hires other contractors:

IMO the key to contracting is breaking up everything into very small milestones and releasing payment on completion of the the milestone. Start with a very small part of a project and set aside a few hundred dollars. The milestone should be due in 2 - 5 days with some penalty or even no payment for being late. Pay immediately if possible and have the contract go to the next larger milestone for more money. It's best if the first milestone doesn't require wading though much old code. If the contractor can't complete the small milestone on time, they won't be able to do the bigger milestones. Let them know this ahead of time. If possible, only sign the contract for the first milestone. Break up a big opaque risk into a series of very small, closely monitored risks.

1. could be that your SW is too bad or complex but not enough info. One thing with references is that being a good contractor is very different than being a good programmer. Scheduling and client communication/management are actually the hardest part of working as a contractor. It could be as simple as the contractor being talented but not working hard enough or procrastinating on the project.

2. If I had to guess he's probably not on vacation. He's probably working on another project with a client that either pays better or he has a longer/better relationship with. This happens all the time. As a contractor, there have been days where I've gotten 10 proposal for doing work. If you're not careful with scheduling it's very easy to take on too much work. Again breaking things up into very small milestones with clear due dates can save this. Make sure you do your part and pay the contractor immediately.Your project will become the "emergency" job that he pushes others aside to complete since the path forward is clear and he knows he'll get the money right away. If it's on elance or odesk let them know you'll have to give them a bad review if they can't fix it. Don't give them a bad review on your personal blog as it will make good devs nervous about working with you. Clients who have had problems with contractors in the past are likely to have them in the future as well.

3. You're looking in the wrong places or you're not paying enough or you're scheduling the job incorrectly. I have some reliable contractors I can recommend if you ping me nm1161@gmail.com