loading...
Cover image for Code price-tag

Code price-tag

kostassar profile image Kostas Sar ・1 min read

How much should a dev charge his client for a project?

First things that come to mind are questions like:

  • How big is the project?
  • How long will it take?
  • Can one person complete it alone or there is a need for a team?
  • What infrastructure is needed?

and many many more.

So recently I was asked to take on a small project.

This person found out I am a programmer and asked if I would be able to develop an automation process he had in mind. I was happy to hear that he had a clear end-product in mind so there will be much less confusion during the development process.

The immediate next question was about the cost.

I am not going to go into details about the project because I want your answers to be general and not case specific.

Having never sold my own code / product I have no idea on how cost is estimated. The interwebs, sadly, do not provide a clear formula and everyone gives vague directions.

I know lines of code or time spent working on the project are not valid options but maybe they could be taken into account.

The big Questions

How do you not get underpaid for your working hours?
How do you not get overpaid at the expence of your customer?
How do you personally calculate cost and agree on a price?

Discussion

pic
Editor guide
Collapse
yaser profile image
Yaser Al-Najjar

How many working hours to finish the project? How much do you charge per hour (dont answer the latter question in public, it will bite you in future)?

Do the math based on the above questions. And in case you cant estimate, use these questions:

Can you estimate the needed working hours based on the requirements? Or at least the MVP?

The MVP could be your milestone for charging, and software never finishes; the client will ask for more for sure... you can agree then on another milestone and different number of hours or even different rate per hour.

Collapse
kostassar profile image
Kostas Sar Author

Actually I do not have an answer for the "amount per hour" question because I never thought that this is the way to calculate cost.

Is it really valid as a method? What if you are not tht familiar with the tech that is used and half of your working days you are googling basic stuff. Is that included in the final price?

How much could an average amount per hour be?

Collapse
dmfay profile image
Dian Fay

We're all constantly googling basic stuff. All of us. Time is the only thing that matters when it comes to setting a rate.

You could try backsolving from annual salaries in job postings which describe similar responsibilities to what you're undertaking to get some ideas, but the fundamental question is "what is your time worth?".

Thread Thread
pchinery profile image
Philip

We're all constantly googling basic stuff. All of us. Time is the only thing that matters when it comes to setting a rate.

That's a very debatable point of view. From a developer's perspective, this might sound reasonable, but the client will not be happy if you tell him "I don't know much, but you will pay me a hefty hourly fee to look it up on Google". Yes, everyone has to look up things, but I believe that you should treat productive hours (coding, doing real research etc) different than catching up with things you should know when you are the technology expert for the client.

The second reasonable perspective is the customer value you bring. If you can save the customer 100k per year, it's easier to charge something in the neighborhood of the first year's savings than if you calculate based on yours estimated hours and the client's savings of the next 20 years will be spent on the project. If that's a reasonable price though, the client might have to re-evaluate if it is worth for him to run the project. It's not the duty of a developer to do it with a loss just so the client can afford it.

But it gets even more complex: if you are new and want to expand your freelanceship, you might start cheaper to Hain a track record. Or to get a foot in a door with a client with great potential. Of course, the goal is in both cases that future projects will compensate for that, which is not always the case.

As last point, there might be developers with same hourly rate that work faster than you. If you just base your prices on the hours, you might not get the project if others can offer a better price, because they are more familiar with the technology.

I'm not sure if this really helps as an answer, but finding a reasonable price is really hard. If you have a good and trustful relationship with the client, you might agree on an agile model, think about an MVP and a maximum price where you would stop to re-evaluate. Until that point, it was be billed by the hour. And afterwards add feature increments with their own value.

Thread Thread
asparallel profile image
AsParallel

Never cut your rate to get your foot in the door. That sets a precedent you won't recover from easily.

Thread Thread
pchinery profile image
Philip

That completely depends on the situation. I totally agree that cutting the hourly rate will be much harder to debate later on. As I wrote, it does not have to turn out as expected if you try to get a foot in the door, but if you lower your estimate on the time (= don't bill every hour) in the first place, you can learn the technology on the way, become an expert in the area and charge every hour with the same rate for follow-up projects.

Thread Thread
kostassar profile image
Kostas Sar Author

I agree with that, if you need to put in extra hours to catch up with a technology that you said to the client you already know seems unfair to include in the final cost.

Also I understand that my hourly rate can't be the same as someone's who has many years of experience in the field. But I can "get my foot on the door" now and raise the rate gradually as I get more experienced, right?

Thread Thread
yaser profile image
Yaser Al-Najjar

Not just that Kostas, you charge depending on:

  1. Your experience (entry level, junior, mid, senior).

  2. Your current job status (working now, looking for a job, urgent job)... you won't stay with no job to work on, and it might be okay to lower the price to have something in hand instead of free hand (same goes to a client who wants urgent work done while you work on something else, you will raise the bar).

  3. Your location (if you are in India, your customer already came cuz he knows they pay less there)... how much they pay for the dev of your experience in your country?

  4. Your client location, he won't accept an unreasonable price in his point of view... he might have a price already and he thinks that's the standard since it's like that in his country (different in remote case).

  5. Who is the client? a normal guy wanting his blog ready? or a bank wanting a blog for marketing their latest tech? (silly example, but you see how to deal with different people).

Thread Thread
pchinery profile image
Philip

But I can "get my foot on the door" now and raise the rate gradually as I get more experienced, right?

As @asparallel wrote, this can bite you later. If you start working with a client and raise the hourly rate later on, they will probably want an explanation. But you can use the estimated time to maybe compensate for lack of knowledge at first and later align this with the real time you need as you get experienced in that area or established in the market in general.

Thread Thread
thomasvl profile image
Thomas van Latum

You should always charge the client for research costs. I've been coding for 15 years but that does not matter I need more or less googling then you do. You probably know tricks I don't and Visa versa. The client pays your hourly rate for doing work. And if that work is writing code or looking stuff up it does not matter.

Thread Thread
pchinery profile image
Philip

I still would say that it depends on a few factors. If I would research how to write a loop in JS for half an hour, I would probaly not bill that. If I research edge cases of support vector machines to evaluate if they are suitable for the client in this case, then yes, research should be billed.

Saying that every hour we spend should be billed it's our egoistic developer perspective ("I worked for an hour and the hour must be payed by someone"). The client perspective most likely is that they hired an expert who knows things they don't and is an expert in his field. So they will most of the time not be happy to pay us to learn things we should know in their perspective. So, as often, it's about finding a balance and being honest about what you offer for the hourly rate.

Thread Thread
kostassar profile image
Kostas Sar Author

Damn and I thought I could get by without time tracking software haha.

So yes, that balance is what I am looking for. Charge for the "important" research and maybe not charge for the hours remembering the selected language's syntax.

Thread Thread
thomasvl profile image
Thomas van Latum

If you are a developer that has to research how to write a loop in JS for half an hour your hourly rate should reflect that.
In my country you can get developers from 10 euro an hour to about 250 an hour. The hourly rate reflects the skill and expertise of the developer.

Collapse
krofdrakula profile image
Klemen Slavič

When I take for-profit side projects, I tend to consider hours worked on that project as overtime on top of my day job, so it stands to reason that the hourly rate would be higher, depending on how much you value your free time.

Now, sometimes that might mean that the figure will be too steep for your client. That's fine. If you need the money, consider how low you can go before it's not worth the bother. On the other hand, you may just need the money. Either way, you can start a conversation, but at least it's from an elevated position going down, not digging a hole in the basement.

To estimate your (day job) regular hourly rate, you can use something like yourrate.co/ to get a feel for the ballpark figure, then adjust as you see fit. Multiply by the number of hours you think the project will take and you have a good idea of what to charge. Heed my advice and don't low-ball this estimate, a client will always try to negotiate down. This gives you enough of a buffer to not get burned, and protects you from unforeseen problems that might delay your project.

If you don't have a regular hourly rate, or if you think it's not representative, ask around, or look at online job ads for remote jobs that post an annual salary range.

Of course, sometimes the project might be a good learning opportunity regardless of the amount you charge, in which case it might be worth considering doing it for a lower cost, or in the case of non-profits (and assuming you can afford it) go pro bono, which allows you to not fully commit and walk away with no consequences if the project ends up going belly up – a very real possibility even in commercial development!

That's about as practical advice as I can give without specific context. :) Good luck!

Collapse
kostassar profile image
Kostas Sar Author

So are you proposing to compare the hourly rate with the day job salary to make an initial estimate or I got that wrong?

Also sometimes I find online job ads to be a bit exaggerated, but I will try finding something similar anyway.

Thanks for the advice!

Collapse
krofdrakula profile image
Klemen Slavič

As a rule, I would do two things:

  1. Make the estimation based on your day job salary. To make things easier, use your gross pay (before taxes and social contributions) and add 20% (call it your free time tax).
  2. Know your customer. Who are they expecting to hire? Are they approaching you because they're hoping they'll get a locally sourced cheap developer, or are they prepared to talk seriously to a freelancer at market prices? That will guide you when you look at comparable job rates in the market they've placed you in.

It's hard to source good data points on salaries apart from job ads, but here's a global survey of people who have anonymously contributed their salaries, along with contextual data about locations, roles and company sizes:

docs.google.com/spreadsheets/d/1VO...

This comes from Remotive, I highly recommend you sign up for the mailing list, and consider the Slack community there. They sound exactly like the people you'd like to compare notes with. :)

Make both hourly rate estimates, and compare. How low you can go is something you'll have to figure out given your circumstances. But I would recommend that you err on the side of caution and always give a higher estimate, since you'll inevitably run into late submissions and last-minute changes, and they'll always talk you down anyways.

If you don't factor these things up-front and your contract doesn't stipulate an on-going hourly rate along with a clear list of contractual goals, you'll struggle to defend yourself when the client demands more work and says that you haven't delivered everything. Don't make the beginner mistake of assuming the happy path, that almost never happens if you don't have experience managing a project.

And remember, you are your only ally; don't sell yourself short. The client will have plenty of time to make the project not viable for you, it's your job to make sure that if that happens, you're getting paid for the time you invest. If you do a good job, no one will second-guess your rate, whatever you charge and they accept. And sometimes the best thing you can do is walk away from a toxic client.

You may want to have a look at Mike Monteiro's talk, Fuck You Pay Me:

vimeo.com/22053820

He (and his lawyer) explains much better than I can the pitfalls of the reality of business for creatives and information workers.

Thread Thread
kostassar profile image
Kostas Sar Author

Thank you very much for the spreadsheet, I was looking for something similar for quite some time! Bookmarked every link.

The contract I make with the client has to be divided into parts or milestones to better protect myself and get paid? Or should I go for a 50% upfront, as someone else suggested in this post, and the rest after the project is completed?

Which one you this is better for what situations?

Thread Thread
krofdrakula profile image
Klemen Slavič

The way I approach projects in general is to create a list of features and their requirements (and prerequisites). This gives you information about the ordering of features that can be delivered.

Let's take a news aggregator app as an example. Take the user-facing features as milestones and order them based on prerequisites:

  1. visual design (if not done in-house)
  2. public feed (list)
  3. detail view (item)
  4. login & registration
  5. personal feed & management
  6. user interaction (sharing, comments, etc.)
  7. 3rd party news API integration

The most important thing about ordering these features is that all the prerequisites of a feature are above the feature in question. You also want to deliver the most critical milestones first, and depending on the needs of the client, you want to move those up whenever possible. That will increase the client's confidence in the process and will quickly build trust from their side, since you're prioritising their needs.

You can use something like a Trello board to break down the milestones into tasks, and share that board with your client so that they can keep track of progress, or maybe even leave feedback if you continuously deploy your application as you complete more tasks. This also enables a fast feedback loop, but you HAVE TO always keep in mind that these conversations will often go out of scope of the current task. Remind them that those changes need to be negotiated as an additional milestone if they go out of scope of what was already agreed upon.

For each milestone, you can then set a price given your estimation of the amount of work, and agree with the client to pay for the milestone upfront. That way, the client has the option of paying upfront for the next couple of milestones in case individual payments carry a high cost (in time or money) to them, or just decide to pay for each as you go. If things go south or the project is cancelled, you still get paid for the chunk of work they committed to.

Other than that, keep to the advice given in the video, and make sure to keep in mind that each milestones needs to have a tangible deliverable for the client. That's the golden rule to managing client relationships and keep them happy and satisfied.

Thread Thread
kostassar profile image
Kostas Sar Author

Again, thank you! You have been very helpful!

Collapse
asparallel profile image
AsParallel

This is, generally, the process:

  1. Set an hourly rate, base it on your local rates. Median rate for Greece is €12/hour plus benefits. Set benefits to be whatever part employers would cover in taxes.

Talk to a local tax professional. Per Greek tax tables you look to be on the hook for your 16% + the employers 28% social, plus income tax.

Also bear in mind that self employment filing in many countries requires quarterly tax payments on income. Again, speak with a local tax professional.

Now for the work documentation process:

  1. Get/write a finite set of requirements. Document every feature.

  2. Define acceptance criteria for every item. This allows you to define what done means, legally.

  3. Get the customer signature on all of it.

  4. Set a timetable you can hit, with milestones of which features are due on which date. The hourly estimate attached to each of these will be added together to form your base bid.

  5. Because it's an individual, only work on a time and materials contract. That way you have an out if they demand extra time beyond the original scope and won't pay for it.

Collapse
kostassar profile image
Kostas Sar Author

Very sensible to include tax tips. I assume you follow this checklist as well when talking to customers.

Have you ever had a problem with a customer changing the specs to make this list?

Thank you very much! I'm keeping this!

Collapse
cohnjesse profile image
Jesse Cohn

Another way to go about this is to charge by the project. This is the model that most large agencies use and I have used for years. Here is the process I use -

  1. Work with the client to determine the scope of the project. Do they just need coding or does the project also need planning/ design? These don't nessisarily need to be done by you but you can certainly use your expertise in planning and if you do you should charge for it. How much functionality is needed? Do you have a clear set of requirements? If not this can add to the scope. Determine this stuff first before you price because it will affect how confident you feel in how many hours the project may take.

  2. Determine a fair market value for your time per hour. Everyone charges per hour in some way or another, with the method of charging a flat rate like I am telling you here you are adding up what the hourly rate would be and then adding some for overage. The rate you charge is a little bit of a subjective thing and if you don't feel comfortable charging a ton of money per hour that's ok since you are just starting out. But also charge enough that it is worth it, otherwise you might end up resenting the client. As a benchmark I am in the US and when I started by hourly rate was $20 an hour. Now 11 years later my hourly rate is $150 per hour.

  3. Multiply your hourly rate by how many hours you think the project will take you to complete. This time should include everything, research, planning, coding, everything. You don't want to be doing work for free. Unless you do, in which case this discussion is irrelevant.

  4. Add 25% for overages. You will always encounter things you didn't expect in a project, this allows you to give yourself a buffer.

Whatever number you come to is the flat price you charge the client. You can charge the price all at once or in phases if you think the project will take a long time. At the very least get 50% up front, this will let you know the client is serious.

Collapse
kostassar profile image
Kostas Sar Author

Sound strategy! Thank you for your answer!

Collapse
dwd profile image
Dave Cridland

There are three ways of pricing anything:

  • Comparative Pricing - where you look for something similar and charge much the same.
  • Cost-based Pricing - where you figure out how much it'll cost you to produce, and then charge accordingly (with a profit margin, we hope).
  • Value-based Pricing - where you figure out how much the thing is worth to the customer, and charge that.

You should do "value-based pricing", as a general rule. But never go below your cost, and don't go too far off the price of your competitors of course.

This is not helpful advice, of course - it's really saying "do all three".

But let's assume you're a student, and your general living expenses are covered, so cost-based isn't much of a worry. That leaves comparative pricing and value-based to consider.

There's two ways that someone might pay for a bit of automation software. They might want to pay for it all up-front, once delivered. Or, they may prefer to pay for it as a service, on a monthly fee. A lot of software - and I mean, a heck of a lot - is a mixture. People pay for an initial "license fee" or similar, and then pay for a "support contract". These correspond to "CapEx" (Capital Expenditure) and "OpEx" (Operational Expenditure). Different businesses have different priorities here, but most will want to push toward high CapEx and lower OpEx - because lower OpEx leads to higher long-term sustainable profit.

Okay, business finance lesson over.

If you want to go a value-based route, try to estimate how much money this software will save (or earn for) the customer, and aim to take a cut of that (10% or so). You can then decide how much to take as "support" and how much as "development" - in general, the further in the future your OpEx saving would be, the less it would be when converted to CapEx. This way, you'll be able to say "This project will pay for itself within X weeks" - where X is usually going to be a pretty low number. By doing this, you'll literally never overcharge your customer.

But in this case, I suspect you want to run it like a consultancy - so you're going to charge a "day rate" during development, and hand over the result unsupported at the end.

This leaves two questions:

  • How many days?
  • How much per day?

The first is best answered with an estimate (from you), and an agreement that the software is delivered on an agile basis, with your customer involved in the sprint process, week by week, on a pure T&M basis. In other words, there's no hard minimum or maximum, but the customer has a good guide price and clear involvement across the entire development process. They can stop at any time they want.

The second question is where we go "HOW MUCH!?!?!!", because typical day rates run from €250 to €1000, depending on the rarity of the skillset. You can, of course, go lower if you want (or, indeed, higher).

So do the CapEx/OpEx guesswork above, then estimate how long it'll take you, divide one by the other to get your day rate, and then decide if that amount of money works for you.

Confused? Yeah, so am I, which is why I keep out of pricing discussions and don't do consultancy work anymore.

Collapse
kostassar profile image
Kostas Sar Author

I think I got your points! Thank yoy for the comment!

Collapse
nwaweru profile image
Ndirangu Waweru ™

Nice. Had the same questions and ended not dealing with people I did not "feel".

It is usually hard to put a "price tag" on you when you feel limitless :D

Collapse
kostassar profile image
Kostas Sar Author

Also it feels unrestricted because it is a project price and not a salary! It is difficult to find something similar and compare the cost. Not as easy as finding an average salary for that kind of position and adjusting.

Collapse
nwaweru profile image
Ndirangu Waweru ™

And it is more of mile-stones than an 8-5.

How much to charge to do it faster? Leave others and focus on your project? Etc.

The existential questions in pricing a code project.