Speed and accuracy of software evaluation
Let's say you have a project that will include two web applications (which will share DAL / DAO / BO assemblies and some OSS libraries):
- a semi-comprehensive management application that uses Windows Live ID for authentication, and is also capable of interacting with various notification services (email, sms, twitter, etc.), targeted notifications - about 10% of the functionality.
- a low-level, end-to-end custom application with less functionality but more secure, which also uses a Windows Live ID for authentication
There are two of us with average grading opportunities, and we cannot do it in two days, even if we want / need to. At least that would be a distant estimate.
- How long do you / usually take to make a reliable / valuable estimate?
- What would you suggest to speed up the assessment without sacrificing accuracy?
- How much slack (in terms of cost / time) you would add depending on the speed of the estimate (when you said: I could estimate it a little more, because I think it still doesn't work at all).
source to share
Interest Ask. I'm afraid the answer is "it really depends!" I know this is not very useful (although it is true), so here are a few factors:
1) Quality and completeness of requirements and their specification. This, for me, is most often the killer of the project evaluation. If you don't have quality requirements, you don't have a reasonable basis for the assessment. We use the "RUP-lite" style of development here, since the design engineer I will not give anything but the most rough estimate until we finish the "development" phase and get out of product management, that the core of 80% of the product characteristics is actually business is exactly covered.
2) The volume and nature of the product. Bigger / more expensive / harder = significantly longer to appreciate. I have been supplying terrestrial solutions for telecom operators for many years that have normal reliable carrier requirements (the "5 9" uptime required by the SLA means you really have to do good solution design and failover!). In such an environment with all the moving parts across functional areas of the business, job evaluation will depend on getting the big picture ... in particular, cross-functional dependencies and external dependencies can be the real killer here. However, I have also created many shrink-wrapped and corporate programs. This is much easier in these environments because the scope is usually much smaller and therefore easier to assess.
3) How "new" is this project? How is “new” a command of this product or set of technologies? The higher the product or command, the longer and more buffer you have to allocate.
4) How specific do we need to be? If this is a "rough guess" then I will describe my technique to give a conservative estimate and then I will use it. If we want a "real" estimate (like the one used by my boss and to which I will be responsible for the shot), I will need input from several different managers and team members who will take time to analyze the requirements and make recommendations among themselves.
It can only take a couple of days or weeks ... it all depends on the size. "Two or three days" is, frankly, not long enough to pick anything other than the most trivial projects.
The best thing you can do to improve the quality of your estimates is to improve the quality of your requirements and be ruthless in identifying hidden dependencies.
One last thing: FWIW, I've been doing this since 81, and I believe that accurately assessing project duration / cost is the hardest / most dangerous part of engineering management.
source to share
Since we use Agile methods (Scrum in particular), it takes us about an hour longer than it takes users to prioritize.
More time does not lead to more accuracy.
So the tricky part is allowing users to prioritize. We hear this discussion all the time "if this is not completed in time, it is all useless." "Except for the XYZZY component, which has a certain value." This argument can go on for hours until it decides that XYZZY should come first.
Typically, we try to create 4 week sprints. The first ones are a little tricky because there is always something new. After the first two (or three) we seem to have established a steady pace.
Each use case has a relatively simple, subjective assessment of how it will be done to complete it. Everything that is needed in one full sprint must be decomposed. In most cases, multiple use cases are combined into one sprint.
Formal ways to count each use case to better handle costs and scheduling. We don't use them because extra effort doesn't help.
After the first two sprints
There is new and different functionality,
All priorities have changed
The details of each use case have been drastically revised.
What does “precision” mean when the thing you're trying to measure changes at the end of each sprint?
One lesson. Parts of my company spend a lot of time completely determining what will be delivered and then measuring that they are delivering exactly what they want.
Customers notice this, and one said that we "spend a lot of time on what the contract says, but that's not what we want."
The problem with strong estimates is that they take on a life of their own. The more you "invest" in an appraisal, the more the appraisal appears to be useful. They are not helpful because they tend to be completely wrong. They are based on assumptions that are completely wrong.
It is a bad policy to spend more time evaluating. The "hard" answers are not more accurate, but they are more valuable with each layer of management. As you and the client learn, you eliminate numerous assumptions, and you absolutely must continually evaluate them.
Don't do it ahead. If your contract requires you to do this ahead of time, make sure you have change control and let the client know that you will absolutely make changes as you go along. As you and the client learn, you both need to make a change.
source to share
To make a reliable estimate, you really need to create a list of tasks to be completed. Break it down into stories / assignments (even if you're not using flexibilities) and rate them. This can be time consuming - especially the amount of research (look for libraries to do this to reduce cost). I would take at least 3 days - however 1-2 weeks sounds more reasonable to me. It doesn't seem like a small project.
I would not risk speeding up the assessment process unless you have some reasonable results. Estimates are never accurate, and you just make things worse.
The option should be to make an absolutely rough guess for a few hours and then start working on it already (within a week or so). At the end of the week, you will be able to give a better grade based on your current progress. However, it is important to create a good prototype (which looks like crap but has a little code in all regions).
source to share
Okay, general quote: "The price will be between 50% and 400% of our initial estimates." The reason this quote grew up is because it is true. The accuracy of the estimate largely depends on your knowledge of the domain. If this is the 100th time, you have sold this type of blog than you are confident in the estimates. However, more often than not, you don't have this deep knowledge of the domain (if the application already exists, why create a new one?).
Agile development has become popular because people are largely recognizing that the traditional waterfall mindset simply doesn't work for most real-world projects. You should apply the same approach to your estimates. Obviously, you need a selling point of some kind, but remember to inform your customers that this information is very vague (and that no matter what any competitor tells them, their estimates are also vague).
You need to sell iterations, and therefore evaluate iterations as well. I'm sure some marketer at any company will know how to handle the paperwork and legal material for this, so this shouldn't be a big deal.
Consider a project of 5 iterations:
- Start by creating stages. They are subject to change, but will provide your first estimates for the final product.
- Planning iteration # 1.
- Rate iteration # 1 and adjust overall estimates accordingly.
- Do iteration # 1
- Flush / repeat before iteration # 5
- All is ready:)
- Reflect your project. How have your grades evolved? The reasons? Learn by doing :)
Most customers would rather have partial grades and partial exemptions than some unrealistic target that some suit sold :)
source to share
Slightly deviating from the original question, but it's also important to learn from the ratings you've made in the past, keeping track of how long he's actually been doing what you've rated.
We estimated 5 days to create these pages, in fact it took 10 days, etc.
In the long run, this kind of information (hopefully!) Will allow you to make more accurate estimates.
source to share