I’m going to be teaching a class that covers a broad brush of estimation techniques. I intend to cover absolute estimation techniques based on SLOC (e.g. Function Points, COCOMO II etc.) and relativistic ones like T-shirt sizing, story-point estimation etc.
I was wondering what would be some good exercises to conduct in class to help understand the what, why and how of estimation. I hope to pique their interest with actual hands-on examples rather than death by powerpoint.
An example that was suggested by a colleague of mine was to bring a newspaper to class and ask them to estimate the number of words in the paper (for short papers or just a page for long ones). Since they can’t absolutely count it, they’ll be forced to come up with their own heuristics and they to take the lecture from there to help them gain insights into their own estimation technique.
Although a good example, it doesn’t seem to link well with software estimation IMHO. I was wondering what would be some good examples for teaching software estimation w.r.t. size, schedule and effort estimations that they’ll encounter in practice. I prefer practical examples that I can actually ‘conduct in class’ rather than ‘just talk about it’.
UPDATE: To throw some more light on the structure of the class – Yes, I’ll be covering the aspects of granularity i.e. at the RFP stage what’s the best one could do. How can the estimate be refined when more is known about the problem (e.g. FPs after prototyping is done) and how story-points can be useful once you have a list of stories to go by Or how COCOMO like models based on SLOC count can be applied post architecture/design. I.e. narrowing the cone of uncertainty as you progress towards completion of the project. My aim is to elicit examples that the student teams can practice in class to get a better feel for the techniques and understand its ease of use (or difficulty) and the level of accuracy that can be obtained at that level of granularity and knowledge.
PS: If you are downvoting, I’d appreciate a comment highlighting the same. This is not a subjective question and rather non-trivial to teach in a hands-on manner and does have the possibility of selecting the ‘best answer’
4
Steve McConnell’s Software Estimation: Demystifying the Black Art has a number of good examples presented through the book, some tied to a specific estimation methodology as well.
As an example, for presenting “count-compute-judge”, he presents the problem of counting the number of people in a large conference hall. I believe it goes something like this, since I don’t have the book in front of me right now. The counting technique involves individually counting all of the people in the room. Computing involves determining that each table was designed to hold five people, and many observable tables had about five people sitting at them, and then counting the number of tables in the room. Judgement was to look at the posted maximum capacity of the room and estimate the percentage of the room that was occupied, using that percentage and the maximum capacity.
He presents other examples, from both software and other estimates, to explain other estimation techniques. If you haven’t read it, I’d highly recommend reading it before you teach the course. If possible, I’d even suggest it as the course textbook (or a recommended textbook).
Estimation is something that’s difficult to teach though. It’s one of those things that gets better with experience. However, unlike other things in the “you learn by doing” category, estimation requires you to not only do (as in perform the estimate) but then do what you estimated and track your estimates and actuals and discuss why there are differences.
Although McConnell’s book will provide good examples of what it’s like to use a number of good estimation techniques, I’d consider using projects in the course. Not only do different estimation techniques provide different levels of accuracy, but some also require a certain amount of historical data with regards to both estimates and actuals. As you progress through more and more projects, you’ll gain more historical data while also giving students hands-on experience with using a particular estimation technique.
Depending on the experience level of the student, I might be more inclined to focus on teaching the techniques, when they are appropriate, and their advantages and disadvantages. This would especially be true for undergraduate students or even graduate students with limited professional experience. More experienced students with more large-scale projects under their belts can probably relate to their experiences more and will have a larger historical database of estimates and actuals to draw upon.
3
I suggest, that you start the class by giving them a very simple application that has 4 business processes or so. Ask them to do their estimate before learning any thing about the course, then use this application through the course and show how estimation techniques apply to it and where would someone go wrong. I guess what I am trying to say is have the class based on simple case study and apply the principles as you go and show how various factors and/or estimation techniques could give different results.