I wrote this on Facebook about this article, but I think I should publish here for posterity.
For freelance developer, this really depends on a lot of factors. For one, I don't believe in fixed charge for any and every project (say $60/hour), instead what I try to do is understand the domain which I'm getting engaged in and what value my services is going to be offering my clients & try to charge based off it.
So I do this by asking them questions relating to the project, both in terms of the technology and the effect of it on their business. This also helps me make proper recommendations & build an appropriate solution for the business.
If they aren't willing to pay my charge, based off the inference I come up with and the value I believe I can offer, I usually let the deal go. I don't take the "we don't have money now" excuse. Well if you don't go get it, or forget the project. Or you could just go find a less experienced developer to handle the project, and that's OK by me.
Initial charges are actually always open to negotiations (like every other services), up to a particular lower limit and we get to reach some kind of compromise somewhere.
When I see that it's fair enough for you and what you want to do with the application/codes in your business & isn't bad for me either. Then we can reach a truce.
So for a similar project, I could charge a rocket-ship price to a client and a bicycle price to another. It always varies. But I try as much as possible to tie it to whatever value I perceive it adds to your business and the period it takes me away from being able to engage in any other thing.
And then, for my dignity, there are price I'd rather not go lower than. Instead I'd consider doing it for free for whoever it is. But then, that would now have to be subject to my own personal timing.
What I realize is that many people just think of stuff they think is fancy, or they like and just try to engage software developers to implement it for them.
Because developers like coding, they almost always don't think about the costs before they accept projects. The result of this is that a lot of time is wasted by the developer, writing codes that won't make it to production or that would be trashed sooner than later. Time that could otherwise have yielded better value in many other ways. Worse still, doing this with someone who hasn't thought their solution through, constantly changing requirements & breathing down their neck unnecessarily.
This process would help the people who need my service service as an experienced developer to properly & critically evaluate their requirements and see what is actually needed vs what is a "good to have" before engaging a developer.