

Ask HN: understanding software contractors - throwavay452

I've been burned a couple of times when hiring software consultants, still trying to understand them.<p>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.<p>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?<p>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.<p>Any advice?
======
pixeloution
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.

------
angrycoder
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.

------
bartonfink
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.

~~~
throwavay452
Great advice regarding "something isolated and well-defined". I'll contact you
off-site

------
standardminds
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

------
gallerytungsten
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.

------
arvcpl
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 :)

------
CyberFonic
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?

------
petervandijck
1\. Not enough information.

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

3\. Yes, pretty much.

------
teyc
Have you tested them?

How about finding them from Weekend Camps?

