This is Part II, continued. Part I available here.
Divide and Conquer
Hope, by this time it is clear that we are capable to discover as many facets of the unknown as possible. Next step is to follow Caesar’s principle, that is as simple as “divide and conquer”, apply more attention to the uniform sets [it's Alexander The Great on the picture]. Circles are separated from squares. Within circles you comfortably deal with all circles, because they are all similar. Within squares you are good with analysis of entire set too. Because sets are uniform, by knowing one item you could think about entire set with good probability that your conclusions will be correct. In the analysis of some software project or entire solution (software + hardware + everything else) you will come up with many sets of uniform items. The picture below shows only circles and squares.
In real-life you could apply different classifiers, how to separate objects of on type from objects of another type. This multiple choice of classification is depicted as separation lines. They are schematic, but they speak for themselves, there are options how to isolate uniform things and group them together. In our industry those items are UI forms, function points, workflows, use cases, files, tables, users, B2B interfaces, coding, management, UX design etc. Everything that takes place. Independent on categories. We apply independent views, orthogonal, that’s why UX design activity is as good as number of tables or so. Recall how you looked at Saturn, you have discovered it from all possible sides and did not overlook anything.
What to do with those sets of uniform items?
First, check what constitute the scope of the project. Select those sets that correspond to 100 percent scope. If you did good analysis before, you will have alternatives how to build the scope. Some sets will be reused, but others could be interchangeable. E.g. Set of B2B interfaces could be reused, while some core functionality could be hidden within set of use cases or set of workflows or set of forms. And the more options you have, the better you did before! It will pay off.
Now we are ready to count the items within every set, then sum all together and get the scope. Repeat the exercise for other alternatives of the scope, come up with other results. Look at them and feel the numbers. If you did good dissection of uncertainty, your numbers will look similar. If not, return back and analyze more. You overlooked smth important. This check is very easy, but it is extremely important for you regarding trustworthy of your numbers. At this stage it is important to get the range. E.g. are we dealing with tens, or hundreds, or thousands, or millions and so on. Select 10^2, 10^3, 10^4 etc as checkpoints, figure out in what range your initial estimate falls. All refinements will be after that.
Who are you Dr. Fermi?
Is it even possible to calculate firmly?! Yes it is. Dr. Fermi was a physicist. This is a wiki page of Enrico Fermi. He worked on the first nuclear reactor, nuclear bombs and other dangerous stuff. Fermi received the Nobel Prize in Physics at the age of 37. I would like to highlight his excellent quick calculation of the strength of the nuclear explosion. Fermi was present as an observer of the Trinity test on July 16, 1945. As the shock wave hit Base Camp, Aeby [engineer] saw Enrico Fermi with a handful of torn paper. “He was dribbling it in the air. When the shock wave came it moved the confetti. He thought for a moment.” Fermi had just estimated the yield of the first nuclear explosion. It was in the ball park. Fermi’s strips-of-paper estimate was 10 kilotons of TNT; the actual yield was about 19 kilotons. Almost 2x difference, but how fast he did it! You could do the same. Think like Fermi on your “paper pieces” within uniform bins and produce a good enough calculation in very fast manner. Below are situations that are not so unknown as you could thing.
- how many frames are in Tarzan movie?
- what is a weight of the Boeing 747?
- to what car does that wheel belong?
- how many leaves are on that tree? or where that tree grows?
There are many variations. Questions about Tarzan movie is simple, because you are instantly dealing with uniform set of objects – frames. You simple take typical duration of the movie, e.g. 1 hour; then number of frames per second, which is either 25 or 30 (in different TV standards); multiply and you are all set. With Boeing it is more complicated, because full scope is not from one set of uniform objects. You will have to calculate people (which are uniform), luggage (which is uniform), fuel (also uniform), aircraft itself etc. More complicated than Tarzan movie but doable. With yellow wheel and blue car situation is even more different. You could apply Google Image Search to find smth similar and reverse engineer the car. It could be Subaru Impreza STI, crazy rally monster car. Remember, looks from all possible dimensions. Do not limit yourself within few of them. This is a methodology. I have just reminded it again.
How can I improve the numbers?
Apply Pareto principle within your sets! Check for Pareto principle at the 100 percent scope level. It is a Nature in everything, because everything is a product of evolution. Computers and software systems are also products of our evolution. Same laws work everywhere. Including the law of Normal distribution. If the number of items within your sets is sufficient (it is likely that # is bigger than 50), then you could apply Pareto rule and get better results. When you are OK with calculation of every scope alternative, you could play with your final numbers. Look at the differences and judge, why they happened. Include other people into the estimation, give same methodology, compare results. Pay big attention to the biggest deviations and ignore similar numbers.
Other ways for refining the numbers are in the methods of judgement. You could drop min and max estimations and avg the remaining. This is too simple. I propose to plug probabilities here. For every alternative estimate you should provide probability that it is correct. The method how to judge the probability is simple, modify the number until you get unsure that project is doable or undoable within give efforts. In other words always find the p50, probability that project will succeed within those efforts or fail, with probabilities 50/50 for each. Then move to the higher probability for success. Stop where you think it worth to stop. You will have various estimations with different probabilities, like p60, p90. Melt the numbers together again, give more weight to more probable numbers.
How can I get even better numbers?
Make sure you looked for analogous project done within your organization or in your previous experience. Use those numbers (adjusted) as one additional estimate. Use estimation tools, such as QSM SLIM if you have a license. Melt those numbers together with other alternatives you calculated. There are more ways how to improve numbers even more, without use of expensive tools like COCOMO or SLIM. I will tell about them in next post. So far, try to calculate the number of apples in the world:)