How to make the initial budget of a software project?

Context: I was "educated" in the methodology of the Unified Process. I know Agile is very popular these days, but I have very little knowledge of the process. I understand the philosophy that "changes are inevitable, it is better to prepare to deal well with them than to try to avoid them", but this is not much consolation when I am charged to present a budget-even if initial - for a development project. For the UP, first the elaboration of the conceptual project (which is a simple matter of estimating the number of hours needed to get up and analyze all the requirements, and with few negative consequences if one errs in the judgment) and on this basis the implementation project is ordered. In theory, everything seems very good, but I lack practical experience to corroborate this statement.

Problem: I know that the correct answer to "how to budget a software project" is: "depends"; depends on the scope, depends on the specific requirements, depends on customer... But the fact is that potential customers demand at least a preliminary forecast of deadlines and costs (and sometimes platform), even before the requirements are detailed. My difficulty is in establishing these initial parameters, or even adjusting my expectations about what is or is not achievable in practice.

Question: What parameters should I observe to make an initial (or preliminary) budget for a arbitrary development project? More specifically:

  • Should I charge for the initial requirement lifting/scope setting, or is this a burden I will have to take on?

    • What if the answer is "do not charge", should I insist to the customer that it is not possible to estimate anything before making this withdrawal? (the customer won't like it - since raising requirements requires your team's involvement as well, which brings you overhead costs before you even have the sure you will even close contract with us)
  • In the case of a large-scope (though still quite undefined) project, should I separate it into a conceptual project and an implementation project? Or is this counterproductive?

    • clarifying: conceptual project is one in which I do requirements survey and analysis, and the deliverable is a more budget specification for the implementation phase; the implementation project - this already made with more solid bases - it can be flexible in relation to changes, not having to follow the specification to iron and fire. But it still needs a base to be budgeted, and that base would be achieved through conceptual design.
    • Why would it be counterproductive? I don't know! It's just what I always hear from Agile proponents: that it's bullshit to do a [large-scale] project before you start implementing it (at least a "sprint" should be planned), that the requirements change all the time and in the end little of what was designed at the beginning will be implemented in fact, etc.
  • In which Terms should this budget be made? Ideally, changes in requirements should reflect changes in deadlines and costs (in this the UP Class and the Agile class agree), but if contractually I am obliged to deliver X within the Y deadline for payment of Z, it does not seem feasible to have a contractual change every time a renegotiation of deadlines and costs.

    • legal issues aside (since this is obviously outside the scope of the site), what I ask is whether it is better to make a "guesstimate" (preferably above) of the cost and go refining over time (but committed to the completion of the project at all costs), or if I should establish conditions so that - in the impossibility of continuing the project within the established deadlines and costs - the same is terminated by both parties ( as to do this, of course, is the responsibility of our lawyer).

Preferably, I would like answers based on previous experience (I know that not every developer is directly involved with this type of question, but at least those in a leading position must have already had to make estimates on uncertain grounds). And in order not to get too broad, the central point of the question is: the How much should I assume from burden when establishing a scope/preparing a proposal for free, and what are the minimum parameters that I need to collect before saying: "from here, only paying me".

Author: Comunidade, 2014-07-02

2 answers

Scope and estimation

The budget of a software project is directly involved with the ability to define the scope and estimate the effort required to develop the solution. And any analyst with a minimum of experience knows that these are two extremely difficult things to do with accuracy.

The goal during the project initiation phase, on which the budget depends, is to reach a consensus as close to reality as possible on what should be done.

Both parties are very interested in the correct estimation, in order to minimize the risk of the project. This is the keyword here.

If the project is estimated less, the unforeseen events that will arise may make it impossible, in addition to losing the time to market. If it is overestimated, it is possible that the customer will give up on a project that would otherwise be successful or that other projects will be harmed, since the workforce will be unnecessarily crazy.

Change of scope

"Traditional" (such as the OR) and agile processes have mechanisms to deal with the inevitable changes in scope and mitigate risks.

The OR, for example, mitigates the biggest risks first by prototyping the most complex requirements and generating an executable architecture at the design stage.

Agile methodologies do this mitigation through constant, sometimes weekly, deliveries. They too they seek to postpone design decisions based on the idea that the earlier something is defined, the harder it will be to change later (casting).

The main difference when it comes to changes is that, while they are often treated as exceptional cases in "traditional" processes, in Agile methodologies they are the rule.

Scope open or closed?

Some time ago I wrote a article about the Iron Triangle to try to explain that in a project from software, we can't have everything .

Iron Triangle

The customer and some managers want us to deliver everything (scope), fast (time), cheap (cost) and with quality. But this is impossible!

The concept of the Triangle serves precisely to demonstrate that we must make choices, even if unconsciously.

For various reasons, "normal" development is done with fixed scope, time and cost. This means that when there are contingencies, the quality is sacrifice.

Agile methods try to fix the quality and keep the scope variable. This means that if a feature doesn't "fit" in the current sprint, it can be postponed.

Also, if the developers deliver a functional version of the system at each end of sprint , then the client may decide to extend the project to include more functionality or shorten it if they consider that the system is already good enough to production. This is supported by some research (lack of sources) that shows that users do not get to use most of the functions of a system.

In the ideal world of agile, the client would not need to receive a final budget for the entire project. Planning would be done on a relatively short horizon.

The problem with this is that if the customer wants to keep the scope fixed, then the cost and time would be variable, since New sprints would occur until that the scope was fully implemented.

Estimate

Postponing decisions and estimation is good because the requirements become clearer in the course of the project. At least in an ideal scenario. This is well represented by the Cone of uncertainty:

Cone of uncertainty

The problem is that this does not help in an initial project estimation! Even in Agile methods, initial estimation sessions are held to enable the sale of the project.

At the end of the day, it all comes down to the ability of professionals to estimate. This involves time, which, in turn, involves cost.

Effort to estimate

How much effort to spend on estimation? It is a complex question, but many authors agree that it can be neither little nor much.

Accuracy Graph by effort

"small" scope projects

For small projects, especially when the development process has already been repeated several times, there is not much discussion.

Think of websites, for example. A webdesigner can certainly visualize most of the activities of a "website project" while chatting with the client. There is not enough complexity that prevents the developer from creating a mental model of the problem.

"large" scope projects

Let's consider "large" scope projects those where the complexity is such that it makes it impossible for a single professional to keep in mind the entire project.

In these cases, in my experience, the best estimates happen when the requirements are evaluated by the development team and the implementation of each of them is discussed. I have never seen good estimates made by a "professional estimator", project manager or by a single analyst.

But in practice it is not feasible to interrupt the work of several people for each new proposal.

Pre-estimate

A solution that companies adopt to large projects is to make a pre-estimate. This would be a superficial analysis of the problem involving few specialists, in order to generate a range of values among which the final cost should remain.

The concept of range of values is very important. As can be seen in the Cone of uncertainty, this range turns out to be large in the beginning. The accuracy of the result depends on the experience of professionals and how many similar projects have already been develop.

Of the companies I know, no charges for a pre-estimate. It is a risk they take for themselves, diluting the cost of it in the projects actually contracted.

If there are too many requests for pre-estimates, you can filter the project proposals according to some criteria:

  • verify that the project is in accordance with the profile of the contracted company. If the company has a focus on mobile solutions, it may not be feasible spend time with application proposals desktop .
  • check customer profile. Are you a "strategic" client, that is, who has already hired or is planning to hire other projects? Are you a "serious" client, that is, who has need and interest in the project, or is he probing?

When to charge for the estimate

There are exceptions to what I presented above. In the case of too complex projects or when the customer wants estimates a " pet project "can then be proposed.

In this scenario, one should estimate how many hours it will take to perform the complete estimate. This can also include wireframes, prototypes and documents that leave the customer satisfied.

Conclusion

Although there is no absolute rule, I can formulate some principles based on what has been presented:

  • estimate what the average flow of new projects and what the time medium that takes to make a good pet.
  • then set a pool of monthly or weekly hours to invest in budgets.
  • have the cost of these hours diluted to the remaining hours actually charged to customers.
  • if a large-scope project is to require a much above average time, you can choose to:
    • invest more hours if you are a strategic customer.
    • inform the customer that a project this size requires a "pet project" (pre-estimate), then budgeting only this initial project.

Keep a history

It is very important to account for the effort spent negotiating, estimating, writing emails and everything else that is not part of a project itself.

It is not uncommon for a simple project to require a full day on the phone and in exchange for emails.

Annotating the hours will increase the visibility of where time is spent and will allow adjustments to be made to minimize waste.

 42
Author: utluiz, 2014-07-07 13:09:55

I believe that to estimate a budget you must:

  • Know customer request
  • Split customer requests into tasks
  • Know the ability of the team
  • estimate the time your team members will spend to develop the solution
  • Calculate the costs you will have to do the project (infra, displacement, accommodation and etc...)

With this you will have an approximate cost of the minimum you will spend for do the service and make no profit. The more detailed this initial survey is, the closer to a real base cost you will get. This calculation will improve over time, add a percentage on this amount to cover any extra expenses. And don't forget to add your profit and a value to the after-sales costs (support, training and Warranty)

There are specific methodologies to deal with cost management PMI is one of them.

A link to have more information, because what I'm talking about is very superficial would be: http://blog.mundopm.com.br/2013/08/22/gerenciamento-de-custos / e http://www.ufpi.br/subsiteFiles/pasn/arquivos/files/Aula09_Desenvolvendo%20o%20Orcamento%20do%20Projeto.pdf

 5
Author: Sileno Brito, 2014-07-02 20:36:29