What a recent executive called the best way to learn. AKA DeathMarch. ---- We have a chunk of COBOL in the C3 meta-system that loops over a bunch of database info, produces a file in a known format, then processes the file into another known format, and then finally sorts that file down and prints it with subtotals. The masticating program runs 20 minutes on 600 people. (We aren't allowed to kill COBOL programmers, so don't ask me how this came to be.) Report content is essentially a check register with summary by department, including year to date info. A report with the same format and different data is produced from another population in the database. It works fine. So we have database -> fileMaker1 -> printProgram -> paper "works fine" database -> fileMaker2 -> printProgram -> paper "runs forever" The challenge to our newest programmer was to fix this problem. One idea was to reproduce the intermediate file more directly. This would solve the speed problem. The intermediate file format is bizarre. So I raised the ante. Replace all three COBOL programs with a report printed directly out of C3. Possible StretchAssignment? Not a StretchAssignment if you do it Extreme. Build a SpikeSolution producing one item of detail information: loop over the control information (people's checks) get the check information. print any one number off of it. How long could this take? Another pair produced a Spike of similar complexity (but in another area of the system) in a half hour, just this afternoon. Our newest guy might take a little longer. I can see far enough this time to predict the future. Once the spike works, we will be left with just four problems: 1. Print more information for each check, rather than just one number. (Simple elaboration.) 2. Print some information for each check, that isn't on the check. (Pass another parameter to the print, an object that ''does'' have the info.) 3. Format the information to make it pretty. (Trivial, nitty-gritty.) 4. Get subtotals by department. (Might be tricky, but orthogonal.) Once we can print one number, item number 4 will be WorstThingsFirst. We'll card that and do it. (Any of us knows a few ways to do subtotals, right?) So we took the original problem, generalized it, made it harder, then turned it from a StretchAssignment into a handful of trivial and easy steps. The moral of the story is: when handed a StretchAssignment, pick a simple subset that's near the center of the story, and do a SpikeSolution. In a day you'll know how the problem breaks down. Be sure to look like you're slaving your butt off, so your pointy-haired manager will think you're a hero. --RonJeffries