I get asked a lot by fellow programmers, who know I run a software business, about how much they should charge for a software project. The answer is mostly, it depends. There are three ways to determine the rate for a software project. Each method has its pros and cons, and it depends on the client needs and the nature of the project.
Charge by time (least best)
The first and the most common way to charge for software projects is to charge by time. You set an hourly or day rate, and the client buys your time. Personally, this is my least favourite way to charge. However, I still do charge using this method for some projects as those circumstances require it.
Let's say for a moment that you need to charge on a time basis. The question that gets asked often is how much should I charge per hour/day. What most people would do is they "look at the market rate" and charge based on their skill and experience.
This strategy is wrong for the reason that market rates are nothing but a statistic based on the amount people charge. It can increase or decrease based on how the people in the industry adjust their prices. Furthermore, you are letting external forces determine your rate.
A question that you would be better asking is how much do you want to make. A simple example is, say you want to make $50,000 a year. You divide the number up by 12 months, 22 working days a month, and 8 hours a day, and you would come to an hourly rate of about $23/hour. Something that would require a bit more advanced calculation is to take into account the downtime when you do not have any projects, or are on vacation, but we won't get into that. I'm sure you can do the math for that.
However, this is not the best way to charge for several reasons. Firstly, it ties the amount of money you can make with your time. You get paid for the time that you spend working, and the amount you earn is capped by the amount of time you have. Besides that, it provides no incentive for you to work faster, which is terrible for both you and your client.
There are certain cases where this method is required. It is when you and your clients are not sure of the project requirements. Therefore, a flexible term such as this is required.
- Suitable for projects where the requirements are unclear or changing.
- The money you make is tied to your time, your not earning if you are not working
- Earning is capped by your time
- No incentive to work faster
Charge by project (better)
The next best method, I think, is to charge on a project basis. This method solves the downside of charging by time. In the end, you are selling the outcome instead of your time. It addresses the lack of incentive for you to work faster, which is beneficial to you and your clients.
You determine the price of a project by estimating the total time required to complete it. This approach requires you to have some project experience to do. First, gather the exact requirements for a project. Then, break the task down in the days and determine the number of days you would require to deliver the project. Take your daily rate (same method of calculation as above) and multiply it by the number of days it takes to complete the project. You will get the total cost of the project.
The problem with this method is that the project requires precise requirements from the beginning and has almost no room for changes in the middle. Besides that, the actual project time may exceed the estimated time, and it provides you with no compensation for the extra work. Therefore, if requirements are unclear, you are better off with charging on a time basis.
- Provides an incentive to work faster
- Requires clear requirements
- Not flexible
- The cost can be incorrectly estimated
Charge by value (best)
The absolute best approach is to charge a project by value. This approach provides the highest potential earnings and is the most advanced. Rather than tying your rate based on the market rate, skill, experience, and your desired earnings, you relate it to how much value you can provide.
What do we mean by value? Value is what our work or expertise is worth.
- How much money will it make for your client?
- How much time/trouble/money will it save them?
You determine these things by asking a lot of questions and understanding the business. It quickly separates you from others when you show interest in improving a clients business and provide them value. "Hey, I can help you bring in $1,000,000 in revenue with this, and I'm just going to charge $100,000" is a much better proposition than "Hey, my hourly rate is at $200/hour".
While it is the most advanced approach, I'd say that this is the easiest to adopt and sell as it shifts your focus on the value or ROI you are providing, rather than the work you are doing and time you are giving. Business value is a much better proposition to a customer than time and expertise.
How to charge by value is a broad subject and is better detailed on a post on its own. However, I'd assume that you get the idea, and I would highly recommend you to use this method of charging for any of your prospects.
- No earning cap
- Focused on value, easy to sell
- Not tied to time
- Requires a good understanding of the customer business
These are the three different methods you can use to charge for your software projects from the least effective to the most. I would highly suggest for you to practice value-based charging as it potentially the most profitable and valuable. It shifts your focus to your clients' needs first over technical specs. As value-based charging is one of my favourite topics, I would write more detailed about how to go along with closing clients using value.