## Estimate @ Speed of Thought, Part III

This is Part III, continued. If you landed right here, it is recommended that you read and Part II to grasp the entire concept.

Enjoyed Fermi tasks? They are present around us, plenty of cases to get trained on. After we know how to observe the Unknown from many perspectives, convert observations into the numbers, classify observations into uniform sets, then applying Fermi calculations within the sets, and assemble the estimate for entire scope – time to pay more attention to the accuracy of the numbers. Probabilities really help. But in this Part III we will pay attention to other hidden tools, that gave us more wisdom. They will be described below, unordered, just section by section. Within every section I will bring the practical application, so that we are all set by the end of this post.

How many alternative estimations did you do?

The principle of least effort postulates that animals, people, even well designed machines will naturally choose the path of least resistance or “effort”. There is a whole theory that covers diverse fields from evolutionary biology to webpage design. Direct relation to the estimation is that in most cases there is only one alternative. Even if few of them, then they are for sure variations of the primary one. Because it was easier for people who did it. It was easier for you too. People are lazy, hence estimations suck. There was not enough independent alternatives, sufficient for comparison at the end, when you judge for final numbers (via various expert judgement methods). Hence, always force at least 5+ really independent paths of analysis and calculations to ensure your stuff does matter at the end. Use managerial power to make people produce more independent alternatives if you are manager. Force yourself to do so, if you are working solo virtuoso. One more trick, is to put different start point and let guys follow the least resistance path:) Your goal is to get alternative estimations, so apply such tricks to achieve it.

Paths of least resistance.

The magic of One.

First-digit law states that in lists of numbers from many real-life sources of data, the leading digit is distributed in a specific, non-uniform way. According to this law, the first digit is 1 about 30% of the time, and larger digits occur as the leading digit with lower and lower frequency, to the point where 9 as a first digit occurs less than 5% of the time.It is known as Benford’s law. It is observed pretty often, though not all real-life sources obey to it. Partially it is related to dynamics, because somewhere many year ago it could work for some certain data, or will work in the future, when humanity adopts (or augments) the numeric system.

Examining a list of the heights of the 60 tallest structures in the world by category shows that 1 is by far the most common leading digit, irrespective of the unit of measurement. Same could be told about the car weight (in metric system). People’s height is 1m and less than 2m (in metric system). Ticket price for trans Atlantic flight is often 1K and smth. So, it is ubiquitous.

Does it emerge in programming? For sure yes! When you calculate the volumes of code, data, classes, methods, number of people in organization etc. But we are interested in estimation. So, in estimation it is also observed, when you have first digit “1″ prevailed, either in man/days or man/hours or cost expressed in money (e.g. 10,000+, or 1,000,000+ in dollars). Hence, always check what is your first digit, and if not “1″, then do double-check why not. Probably it is OK. But you will know it for sure only after validation. Otherwise, if you applied sufficient number of orthogonal calculations and your numbers confirm Banford’s law, then consider it as additional argument that you did right!

Distribution of first digits (in %, red bars) in the population of the 237 countries of the world. Black dots indicate the distribution predicted by Benford’s law. More details and diagrams on wiki.

1.8x more

Sounds familiar? Overhead 2x in comparison to initial estimation? This pattern has emerged in computer world, at least it became popular in recent 25 years. “The first 90 percent of the code accounts for the first 90 percent of the development time. The remaining 10 percent of the code accounts for the other 90 percent of the development time.” Tom Cargill, Bell Labs. The pattern is called 90/90 or Ninety-ninety rule. It expresses both the rough allocation of time to easy and hard portions of a programming project and the cause of the lateness of many projects (that is, failure to anticipate the hard parts). In other words, it takes both more time and more coding than expected to make a project work. How it helps you? Just multiply your number by the factor of 1.8. It increases probability of successful execution within estimation (efforts/cost/budget, schedule). It could be applied at the stage, when you obtained estimations for subsystems. Especially when you get estimate with probability p50, use 90/90 to increase probability to p80 and beyond. The rule could be applied on top of all as well. It can’t be distilled to the exact reasons, it it just observable, hence respect it and use as a tool for fine-tuning your numbers.

Elegance, Beauty

This is my favorite. As aircraft constructor Antonov said: “Beautiful aircraft flies perfectly”. It is my translation, but the essence is unchanged. Beautiful things work better. If some thing works pretty well but looks ugly, it means there is an opportunity to improve its design. If some beautiful thing works good, than probably it is it, the thing is at its evolution end. There is no way to improve its design. Back to estimation and computer systems. If the architecture (component, modules, network, database, deployment etc) visually sucks, then it means two things: representation sucks or the subject sucks itself and must be improved. Elegant solution wakes up positive emotions. Your clients and partners will prefer elegant and beautiful solutions, even if they clam they need smth quick and dirty. It is bullshit. We all people, and when we go to the store, we do not buy quick and dirty shit, neither pants nor shoes. We select smth better, according to our taste. When we go to the launch, we do not eat dirty… we probably use to eat quickly, but definitely not dirty meal. You’ve got the idea. That Unknown that you got for estimation should be perfectly beautiful now, because you dissected it with your analysis, saw the true picture, understand the goals, desiderata, limitations, alternatives etc, build elegant solution and estimated it properly. If not, then your analysis did not succeed, you overlooked smth important. Return back and look and the unknown again. Until you see the beauty. After that you could estimate.

Conclusion

It is possible to estimate quickly. Just learn from the mother Nature, respect emergent pattens, recognize them in your computerized business, work, being. We can not explain those patterns, neither prove them nor decline. We are able to observe them and agree they were, they are, they will be around and within us. As you probably understood, they are applicable not solely to the estimation, but to everything. Estimation binding was done to easy your estimation exercises.

## Estimate @ Speed of Thought, Part II

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:)

## Estimate @ Speed of Thought

Decided to share my research here, published for the first time somewhere at the beginning of 2010. Motivation is to teach others how to do ballpark estimations very quickly. This is extremely important in consulting job, when you have to calculate really quickly and accurately.

Table of Content

• How to see the unknown
• Who are you, Dr. Fermi?
• Emergence of patterns

What is Unknown? What Unknown is?

Some mechanisms in our brains classify things as Unknown. It happens because of multiple reasons. Brain classifies as Unknown everything that we call Unclear, Invisible, Complicated, Scary and so on. Below are visualization of what I mean.

Unclear. What do you see on this Marsian picture: face or pyramid? Unclear again. What sign do you see?

Invisible. What do you see below? Nude woman or elephant?

Human perception works in such a way that we see in details what is in front of our nose, then almost without details what is aside, and very blurry what is a distant to us. It is related to all objects that we look at. People below see three modules, the structure of the first module in details, some high-level structure of the second module, and almost nothing in the distant third module. In out case, this is an abstract representation of some real-life objects, e.g. airport with multiple terminals, enterprise software system etc.

Complicated. Are you comfortable with understanding of the diagram?

Scary. Scary leads to unknown, because it blocks the brain from creative thinking. Unpleasant, non-aesthetic, negative is processed less efficiently than positive things. I could be wrong with biological terminology, but the fact that positive things works better is widely researched in UX (User Experience) field, and is confirmed by such gurus as Don Norman. It is Marylin Manson on the picture below, not Don:) And many people consider it as scary. Though the music is good. I played “Rock is Dead” and “Sweet Dreams” with a pleasure. The life is strange indeed. Nevertheless, scary things lead or nurture the unknown.

Why Unknown is a Top Problem in Estimation?

There are obvious quick answers. Incomplete list is here. IT industry evolves so fast. Industry people hardly keep the pace of evolution. Those things that passed by are falling into Unknown automatically. Many youngsters are involved into the work. As in any other industry, all youngsters are inexperienced. What is pretty straightforward to mature wolves happen to be unknown for the newbie. Answers required for yesterday. Sounds similar? Or another situation, everything almost understandable, but there are nuances – it is for different business domain. That domain specifics redefine the whole picture and known things are falling into unknown category very quickly. The match of skills and problems (or mismatch of them) leads to more unknowns. Add your reasons from your experience here! Come on! I would conclude this section that unknown is relative, but permanent. Relative means that for somebody it is unknown, for somebody known. Permanent means the persistence of the problem in IT industry. It was yesterday, it is present today and tomorrow we will face it again. C’est la vie.

How to Look at the Unknown?

If we concluded that the problem is recurring, hence we need a solution how to deal with it. How to tame the unknown? You should look at it as you look at the diamond. Look at unknown from all possible facets. Rotate it and look again. Grab it close to you eyes and look. Put it one meter from you and look. Look in the morning and at the afternoon. Look together. Look, look and look! This is a solution. Actually, it leads to the solution. Let’s do an exercise, a small workshop for you.

Workshop for You. Saturn!

If you are not an astronomer, this should be good unknown thing for you. Its name is Saturn. Saturn planet. To make some decisions about Saturn you have to know at least something about it. What could you tell me about Saturn? Quickly and reliably? Look.

OK, some things you really see. Some things you know from your school memories. It is sphere and there is a ring around it. Most people would stop here. But we go further! The sphere is not uniform. We should notice it and remember, because it might affect some decision making in the future. It is always important to classify uniform things and deal with them separately. Do not mix apples and dogs. Divide and conquer, isolate apples into one bin and deal with them, isolate dogs into another bin and deal with them there. Well, back to Saturn. There are many rings, not just one! This is also result of just slightly more deep observation of the same image. Invest slightly more time to analysis and it will pay off. But look differently from how majority of people look. Dig into all possible details that may lead (or may not) to better context for the decision making afterwards.

Good, we came up with some info. What else? How to get even more info? Solution is to look. Look again. Look in the different spectrum! Use infrared spectrum for example. Probably you would see smth new?

Wow, the temperature is different across the planet. Almost like on our Earth! Notice this fact. It is sphere, like Earth. It has temperature distribution, like Earth. The principle of analogy could be applied here. It is the easiest principle that could help you a lot, but there is a big risk, if you apply the principle where there is no analogy. Hence, you need more details to get sure there is opportunity to apply the analogy.

What else? As we mentioned our mother Earth, let’s benefit from it. Look again, look so that you see Earth and Saturn together. What could you tell now about Saturn?

Mamma mia! Saturn is huge! This observation brings numbers about the diameter, mass, density etc. Just take known Earth numbers and calculate Saturn numbers based on the ratios you observe. The temperature from the infrared spectrum also could be converted into the numbers. So, after few different looks you’ve got plenty of numbers. And numbers are good, we could calculate using them. Exactly what we need during estimations. We need numbers and ranges of them to play with them. What is an interim conclusion here that should be mentioned is orthogonality. We have used three orthogonal views onto the same thing. Orthogonal means independence. We applied independent looks and grabbed some information form them, and converted it into the numbers.

Good so far. Moving forward. You could guess what else possible? A lot of hidden views are still available. Let’s use them to get more information in the same context. Look closer. Zoom in.

It is alive! Saturn is not a dead stone. There is some spiral movement. Kind of cyclone? Something is going on there. For us it means dynamics. We might count on it later during some decision making. Several more looks at Saturn…

Now you should catch the idea. It is really possible to squeeze much more information from the given context. It is possible to See the Unknown. It is possible to convert new information into the numbers and use them in your further calculations. You could observe a lot. Then you should divide and conquer the observations. Then work within homogeneous sets. It makes analysis easier. Substitute the word “Saturn” by the word “Project” or “Prospect” and apply in your work. You will see a lot more useful info about your Projects and Prospects immediately. For sure, you could use that info properly. Ain’t fun?

Who are you, Dr. Fermi?

Look forward to the next post. It will be Part II. See you here soon!