How much should a contract programmer cost?
August 27, 2009 11:20 AM   Subscribe

How much should we pay a contract programmer to migrate some code for us? Is it customary for the programmer to present a bid, or do we come up with an amount to offer?

Our biology lab is looking to migrate some complicated MRI data analysis from a Linux box to a Mac. Currently we're using a mixed bag of Perl scripts and Matlab modules set up by someone who is no longer with the lab. We'd like to hire a programmer to initially just get the whole thing working on the Mac, then later re-write it, probably in Python, to be more streamlined. However, we've never hired a programmer before, and I have absolutely no idea how much they expect to be paid. Per week, what kind of amount are we looking at? (We're in the Los Angeles area, if that makes a difference.)

Also, is this person likely to have a price that they'll quote us, or do we have to come up with a number? Who sets the time estimate, us, or them?

Thank you for your wisdom, o business-savvy people!
posted by LadyOscar to Computers & Internet (9 answers total) 1 user marked this as a favorite
 
If I were doing this on a contract, I would probably present it as a statement of work, listing out the core tasks and approximate time estimates and (if applicable) resource requirements, then multiply it by a flat hourly rate. Core tasks should be broken down into smaller steps. The task list should also include QA time and bug fixing, and hopefully a list of acceptance tests/criteria.

I would be inclined to adjust task rates, especially on items for which I do not have current experience. That way on expert tasks which I do quickly, you'd pay for my expertise and efficiency, whereas on segments that I'm not an expert, you don't get punished for my learning curve.

Then if the amount of time is "significant" (and I like you), I might be inclined to cut in a discount (ie, if I project that I'll be on a task for 6 months) because it's nice to have a steady source. On the other hand, if the time is insignificant, I am more inclined to be up front about having a minimum number of hours that I will be paid for. If the job is less than 40 hours, I might insist on being paid for two full weeks.

The bid should also include how I expect to be paid and on what schedule (ie, upon completion of each core item or maybe per unit time).
posted by plinth at 11:33 AM on August 27, 2009 [1 favorite]


The reason you get more than one bid is to get a sense for the fair market value.

Plinth's breakdown and method sound pretty typical. One way or another you'll pay from 30 to 100 dollars per hour. (Less for larger blocks of work, thanks to discounts and lovely job security.)

From the quick description you offered, your job sounds like weeks (or a hundred hours and change), not months (or thousands of hours). But that's a guess: only you know how many scripts, how much of a mess they are, what results you'll be happy with, and so on.
posted by rokusan at 11:37 AM on August 27, 2009


Plinth's answer is very good. What I would also suggest is that you have your requirements really nailed down. When you say moved on to a Mac and made to work you really need to define what that means. Getting the requirements sheet ready for your contractor is the biggest part of receiving an accurate quote.
posted by skewedoracle at 11:40 AM on August 27, 2009


(I should clarify: I meant the larger job, the rewrite in Python, is 100's of hours. Just moving the mix of Perl and Matlab from Linux to Mac is not much work, really, since both Perl and Matlab work just great in OS X.)
posted by rokusan at 11:56 AM on August 27, 2009


Rokusan nailed it - more than likely, you can resolve the migration step within a day or two, provided that it is strictly limited to Matlab and Perl, and the only Matlab functionality you're employing is limited to scripts. But given the context, it is likely you are using one of the Toolboxes - which you'll have to obtain a license for on Mac OS X. Furthermore, if you're employing any type of MEX modules, you're going to encounter problems if you only have access to the binary, or if the source doesn't compile on Mac OS X. But, again, given that it's going from Linux to Mac OS X, I think two days is a reasonable estimate. I think you should charge a fixed price for this service.

Migrating from this environment to Python? I'd probably charge a minimum of $40/hr, and this is in Albuquerque, mind you. So, adjust accordingly. But, I spent slightly over four years working in a lab, as a research engineer working in exactly the same environment (i.e. Matlab and Perl) and if my prior experience is any indications, a 100 hours is *way* underestimated.

If you expect this hire to do a direct translation from Matlab/Perl, without having a deep understanding of the nature of the work, you'll encounter issues. And obtaining a deep understanding can take months. In fact, almost all the labs I've encountered typically have programmer(s) on staff because of these issues. In the long run, it's probably cheaper than hiring out on contract.
posted by aflores at 12:16 PM on August 27, 2009


Think about hiring a CS or EE grad student to do the work. They may be willing to work for a little less (F1 visa holders can only legally work on campus), and are undoubtedly very familiar with Matlab. Then again, they would require a little more supervision.

Depending on how complicated the analysis is, porting to Python may be MUCH more than 100 hours of work. There's a Matlab-like library for Python called Numeric, which can do most of the basic Matlab functionality. But if the code uses unusual Matlab features, or the toolboxes, your programmer may have to reimplement lots of algorithms -- and all bets are off with regard to how many hours it will take.
posted by miyabo at 12:44 PM on August 27, 2009


Nthing the port being lots of work. Hire someone with a deep understanding of MRI imaging issues (e.g. someone who has worked on an MRI project before and knows the technology) if you can. If this is impractical, make sure to allocate time to pair an MRI scientist/expert with the programmer so non-programming errors are caught quickly.
posted by benzenedream at 3:10 PM on August 27, 2009


You might want to contact a local university, some CS programs do Co-Op/Work-Experience/Industry projects with students for a semester for little or no cost.
posted by blue_beetle at 3:10 PM on August 27, 2009


Beware of hiring a CS student! I know it sounds like a good idea, but they have a 100% chance of going away and being unable to support and fix their work once they leave.

You mention your current setup was designed by "someone who is no longer at the lab". Wouldn't it be nice if the person who implements your new solution remains around for at least a few years, and you could call them up if necessary to have them explain it to someone else?

When I was a CS major, I did a small amount of development work of this sort. *I* certainly wouldn't hire the former me. FWIW, I charged $30/hour generally as a student. If I were doing the same work as a newly-graduated professional, I probably would have charged more like $40-$50.

As others have said, expect a programmer to quote an hourly rate and then give an estimate of how many hours they expect to spend on the project. Also. if I were a contractor, I wouldn't be inclined to bargain over the time estimate--why would my employer have a better idea of how long the project would take?
posted by goingonit at 8:34 AM on August 28, 2009


« Older When is a psychologist not your psychologist?   |   I'm caught up in love, he's now holding back so... Newer »
This thread is closed to new comments.