52
Context: I was "educated" in the methodology of Unified Process. I know Agile is very popular today, but I have very little knowledge of the process. I understand the philosophy that "changes are inevitable, it’s better to prepare to deal with them well than to try to avoid them", but that’s not much consolation when I’m charged with presenting a budget - even if initial - for a development project. By the PU, the conceptual design is first proposed (which is a simple matter of estimating the number of hours required to stand up and analyze all requirements, and with few negative consequences if the judgment is wrong) and the implementation project is based on this. In theory, it all sounds very good, but I lack practical experience to corroborate this statement.
Problem: I know the correct answer to "how to budget a software project" is: "it depends"; it depends on the scope, it depends on the specific requirements, it depends on the client... But the fact is that potential customers demand at least a preliminary forecast of deadlines and costs (and sometimes platform), before the requirements are even detailed. My difficulty is in establishing these initial parameters, or even adjusting my expectations about what is achievable in practice.
Question: What parameters should I observe to make a budget initial (or preliminary) to an arbitrary development project? More specifically:
I must charge for the initial withdrawal of requirements/scope definition, or this is a burden I will have to assume?
- And if the answer is "do not charge", should I insist to the client that it is not possible to budget anything before making this withdrawal? (the customer will not like it - since raising requirements requires involvement of your team as well, which brings you indirect costs even before you are sure that you will even sign with us)
In the case of a project of great scope (although still quite undefined), should I separate it into a conceptual project and an implementation project? Or is that counterproductive?
- Clarifying: conceptual design is the one in which I survey and analysis requirements, and the deliverable is a more budget specification for the implementation phase; the implementation project - this already done with more solid foundations - can rather be flexible with respect to changes, not needing to follow the specification by iron and fire. But it still needs a basis to be budgeted, and this basis 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 silly to do [large-scale] project before you start implementing (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 that budget be made? Ideally, changes in the 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 on time Y upon 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 if it is better to make a "guesstimate" (preferably, on top) of the cost and refine over time (but committed to the completion of the project at all costs)or whether conditions should be laid down to ensure that - if the project cannot continue within the time limits and costs set - it is concluded by mutual agreement of 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 who occupy a leadership position should have already had to make estimates under uncertain bases). And not to get too broad, the central point of the question is: the how much I must assume onus when establishing a scope/preparing a proposal for free, and what are the minimum parameters I need to collect before saying: "from here, only paying me".
Note: although this question is tangential to "project management", it differs in the sense that it is more of a "preliminary project" - something that needs to happen before an opportunity becomes a proposal that will become a project - but it is still something that directly involves the developer. For that reason, I opened a new item "budget/hiring issues" in the goal, if you think this kind of question should be on or off topic, give your opinion there! Otherwise, I hope I haven’t gotten too broad/subjective...
– mgibsonbr
Related question: "Making a budget and time plan for a software project" no [programmers.se]
– mgibsonbr
From an agile point of view, this article presents an interesting insight http://blog.dtisistemas.com.br/como-orcar-um-projecto-agil-2/.
– Vinícius Matos Paiva