It's not very rare programming question, but it's about a work of a freelance programmer and I think you can help me so maybe it's ok to pust it here?

So one dev-company asked me for doing a programming consultation. It's should be like this that the company can call me and ask questions and gets answers how to do this, how to do that and so on. I never did this kind of work and I think what is the best way to deal with this kind of cooperation.

Should i charge per hour? It can be short questions, by phone or e-mail and it can be not easy to calcuate and take a grip on the time and cost. Or should I charge per consultation? And if something will be not-worth mentioning and there will be more short questions but plenty of them? Or should i charge montly?

Did you do some kind of "programming consultations"? Heck i don't even know what is the right name for this kind of job. Do you know any sites or keywords that could help me get more info on the topic of this kind of cooperation ?

4 Answers
4

A retainer might work well in that situation. Have the company commit to paying you for X hours of your time every month. They pay you for these hours whether they have work for you to do or not. But you commit that no matter what other projects you have, you will be available right away to consult for them.

If they exceed the agreed-upon hours for the month, you can have an agreement where you will provide additional help for an hourly charge, probably at a higher rate than the retainer hours, but that is up to you.

Your benefit: you get a check every month no matter what. This can make consulting work much less stressful since you have some certainty.

Their benefit: they get your time when they need it (you can't be 'too busy' if they are already paying you), and predictable limited cost.

Agree on what constitutes a billable hour (a 5-minute phone call?) or use some smaller unit of time, like 5 or 15 minute intervals.

Keep good records so they know what they are paying for. Be sure to notify them if they are near the monthly limit. You can choose to be flexible and exceed the limit, but be careful that they don't abuse this and expect it at all times.

What it sound like to me is that they want a Sr. Dev to call on for all the Hard stuff and keep Jr guys on staff for most of the everyday simpler stuff. You will find your self being called on to fix a Bug the team that created it can't find.

They want a Tech lead without actually paying for one. If you go with a monthly fee you will be raped.

PS: I would push them to hire you part time (at least) with set hours. (and paid overtime)

First you have your initial consultation. In this phase, you say "I'll give you four hours to explain your problem to me." or something like that. In that time you gather data you need to begin solving the problem.

You then go back to your office/home and make a timeline of how long it will take to fix it. (Give yourself lots of wiggle room!)

You then go back to them with your estimate, including your cost estimate. You can charge a completely different rate for this. Probably more, since your initial consult will be lower (to entice them to do it.)

Charge at least double your normal hourly rate for a minimum time per call, plus an on-call allowance since they want quick answers. If they do, you also need to make sure it's compatible with your main job - some employers won't like you taking random half hour breaks to serve another client.

I would be very tempted to make the cost escalate over time. If you say $100 for the first hour in any week, then $125 the second hour, $150 the third and so on you can be sure that they won't end up taking half your life away. Otherwise you'll be working very long days when the second client is in trouble.

And don't hesitate to charge every time they ring you, for whatever the minimum time is. I suggest making the minimum 20 or 30 minutes, to cover the loss of state when you break your main programming job to answer a question about something completely different. And charge in 10 minute increments. That also means they have no incentive to play the "ask really short questions and hang up the instant they think they know what you mean" game.

If you go for a retainer or "x hours a week" (months don't have an even number of weeks which gets annoying), make sure that it is reasonable for you, and you enforce it.

Sorry if this sounds negative, it's just that I've fallen for the "can we ring you if there's a problem" when I've left jobs in the past, and it's turned into trouble when they hire a junior developer to replace me. The main thing is to be clear what you're selling and make sure it fits with the rest of your life.