DEV Community

Discussion on: Code price-tag

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:

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:

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!