This post explores several tactics you can use to reduce the cost of software development.
So, let’s cut to the chase. How do you do it? The short answer is: you need to play your part. It would help if you learned how the software development business works. How deeply you want to get involved is up to you, but you need to understand at least the basics – how things work, who is involved, what is required of you, what to ask for, and what you can expect.
How do agencies estimate the cost of software development projects?
Work estimates determine the effort (and thus cost) required to produce a piece. It also affects overall timeline estimates. Getting a project estimate right is a delicate balancing act from a developer’s perspective. If developers estimate too high – they may price themselves out of an opportunity. Going in too low (underestimating work) could lead to potential losses and can be devastating to an agency.
Understanding an agency’s sales process
To compound the issue, for a development agency, the sales process is labor intensive – and thus time-and-cost “expensive.” The developer needs to weigh how much energy they’re willing to invest in doing a work effort estimate in the first place, as they would need to gain a deep understanding of the project requirements to do so. And there is always a measure of guesswork and expectation management involved.
Profit margins in the software development business are relatively thin. And there’s continual downward pressure on prices due to fundamental market forces. Any customer can take the hourly rate of a developer, times it by 168 hours, and get an idea of how much they are paying for individual team members. Once they know this, they can research recruitment sites and calculate the actual cost of the same resource.
Relating developer salaries with hourly rates
Once a typical customer has this information, the next logical thought is – “maybe I can get a better deal hiring someone full-time instead of outsourcing it to an agency.” There is no way a customer will pay more than 150% of the base cost of a resource. If a developer’s salary is $10,000 monthly, a sensible customer would not want to pay more than $15,000 for the same individual. They will start looking at options.
Running a successful development agency is thus primarily an exercise in risk management. For every poorly executed project, an agency would need about four successful projects to recoup their losses.
So to reduce the initial cost estimate of your software development project, you need to present yourself as a low-risk customer. That way, you would create the kind of comfort with the developer for them to provide you with a reasonable/aggressive estimate for the work.
How do agencies estimate the cost of software development?
An agency will estimate the cost of a software development project as follows:
Work estimate = a) the work multiplied by the b) uncertainty factor multiplied by c) the risk factor.
Let’s see how this plays out.
Imagine an agency is doing an estimate to determine the cost of a software development project. The actual work effort to deliver the project amounts to $100,000 – base cost plus a 25%-35% profit margin. Here’s how the project could be priced, factoring in risk and uncertainty:
Work estimate = (a) base cost x (b) uncertainty x (c) risk
Project base cost or “true” cost = $ 100,000
Low-risk, low-uncertainty estimate: ($ 100,000 x 110%) x 110% = $ 121,000
High-risk, high-uncertainty estimate: ($ 100,000 x 200%) x 200% = $ 400,000
Note: in both scenarios, the project scope has not changed, just the perceptions of the team doing the assessment (based on risk and uncertainty).
The estimating exercise also involves “testing of your budget/appetite.” And in no other industry is Parkinson’s Law as applicable as in the software development business:
"Work expands so as to fill the time available for its completion" - Cyril Northcote Parkinson.
Getting this initial assessment part right – during the sales process – is a significant opportunity to reduce the cost of your software development project.
What are the agencies’ risks, and how do they affect the cost of software development?
For an agency, time is money. Their highest costs are people – human resources, as their primary income is from professional services. It’s a time-share for human resources. And for an agency, you can distill the major risks down to:
- Does the customer know what they want?
- Do they know what they are doing?
- Are they easy to work with?
By creating a level of comfort with an agency, you can present your project as a low-risk proposition, and in turn, they will be a lot more aggressive with their pricing and flexible with their approach and timelines.
Uncertainty: “Do you know what you want?”
Pricing is based on effort, and effort is based on requirements. If you are unclear about what you want, the developer cannot tell you how much it would cost to do the work. That part is kind of logical. This is how developers estimate their “uncertainty” factor.
Uncertainty is not necessarily a problem. Developers, agencies, analysts, and designers are experts at turning your ideas into products. However, there are many opportunities to do some of this work for yourself or to manage the process in such a way to ensure you get good value and results from your efforts.
Alternatively, if you don’t quite know what you want, you can also manage the perception of “uncertainty” by demonstrating an appreciation for the process and a command of the methodologies.
In this way, the “uncertainty” factor is a significant driver in determining the cost of a software development project.
Risk: “Do you know what you are doing?”
Douglas Crockford (developer of the JavaScript language and JSON data interchange protocols) is credited for saying:
“Computer programs are the most complex things that humans make.” - Douglas Crockford
Delivering a successful project requires a specific combination of skills, processes, and chemistry. From an agency’s perspective, a good customer is either someone that:
- Has a lot of experience building software (add 10% to 30% risk factor)
- Does not have a lot of experience building software, yet willing to learn and easy to work with (add 20% to 80% risk factor)
A lousy customer for a development agency is a customer :
- That doesn’t have any experience building software (add 20% to 80% risk factor)
- Who is stubborn, unwilling to learn, and inflexible (add 100% to 400% risk factor)
- With an uncooperative, confrontational, or combative disposition (typically, agencies will avoid doing work with customers like this)
Keep that in mind as you engage with developers or agencies. The amount of risk you present to an agency will directly affect the cost of your software development project.
How do you manage uncertainty and the perception of risk?
You need to know how development projects work if you want to contribute significantly. Keeping costs down all comes down to managing people and processes.
How do you manage a software development team?
To get the most out of your team, you must have good emotional intelligence and empathy. Empathy is based on understanding your team, how they function, and what pressures they are under. You need to know the following:
- The significant roles in a software project. How is a typical team set-up?
- What do these people do, produce and take responsibility for?
- How to handle every role-player to get the best out of each individual?
How do you manage the software development process?
You don’t necessarily need much technical knowledge to manage a development project effectively. A business owner with little knowledge and the wrong attitude is often more disruptive to a project than a bad developer. You want to focus on the software development process and not get too involved in the technical decisions.
What is important? You need to:
- Know who does what and in what parts of the projects. Not everyone is always involved; certain roles have specific functions and produce specific deliverables depending on where you are in the process.
- Have an idea of how the software development process works – end-to-end,
- Understand your role – what you need to do. There is a lot of work for everyone, including “business” and freshly minted product owners alike.
Largely, keeping development costs down depends on effective process management, expectations management, and for everyone to play their role effectively.