There’s two sides to this: estimating time and how you charge. There’s been a lot of talk of late around charging for value rather than on time. Your iPhone doesn’t cost based on time it takes to create and assemble, it’s costed on value of the output. Who’s to say software dev shouldn’t be charged based on the value it provides. If it takes you 2hrs to make a feature that saves the customer £100,000 a year, there is a big value to what you do for them. Charging £300 for your time isn’t a direct correlation to what you’ve output. Your skills are the sum of your past learning.
But not every client is prepared to work that way. Some are happy to discuss value and you can charge on that matter.
Most of our prior client work has all been based on time equivalent. We estimate it takes T time, we add about 10% extra for managing the project (emails, phone calls, etc) and 10% for general admin. Those amounts should be covering a large portion if not all of the time it’s taken you to obtain the client/work.
If you’re spending 2 days doing a proposal for a 5 day bit of work, you should be charging them for closer to 10 days of time.
We always try and put a relevant amount of effort into a proposal as the job size is. For example today we wrote a proposal to add some new email features for a client. It’s about 4 days work, we spend 2hrs on that. The main project, for that client took about 60 work days, we spent about 5 days of planning on it.
The other think over costs is your rates. People are very cautious about discussing rates but I resent listened to a podcast where they were discussing this, and they basically both said that they just gave a higher figure to the next client each time. People will either accept it or not, and you can negotiate down.
If you haven’t increased your prices in 12 months, do it.
When it comes to the actual time estimations, only experience tells you this. I’m only a fairly junior developer (not my main role) but I’ve done enough to be able to guess time to do tasks, and overseen enough projects to be able to estimate the time we need to do a job.
As a note, most of our current client work is fixed price. Only if it’s a big unknown unknown do we leave it open. And even then we tend to opt for a small paid investigation period, then a full scope and estimate.