Our empirical observations since a decade in the software development industry suggest that key to a successful software development project is No Surprises.
In software development, any deviation from the original plan for unexpected reasons means an added effort to materialize the “planned outcome”. And since everything in software development has a cost associated with it, such effort could easily lead to budget overruns.
As there are many variables that affect the cost, it is necessary to impose a robust structure at the very beginning, so that every activity must hinge at ‘as planned’. Failing to do so, for whatever reasons—hasty timelines, poor estimations, irrational commitments, lack of foresight, or technical incompetence could have catastrophic consequences for the project.
While being within the budget requires careful analysis and regular tracking of all the variables like — (a) people, (b) programming, (c) tools, and (d) deliverables, reducing the software development cost and not letting it exceed the defined budget needs a lot more effort than standard project planning.
Over the last 10 years of our experience and insights from industry experts and businesses, here are a few proven approaches that not only help in reducing the software development costs but also beneficial in preventing the cost overruns.
1. The ‘Future’ or ‘Now’?
Most projects start with the future in mind. With consideration of how industry, users and product functionality/features requirements dynamics would evolve. To incorporate and plan, keeping these things in mind, special focus needs to be given to system design and architecture.
Your software’s architecture is like the foundation of the product and may define the level of scale you would be able to achieve. If a software product is being planned like a POC, scalability may not be the priority and can be planned with the timeline in mind while an enterprise software that will be used by thousands of users now and may have hundreds and thousands of users in future need very thorough and meticulous planning for system design.
This planning, with future in mind, in the very beginning, will help mitigate future challenges associated with scalability and may help save huge costs that otherwise would need to be invested to rework on software architecture and scalability.
2. Mapping Requirements
Software requirement analysis and finalisation is never a “gathering” process in fact a consistent process of discovery and invention. Researchers and tech authors often use the term requirements elicitation to indicate the changing requirements.
You cannot actually define all the software requirements for the software system at the very beginning of the project. On an average, a small to mid-sized software development project can take around 4 to 8 months in completion and in that period, new requirements can emerge at an average of 2% to 5% per calendar month especially if the initial requirements were defined very meticulously.
So if your software development project has a strict budget, try to narrow down the requirement before starting the software development process. Change in requirements is inevitable and never free. The best option is to slim down at the beginning, so when the project demands new requirements in the middle of the development phase, it won’t be a do or die situation for you in terms of budget.
Besides, at times, you will have little control over new requirements. A simple proposal from BA could trigger the new requirements. To address such requirements that have both cost and schedule effects, better create a Change Control Process and assign the responsibility to the stakeholders whose primary task is to control and implement change effectively, rationally, and appropriately, without acting as a barrier, but as a powerful structure that minimizes scope creep.
3. Estimating All Probabilities in Cost
One of the first questions that come to mind when planning for software development is about the budget. And when finally, after continued assessment of the requirements, the budget is fixed and allocated, a very common phenomenon occurs—cost overruns.
The study says so. According to the HBR study, one in six IT projects has a cost overrun of 200%. If we try to find what companies may have missed during software development cost estimation, we would come across problems such as:
- A number of unaccounted activities performed during the project
- Unexpected but necessary involvement of non-technical workers
- Unplanned delay in the project, either caused by software failure due to technical incompetency or extensive schedule pressures
- The emergence of new requirements and lack of contingency reserves
Although it is quite difficult to quantify every activity and keep a reserve for probabilities, it is important that C-level executives evaluate the project outcome in a variety of conditions.
4. Avoid Big Bang Approach
Over-optimism and misplaced zealousness have been one of the many reasons for the failure of software development projects. Even if you have a decent budget for the project, it does not guarantee success.
McKinsey research conducted in collaboration with the University of Oxford reveals that on an average 66% of large software development projects have cost overruns and 33% of projects face schedule overruns.
Here is an example; when Sainsbury’s Supermarket Ltd. outsourced its IT process management and warehouse automation project to Accenture. Initially, the project was large, which was thought to be worth £1.7bn, so Sainsbury roped in other suppliers for building their new automated depots. A year later, Sainsbury began experiencing problems in the warehouse automation system, mainly errors in reading barcodes, and two years later, it announced that its warehouse automation project was a failure. The initiative which started at the estimated budget of £400 million finally stretched to £526m.
Sainsbury’s held Accenture responsible for the failure of the project, however, Accenture refuted the claims, saying that four IT automation systems were not under their existing scope, and since they were not responsible for the “strategy, development, and operations of these.”
According to Paul Smiddy, Retail Analyst at investment bank RW Baird, “Instead of a step-by-step approach, Sainsbury’s went for a sort of big bang.”
Such failures are not uncommon. Whether your project is large or small, slice every bit of the deliverables, from specifications to source code and test cases to user manuals in small sizes and then set the milestones, which will give you an idea of the most recent status.
A successful software development project evolves smoothly—right from the time when the business side of the team put forth an initial requirement of software with certain capabilities, which move onto to finance desks for approvals, and then finally reaches in the hands of IT executives who ensure there is nothing as unplanned.
5. Accuracy in Schedule Planning
The vision, scale and practices you choose to develop your product lead to a big impact on your schedule. E.g. Consider that you have two technology stacks to choose from, the first one is a low-cost approach which enables you to quickly develop, reach to initial customers to validate the idea, understand the market fit or to reach to investors but it is not scalable if you are an overnight success. However, the second one, while delivering all the above plus scalability will require much more extensive work leading to higher time to market and cost.
What would you choose if you have schedule pressures?
Definitely, the first option—timelines or time to market affect the choices you make, and those choices have cost impact, therefore it is necessary that you conduct proper schedule estimation.
The software development timeline depends on a number of activities, such as- requirements, design, coding, documentation, testing, and project management. For instance, if your IT project is not feature-intensive, then the time dedicated to each activity would be less. Also, these activities vary from project to project, such as the waterfall method requires more activities than the agile method. A typical e-commerce project will have a lesser number of activities than a large healthcare IT project.
Accurate schedule estimation means better planning. If your software development service provider is aware of the schedule pressures at a very early stage, it can choose a delivery strategy and development methodology that delivers the expected outcome.
6. Deciding On the Technology Stack
What is the best option between Angular and React? Is node.js better than Django? How about Postgres or should I select between MySQL and MongoDB ? What would be the best choice between Microsoft Azure and Amazon AWS?
There are many such questions that must be rattling around in your head. And since each of these questions have serious cost implications on your software development project, not just today but also in future, taking the right decision is the only option you have. We would recommend you to weigh in on these two things while selecting tech stacks:
(i) Type of software project
Type of software development project affects choices and thus the cost. For example, if it is a backend web development project, your common choices for programming language would be either Java or Python. But if your project is of PC game development or enterprise app development, where memory management is not manual, then preferred programming language would be C++/C# because of its ecosystem, its closeness to hardware in OS and drivers.
If you evaluate the scenario from the cost perspective, hiring for Java programmers is easier and with more options available, you have the scope for negotiations, whereas hiring for experienced C++ programmers would be heavy on your pocket.
(ii) Vendor Support
You won’t like to be using anything in your stack that is not future-proof, as in after a few years, if you wish to enhance the capabilities of the system, you will have to work from scratch. While selecting a tech stack, always check what top companies are doing and also who is behind the technology, such as Angular, a mobile and web development framework, is sponsored by Google and React, a framework for UI development, is promoted by Facebook.
When you select technology of the reliable vendor, you get the assurance of long-term vendor support. However, keep in mind that the tech stack must fit your requirements for design, development, environment, scalability, and migration.
7. Balancing Between Skill and Experience
Skill and experience should have strong project relevance.
From project managers to software developers, everyone in your team must have relevant skill and experience, where skill brings the technical competency, experience introduces pragmatism and perfectionism that helps in implementation as per plans.
A good programmer has expertise in quick-and-dirty hacks as well as extremely refined robust coding. If you have budget constraints, try to create a balance between senior software developers and executives. On every 5 developers, have one 1 senior developer. Also, hire software developers having experience relevant to your project like it is possible that a developer has 6 years of experience but only 2 years of relevant project experience.
A team that has skills to understand functional requirements, can think from the project’s end-user perspective, relate to software’s users’ challenges and develop the software keeping these in mind will create the best balance and the outcome.
8. Tracking Budgeted vs. Actual Expenditure
Often, when building software, we are able to understand and track the high-level deliveries but end up missing micro-level visibility that impacts timelines and the cost. Defining micro-level tasks/deliverables and formal tracking of accomplishments, milestones, and identifying and addressing problems in a timely manner is effective in controlling cost.
There are two benefits of tracking: quality control and cost control, where one is a consequence of another. Tracking budgeted vs. actual expenditure will alert you that something is not right and is deviating from the plans, which then triggers deeper cost analysis.
The cause of the difference between what was expected and what is happening could be anything from mistakes and complexity in codes, bugs and vulnerabilities in the system, or new requirements proposed by the business teams. Regular tracking of budget makes you aware of the existing stage of budget, while alerting you for any red flags in the software development process.
9. Quality Control
In software development, source code determines many programming decisions, and every decision in a software development project has a cost impact.
Having a robust quality control system in place is necessary to ensure that every code is reviewed and inspected on a routine basis in order to avoid any fault in software and to achieve finer granularity. Peer review and automated and manual testing could help you curb any violation of coding standards, choosing bad boolean names, long function, and ambiguous comments.
Code review and analysis should be implemented at a very early stage and developers themselves must take accountability for their code quality, as many empirical observations support that the cost of defect repair is often larger than the coding. When outsourcing your project to a software development company, discuss with them how they approach quality control and manage code smells.
10. Support and Maintenance
If you have not allocated enough resources for the maintenance stage, chances are the new cost elements will leave you frustrated. The problem is many relate support and maintenance with just bug-fixing, whereas, according to a research, bug-fixing is just 21% of the entire proproption of the maintenance task.
There are a range of non-corrective measures, which includes aligning with customer priorities and actions based on that such as enhancement capabilities and removal of obsolete capabilities, and software optimization.
You may not be required to take all the measures on an immediate basis. But you cannot ignore them for long, so practically it would be a better approach if you have proper software maintenance planning done with your software development company and extend the budget for relevant processes and activities to avoid last-minute surprises.
The Sticking Points
The software development industry is capable of catering to comprehensive requirements—whether you have a small project with budget constraints or large IT projects with vast scope. Just be practical and meticulous so that no unknown interferes with the outcome of your software development project and even if it does, you have a system ready in place to resolve it before it becomes a potential threat.
Book a no-obligation consultation
Drop in your details and an analyst will be in touch with you at the earliest.