How to estimate for software development projects
For any software solution to be of a high quality, a number of important factors will first need to be taken into consideration to determine whether the project is viable. How much time will be required to develop it? Which browsers need to be supported? Will the software be able to cope with large amounts of data? Will additional research need to be completed before development begins?
This is where estimating comes in.
Estimating plays a pivotal role in allowing us to complete projects on time and on budget. At Enable, we realize how important it is for us to provide accurate estimates, both from an internal scheduling perspective and a cost perspective for our clients.
Before estimating starts
Before the development team at Enable will carry out a piece of work, a specification document will be produced in cooperation with the client, which details exactly what needs to be developed and how it should work.
Following the creation of the specification document, estimates are carried out by the development team to determine the time they believe will be required to implement the specification, alongside feedback on the specification for the analysis team to consider as part of the estimating process.
This estimation process is followed for all our specifications, no matter how small or large, giving us the confidence that our tried and tested methodology is always adhered to.
What should be estimated for
On top of the time required to write the code or implement a required configuration, there are many aspects of a project to consider when estimating for a new specification. Let's dive in and take a look.
How much time is required for a developer to implement a specified unit of work?
Time is always required for a second developer to independently test the functionality of a completed unit of work, as well as time required to resolve any bugs raised as a result.
Browser and operating system support
Which browsers and operating systems need to be supported? Is additional time required to account for this?
Will there be any user interface work? If so, time will be required to design the interface and ensure the best possible user experience.
Security is always one of Enable's most important concerns, and whilst Enable's best practices produce highly secure applications as a standard, extra effort may still be desired to guarantee a solution is the safest it can be.
If a solution is WCAG compliant, or has other specified accessibility requirements, time will be required to make sure these standards are met.
A client may have a requirement to load test their system in order to track performance over time or measure the outcome of a performance enhancement phase.
Project management time
Every project will come with management overhead -- this is time for the team leader to assemble resources and split the specification into build tasks to assign to the project team.
Is the number of users relevant to a system? The anticipated traffic through a system may change the best approach when implementing a new solution.
What quantities of data will the system have to deal with? Large amounts of data may slow the system down if it is not optimized to deal with this efficiently.
A brand-new system will require dedicated solution preparation time to set up the required infrastructure.
In some cases, a specification document may propose use of a particular technology or require a change the development team is at first unsure how to tackle. Time may be required to research the technology or investigate alternatives.
Things to do at the same time
Other than providing estimates for the time required to implement a piece of work, a large aspect of estimating is to raise observations about the specification for the analysis team to consider. These may range from something as simple as a spelling mistake to more in-depth concerns about technical limitations or behavioral clarifications.
An observation may indicate that a requirement is not feasible in its current form. This could be due to limitations of the technologies employed, making a requirement an impossibility. A requirement could also turn out to bring with it some non-trivial problems as a result of the system architecture or data volumes involved.
A requirement may be ambiguous or lack enough detail for the development team to implement correctly. If a developer encounters a requirement they believe has not been fully explored, they will raise an observation asking for the requirement to be further articulated.
At each stage of the estimation process, the estimator uses a combination of their expertise and previous estimates in order to establish how long a unit of work will take to complete. After a project is completed, the reliability of the estimate is reviewed, which allows us to improve the accuracy of future estimates -- for example, by identifying functionality that frequently takes longer to implement than expected.
Enable builds bespoke software with a strong focus on quality. Our aim is to be the software solutions provider of choice for companies needing strategic software products. We realize how important it is for us to provide high-quality and accurate estimates for all our clients, however large or small their business may be.