Coding as an independent contractor: Time estimate? Hourly rate?
June 1, 2015 6:52 PM Subscribe
I'll potentially be working for a small start-up coding as an independent contractor. I need to create a time estimate for the project and quote a pay rate to them. I'm new to contracting though, so I have no idea how to go about this.
The coding is for a control, data collection, and visualization system for stress testing of an in development sensor. The current code has about 35 modules and 8500 lines of code (A fair amount of these lines are code that apparently never worked and were commented out in mass by the original developer though). The code is commented fairly decently. It's written in Visual Basic, but is unstable and needs to be completely redone in either Python or Java (leaning towards Python, at the moment).
I'll need a time estimate in weeks and/or hours for this project and a rate to charge for this project. The company seems to want a time frame of 3 to 5 months ideally.
I've programmed before, but I've never contracted like this before, so I'm sort of lost in the woods on a time estimate and rate.
Things I'll have to do include:
1. Looking through the old Visual Basic code.
2. Recoding in Python.
3. Finding GUI and control libraries for Python and learning how to use them.
4. Reading through a few signal processing papers suggested by the company.
5. Debugging the code.
6. Answering emails/phonecalls/client updates.
My usual pay when I'm salaried is about $30 per hour.
How much should I charge per hour (I know I'll have extra taxes to cover, etc) and how should I structure the charges given these tasks?
Should I charge just per straight hour of my time?
Should I charge a higher per hour rate but only bill for coding/debugging tasks to make recording my time easier?
The coding is for a control, data collection, and visualization system for stress testing of an in development sensor. The current code has about 35 modules and 8500 lines of code (A fair amount of these lines are code that apparently never worked and were commented out in mass by the original developer though). The code is commented fairly decently. It's written in Visual Basic, but is unstable and needs to be completely redone in either Python or Java (leaning towards Python, at the moment).
I'll need a time estimate in weeks and/or hours for this project and a rate to charge for this project. The company seems to want a time frame of 3 to 5 months ideally.
I've programmed before, but I've never contracted like this before, so I'm sort of lost in the woods on a time estimate and rate.
Things I'll have to do include:
1. Looking through the old Visual Basic code.
2. Recoding in Python.
3. Finding GUI and control libraries for Python and learning how to use them.
4. Reading through a few signal processing papers suggested by the company.
5. Debugging the code.
6. Answering emails/phonecalls/client updates.
My usual pay when I'm salaried is about $30 per hour.
How much should I charge per hour (I know I'll have extra taxes to cover, etc) and how should I structure the charges given these tasks?
Should I charge just per straight hour of my time?
Should I charge a higher per hour rate but only bill for coding/debugging tasks to make recording my time easier?
Best answer: Yes, absolutely hourly is better; if they demand a fixed price, and you are okay with it, I'd recommend giving yourself a huge fudge factor (I'd multiply by at least 2). Note that sometimes customers have earmarked funds for a project that they need to spend down before some fiscal period ends, in which case you can treat that as a retainer and bill a fixed amount for an agreed-upon number of hours of work over some period of time. Keep good records of your time spent, and factor that bookkeeping into your overhead when you set your rate.
As for how to itemize, vague is better, particularly with estimates. A mistake I made early was to make an invoice too detailed and then have a non-technical person nitpick for things like reading through code, because they don't understand how much work it can be to debug somebody else's spaghetti. Today I generally either itemize that stuff as part of programming or software development.
For more menial chores, like answering phones and emails, you can sometimes set a different hourly rate for those tasks, as you could in some cases, in theory at least, pay somebody less skilled less money to do them for you. But I find it's easiest simply to bunch everything together.
Again, keep detailed records regardless of how you are paid, but keep your invoices terse. Keep the detailed information as backup in case the customer wants to know why something took so much time.
Part of being a contractor of course means having a contract. Make sure you have one, ideally one that favors you written by a lawyer on your behalf, granting you intellectual property rights over any code you write and without any non-compete clauses. Some of that stuff can be negotiable, depending on where you and they are flexible.
As for rate, my own current contracting rate calculates out to 2.4x my day job rate, and I will likely up my rate soon. But my day job has good benefits, lower taxes, and usually less stress than contracting. And my day job does not require me to buy my own equipment, office supplies, utilities, insurance, or to use my own free time. So think about that stuff as well.
Hope that helps.
posted by tempestuoso at 8:19 PM on June 1, 2015 [1 favorite]
As for how to itemize, vague is better, particularly with estimates. A mistake I made early was to make an invoice too detailed and then have a non-technical person nitpick for things like reading through code, because they don't understand how much work it can be to debug somebody else's spaghetti. Today I generally either itemize that stuff as part of programming or software development.
For more menial chores, like answering phones and emails, you can sometimes set a different hourly rate for those tasks, as you could in some cases, in theory at least, pay somebody less skilled less money to do them for you. But I find it's easiest simply to bunch everything together.
Again, keep detailed records regardless of how you are paid, but keep your invoices terse. Keep the detailed information as backup in case the customer wants to know why something took so much time.
Part of being a contractor of course means having a contract. Make sure you have one, ideally one that favors you written by a lawyer on your behalf, granting you intellectual property rights over any code you write and without any non-compete clauses. Some of that stuff can be negotiable, depending on where you and they are flexible.
As for rate, my own current contracting rate calculates out to 2.4x my day job rate, and I will likely up my rate soon. But my day job has good benefits, lower taxes, and usually less stress than contracting. And my day job does not require me to buy my own equipment, office supplies, utilities, insurance, or to use my own free time. So think about that stuff as well.
Hope that helps.
posted by tempestuoso at 8:19 PM on June 1, 2015 [1 favorite]
Best answer: I agree with the others that hourly billing is best. It prevents you from getting screwed (developer estimates are almost always lower than they should be), and shouldn't be seen as odd behavior by the client (lots of freelancers bill this way). 8500 lines of code sounds like a very manageably-sized project to me; certainly doable in 3-5 months even with a bit of a learning curve. However, I'd be worried that this job is going to suffer feature creep (especially since the existing code seems... unreliable); that's fine if you're getting paid hourly, less so if you set a fixed fee and they pressure you into fixing stuff that you didn't break. You should consider working out a timetable for milestone delivery ahead of time and discussing what the procedure is at each step (e.g., what adjustments need to be made and how).
One thing about being self employed is that you have to pay quarterly estimated taxes. This requirement by the IRS might only kick in if you're self employed for sufficiently long (IANACPA, you'd have to ask one), but it's a PITA and you might not have known about it beforehand (it was a surprise to me).
posted by axiom at 8:30 PM on June 1, 2015
One thing about being self employed is that you have to pay quarterly estimated taxes. This requirement by the IRS might only kick in if you're self employed for sufficiently long (IANACPA, you'd have to ask one), but it's a PITA and you might not have known about it beforehand (it was a surprise to me).
posted by axiom at 8:30 PM on June 1, 2015
Best answer: Thankfully, as far as the IRS is concerned, if you pay at least 100% of the tax you paid last year over the course of this year, you're fine. That means that if it is your first year with self employment income and you still have your day job with the same salary and withholding you won't be penalized for not making estimated tax payments. Going forward you must pay at least 80% of that year's tax between your withholding and quarterly payments or 100% of the prior year's tax to avoid penalties.
Other people have covered the rate and how to bill issues. I still often underestimate jobs and I've been doing this a long time. Partly that's because I do mostly hourly billings for break/fix type work so I haven't practiced the art of estimation as much as I might otherwise have had to doing more development work.
I have heard of people quoting a not-quite-fixed price where you estimate hours and give a price, but agree that more than an x% variance results in a refund or greater fee.
Sadly, you have to pay in equal installments unless you file extra paperwork to show your self employment income is irregular enough that you ought to pay less in a given quarter and more in other quarters.
posted by wierdo at 9:18 PM on June 1, 2015
Other people have covered the rate and how to bill issues. I still often underestimate jobs and I've been doing this a long time. Partly that's because I do mostly hourly billings for break/fix type work so I haven't practiced the art of estimation as much as I might otherwise have had to doing more development work.
I have heard of people quoting a not-quite-fixed price where you estimate hours and give a price, but agree that more than an x% variance results in a refund or greater fee.
Sadly, you have to pay in equal installments unless you file extra paperwork to show your self employment income is irregular enough that you ought to pay less in a given quarter and more in other quarters.
posted by wierdo at 9:18 PM on June 1, 2015
« Older Should I look for a new therapist? | My first ink: please don't let Google Translate... Newer »
This thread is closed to new comments.
I say this as someone who runs a small software consulting company and who has, unfortunately, sometimes had to make fixed-cost proposals.
posted by alms at 7:33 PM on June 1, 2015 [2 favorites]