How to estimate software development effort?
Estimating software development is one of the most challenging tasks any web development outsourcing company faces. It often means operating with many uncertainties in mind. Doing it right, however, is crucial not only for organizational purposes, but for the final product as well. Find out what software development team does to prioritize tasks and pick those that will make your product a success.
Estimating software development is difficult…
Only those who provide professional web application development services truly realize how important and difficult the estimation part is (another closely related topic, but focused on the technological feasibility, is proof of concept in software development). If you happen not to be familiar with it, a good point of reference would be trying to estimate how long it will take to write a book, design a new car engine, or reverse engineer the coca cola recipe. How long it will take depends on many factors that can’t be all fully understood beforehand. If it’s not the case, it probably means that the project is not that groundbreaking and unique as it appears to be.
Still, estimation must be made so that both the development team and the customer can gently move from those uncertainties to what’s supposed to be a quality project that meets all the needs of its target audience. Now, how do we do that?
…but we know how to make it easier.
Before we can introduce any fancy stuff to alleviate our custom development estimation struggle, the very first task is to gather as much information as we possibly can. We talk to the client to understand the way any potential product feature and its business purpose are justified. The more we know, the less uncertainties to deal with. Less experienced teams should get on board a dedicated expert that can organize the information in a way that makes estimation easier.
Agile- and scrum-based estimation techniques are what follows once we have all information (we are able to get at the beginning).
With proven Agile/Scrum techniques!
There are many efficient Agile techniques that make estimating software development easier. These include expert judgment, planning poker and wall estimation (also called the Big Wall). All share some similarities:
- They are based on the concept of user stories – short explanation of each feature/task that comprise the project from the user perspective. Usually, each user story is written on a small paper notecard so that it can be easily used for further deliberation
- User stories lead to story points, that is relative estimation of how difficult to implement and important for the project each user story is
Story points often turn out quite confusing. Software development teams use them to assign numbers to each user story, expressing its difficulty relative to the rest of them. But since the more complex a task is, the more you can potentially underestimate the time/effort required, it’s not recommended to just rank them, say, in the 1-10 scale. Instead, we use some different methods. The Fibonacci numbers are a sequence of integers in which every number is a sum of two previous numbers (1, 2, 3, 5, 8, 13, 21). The t-shirt size uses values such as S, M, L, XL. One can also use powers (1,2,4,8,16,32). Think about it as relative weights: If we were to rank cars in terms of their weight using the Fibonacci numbers, the mini cooper could be 2, a large lorry 13, and a medium-sized track 8. The estimates don’t have to be perfectly precise, but should be sufficient to give a clear picture of how much ‘bigger’ or ‘smaller’ some user stories are.
In practice, we would rank user stories starting from 2 (using Fibonacci numbers) so that we can always have number 1 in reserve in case a very light/short user story surfaces.
Let’s take a closer look at two popular Agile techniques for software development project estimation.
This technique requires the whole development team to participate, including testers, UX designers, analysts etc. They are all handed planning poker cards with a number from a sequence (1,2,3,5,8,13 in case of the Fibonacci numbers). The Scrum master introduces a user story. A discussion follows with everyone free to ask any questions. Next, each person picks a numbered card that in his or her opinion reflects the relative size of the story. If everyone picked the same number, the estimation for this user story is over. Otherwise, it continues until everyone agrees on the number, Discussions are held between subsequent deals are very important.
Planning poker is a great choice for estimating software development when the number of user stories is relatively low. When there are a lot, and, additionally, you wish to include stakeholders in the equation, wall estimation is the way to go.
Much as the name says, to perform this technique, you need a large piece of wall. Use the x and y axes to divide it. The vertical line indicates priority. The higher a user story is placed on it, the greater its priority is. The horizontal one indicates size – the further to the right a story is placed, the greater its size (time/effort required) is. You need the whole team to determine sizes, but the priority may be discussed among the Scrum master/project manager and stakeholders with the rest of the team optionally present to answer questions.
Once user stories are assigned, all that’s left is to divide the wall with the sequence integers (e.g. 1,2,3,5,8,13). Each story falls into one of the fields for both priority and size.
To learn more about estimating software development, read our another article about fixed budget and the fixed price vs time and material debate.
Sensinum is a Polish software house producing cutting-edge development solutions and providing them to companies, marketing agencies and teams. Whether you need a subcontractor or want to cooperate with a software house directly, Sensinum gives you seamless communication and experienced developers regularly working on big projects. Take a look at what we can offer by contacting us and consulting your software idea for free.