

Ask HN: Freelance Web Dev: Hourly or per Project? - peterbsmith

I&#x27;m being asked to set up a website, facebook page and print materials for a fledgling consulting practice being started by an acquaintance.<p>My goal is to enter into an agreement where I am compensated at a price that is both fair to me as well as my client. I am not a freelancer by trade and I don&#x27;t have any established practices for what to do.<p>Do I charge $XX&#x2F;hr or do I estimate the total time I think it will take an charge based on that?
======
MalcolmDiggs
In my experience (10+ years freelancing), you make the real money when you re-
engage with a client. I tend to think of the first contract as just a way to
open the door. So in that respect, it really doesn't matter which way you
charge... just make sure you do an awesome job and help that client earn a
living from their website, so they can re-engage with you later for much
larger projects.

------
nonameface
I did a hybrid for my first freelance. I charged hourly, but because I was new
and unsure still in my skills (and had never actually set up what they were
asking for before), I set a maximum upper bound for the client so they
wouldn't be punished by my inexperience.

For example I charged them $75/hr and estimated the job would take me 8 hours.
($600) I told them my fee was $75/hr with a maximum cost of 20 hours ($1500)
needed to do the project.

This gave them an upper bound for the maximum they would have to pay me so
they could budget/get approval. The job was small enough that scope creep
wasn't really an issue though.

I ended up charging them $800 as I forgot to include travel time to their
location. First estimate was remote. I charged them full $75/hr for my travel
time.

------
randomuser321
Hourly. I have done both. There is always and always scope creep.

For hourly charges, bill in block of, at least, 4 hours. I usually give client
estimate, so they have some rough idea of how much project would cost.

I did fixed price in beginning of my career and always went over my estimates.
Perhaps I was just too inexperienced.

------
briandear
Hourly. I would never, ever do a project pricing again. You'll get scope creep
like you wouldn't believe. Even if you have clearly defined requirements, the
problem is that those requirements are never perfect, so they inevitably
change as the project progresses (that's the whole basis of what Agile is
about.)

What you could do is this: you could "secretly" estimate the cost of the total
project in terms of hours. Then you can decide how much you want to be paid
for the entire project. Then divide that by the number of hours, giving you an
effective hourly rate. Then you can quote that hourly rate for your
acquaintance which perhaps a "general estimate" of how many hours it might
take; don't get too specific or else you risk painting yourself into a corner
when things go wrong.

Personally, if it were me, I'd ask for a certain amount in retainer up front
before you write a single line of code.

For example, if you think the project is worth $15,000 and you think it'll
take 150 hours, that puts your hourly at $100 per hour. I would ask for 10% of
the project hours up front (after all, you are also incurring an opportunity
cost by even accepting the job and there's always the risk that you won't get
paid. Trust me on this! The most trustworthy people can often screw you out of
money in the nicest ways.

So I'd say, "It looks like, based on the requirements we've discussed that it
would take approximately 150 hours to complete this project. That can vary
considerably depending on any changes we might make as we make progress. I
charge $100 per hour and require retainer based on the projected project
duration (i.e. deposit,) which in this case is $1500 to start.

Our next payment will be due upon the completion of milestones that we both
agree upon. For example, when your Facebook page is complete, etc. All hours
that have been completed up until the milestone reached will be payable once
we reach that particular milestone or every two weeks, whichever is sooner."

..or something to that effect. Even if it's a close friend or acquaintance, do
everything in writing, making it all crystal clear. I'd even use something
like Basecamp (especially with their awesome checklists and milestones
calendars) to manage it all. This will insure that your friend treats you like
a professional and with that, you don't get abused under the guise of
"friendship."

You certainly don't have to do it how I suggest, but at least do the
following:

1\. Use a project management system, I suggest Basecamp, but there are others.
2\. Get your agreement in writing. 3\. Don't commit to a project cost -- it
will ALWAYS go longer than you think and "one more thing" adds up. The only
exception to this is if you're charging such an insane rate that you build the
inevitable overruns into the price. 4\. Get paid based on milestones or on a
regular time schedule (i.e. every two weeks.) I recommend milestones because
it makes the client feel better, but I personally prefer time-based. If you
wait until the project is "done" to get paid, then they'll have very little
incentive to pay and a very big incentive to drag it out/delay. Unless you
control the server. Then if payment is 1 day late, you shut that puppy down
until that money hits your account. If you do milestone payments and those
payments are late, stop work and tell your friend, that you can't continue
until the payment has been made. Trust me on this. You will get abused if you
let yourself. It has happened to all of us who've worked as freelancers! 5\.
Treat this project professionally. You're getting paid as a professional, so
you'd better deliver as a professional, regardless of "friend" status or not.
6\. Keep accurate records of time. This is useful because it will give you
data you can use later when estimating future projects.

Good luck! I hope that helped.

~~~
dylanjermiah
Not OP, but thanks!

------
sarciszewski
[https://news.ycombinator.com/item?id=3420303](https://news.ycombinator.com/item?id=3420303)

------
exclusiv
Summary: since you are new, charge fixed but add buffer on your gut instinct.
Referrals are amazing. You likely aren't good at estimating, so you don't want
to have to come back to them later and ask for more money. That sours the
relationship.

You have to look at it from both perspectives (yours and the client's), the
market price and your competition.

I've been doing web dev for 10+ years so I'm pretty accurate without having
strict requirements upfront. I also make them understand that new scope is not
a problem, but something must give - we change the way we do something else,
remove another thing, or it will cost more. Most of the time we just
compromise on low priority items. So throughout the development, I'm also
managing a lot of pieces to make sure we end up near my estimate while
remaining flexible to feedback and getting the client both what they need and
want.

I've done very well fixed bid. It gives me an incentive to be more efficient.
Clients need to know approximately what the all-in cost is at the end of the
day. If you asked someone to build you a pool, you would want a fixed cost,
even though there are some unknowns. Would you say, yes I'll pay your $50/hr
with no end in sight? No, you would need to know a full budget. Otherwise -
how do you evaluate multiple bids effectively?

I do time and materials for rescue efforts and maintenance. I can't risk
someone else's code killing my margins (and them claiming stuff used to work
and now it doesn't). They will try that.

If you know your competition - they may be inflating hours at a low rate which
can look good to a client. If you do hourly, they might not understand that
your all-in cost is likely lower than the more junior competition. However, if
you are both under a fixed scenario, you could be $8k and they could be $7k.
The client can fluff out experience and you can still win even though you are
more. You can probably do it quicker for a little more if you are more senior.
If it's hourly and you are $100/hr and they are $35, it can be very hard to
compete. Then those low end devs nickel and dime the client to death over the
course of a year and the client comes back to you.

If you aren't good at estimating, you should do fixed and buffer your gut
instinct a little (1.25 - 1.5x) when you traffic the numbers. Then you won't
have a client who feels burned if you end up spending way more time and $ from
your estimate.

Never do a capped bid but only bill for hourly. Some sneaky clients will try
to get you to do this. Someone always bears the risk. When it's fixed, you
bear the risk. When it's hourly they bear the risk. Whoever bears the risk
deserves any upside. They don't get to have a cap which hoses you if it takes
longer and also pay way less if you are super efficient. Seems simple, but
most people don't understand this.

briandear makes some very good points about billing. I've also seen clients
prevent milestones from happening in order to delay payment. Ask for 50%
upfront and the rest on a timed schedule. You can always settle on payments in
thirds or some other fair structure.

Scope creep can be prevented by you however. Clients don't understand how
development works and they aren't good at hitting deadlines like seasoned
devs. When they say "can you do this little thing?" \- you never say no. You
just say, this is outside of the original scope and in order to maintain
schedule, I'd like to put it in a "Nice to Have" bucket. Then you fit in those
nice to haves at the end if time permits. If time doesn't permit, you have
your next month's maintenance effort ready to go. I've put a team at a large
automotive company on a Trello board and told them to:

1) File "Nice to Haves" appropriately 2) Only log items into Trello. Any
emergencies should be made by cell or text. I don't want email requests. 3)
Maintain the tickets in priority

They love it.

You have to program them into YOUR process. Otherwise they will own you.

I have no idea on your skill-set but from what you wrote and the scope, I
would guess the market would be somewhere between $30-50/hr if you boiled the
project down hourly.

~~~
exclusiv
I forgot to mention - fixed bids help build your skill-set way more than
hourly because you are incentivized and you will be challenged more to figure
out the simplest thing that works. You won't find yourself straying off on a
overly-complicated solution to deliver something the client or users don't
care about. You'll be forced to stay up on the latest and greatest, not
because you nerd out about it, but because it makes your life easier and you
can then deliver things of huge value at market rate while maintaining nice
margins. :)

When you have more experience and your estimates are strong, you can do hourly
and give clients all-in prices with +- 15% difference and everyone will be
happy no matter what happens.

