[hand with pencil]
Stuff For Sale
2004 Summer Tour
Class Stuff
Email Me
In The Press
Veggie Van Gogh

© 2002,

[this is simply a banner and menu bar]

Please patronize sponsors of this page!

Bytesmiths no longer is involved in software consulting. Maintenance of this web site is currently subsidised by unrelated business activities. Please pass the word to other interested folks, so I can continue to host this page!
Your site could be listed here, for as little as $12 per month! Go to Bytesmiths Press for details.

This site has been selected by PC Webopaedia as one of the best on this topic!
This site has been awarded a Links2Go Key Resource Award in the Smalltalk category!

Originally published in The Smalltalk Report, March/April 1996.

The Demo Trap

by Jan Steinman

"C'mon, guys -- we don't have time for testing; we've gotta get the demo ready for the department heads meeting!" said Aaron, the project leader, as he stared at the ceiling in exasperation. Things had been going good -- too good, it seems. MegaCorp had been having some difficult times with development schedules, and after many studies, too many meetings, and much political maneuvering, "they" went along with Aaron Blake's plan to transition their traditional development environment into Smalltalk with a pilot project.

Aaron had been in this game a while; he knew this project was a career maker or breaker, so he had planned the transition in careful detail. They had gotten the training they needed, budgeted for the best tools available, and in a real coup for MegaCorp, he had even convinced them to bring in some experienced mentors, so that his team wouldn't have to repeat someone else's mistakes.

Most importantly, MegaCorp MIS Director Andrea Saunders had personally approved Aaron's proposed development process, which was unlike anything ever seen in MegaCorp. MegaCorp needed rapid turn-around on various software projects, and their traditional, waterfall process had been running an average of 250% of original schedule. Their users needed six-week changes, IS was quoting six-month changes, but they were actually delivering in a year and a half!

It had been a hard sell. Andrea knew there was a problem, but she wasn't ready to simply swap a new problem for an old one. "Whenever one of my guys comes crying about all the hoops they're jumping through, I ask them 'ya got something better?'"

Luckily, Aaron was in his usual state of preparedness, and had come to the meeting with an impressive presentation citing Barry Boehm and other development process scholars. He showed Andrea and her department heads how simultaneous design, implementation, and testing could result in an evolving, incremental product that could deliver quick changes to users without sacrificing quality. He had no idea that all his careful planning could result in disaster!

Early Gains

"Trigger" Larsen was Aaron's best developer, and the fastest squirt-gunner in the company. Trigger had gone off to a month of "Smalltalk immersion therapy" in an apprenticeship program, and had returned with stars in his eyes. "Hey Aaron, look what I got working today!" he'd often exclaim, which was a bit tiring, but it was the kind of nuisance Aaron could easily live with -- much preferred over the usual complaining about short schedules and missed deadlines.

Trigger quickly assembled a GUI that was years ahead of anything MegaCorp had ever put together. True, the database wasn't connected yet, and the legacy systems were not interfaced, but hey -- it looked sexy, and actually seemed to be doing something, unlike the "paint and draw" prototypes that other departments had been putting together for years.

Enthusiasm has its drawbacks, and when combined with a little boastful competitiveness, it can have bad side effects. Trigger played racquetball with Denny Hicks, a developer on a "traditional development" team, and could contain his enthusiasm no longer. "Hey, you should see the neat stuff WE'VE been doing!" Trigger shouted over the sound of ricocheting balls and pounding sneakers. It seemed an innocent enough boast at the time.

Procedural Dissonance Stirring

It was kinda nice being ignored. Aaron knew this couldn't last forever, but neither did he suspect it was the calm before the storm. The pace of a traditional waterfall project meant that the first third or so of the schedule was dominated by documents, and no one wanted to see documents, they just wanted to be assured that they were being produced.

Aaron's cyclic development process was cheating a bit here. He followed the letter of the MegaCorp Software Procedures and Standards Manual by naming and listing all the required documents, and checking them off as produced, reviewed, and delivered at the appropriate intervals.

The "cheating" part was that they were "incomplete" by MegaCorp standards -- he kept them in their Smalltalk development environment, so they could be updated readily, instead of "checking them in" to the mainframe, which generally meant no one ever changed them again, because rigorous procedures were involved with check-in and check-out.

They were also much smaller than usual, because instead of extensive boilerplate for every conceivable situation (half of which were marked "N/A"), Aaron insisted on plain English descriptions of the behaviors and interactions of the objects in the system.

A greater heresy that wouldn't have passed muster if he hadn't bribed the bored QA guys (by promising to train them in Smalltalk and actually let them write some test code) was the fact that none of the documents his group produced said anything about the internal structure of their objects! He knew he could get shot down for that, but he also suspected he'd need that flexibility later during performance tuning. "Isn't it enough for now to say that an Employee can answer its department, without stating that it stores its department somewhere?" Aaron mused to himself.

The net result of this was that after several months, MegaCorp treated Aaron as though he were "waterfalling" through analysis into design -- it ignored him -- while in reality, his team had Pretty Neat Stuff Running. No one at MegaCorp had ever seen Pretty Neat Stuff Running before at least 110% of initial schedule had been spent!

"Hey Aaron!" shouted Jake Sather across the lunch room, "Denny tells me you've got a GUI going -- can I get a look sometime soon?" Jake was Aaron's peer, managing the "traditional development" group Denny Hicks worked in. "Sure, c'mon up this afternoon!" replied Aaron. (He had been catching some of Trigger's enthusiasm as of late.)

What Is Our Product?

Jake's demo went good -- too good, it seems. It would have been better if it had been worse. It would have been better if it had crashed a few times. It would have been better if Aaron had stalled Jake to prepare, because Aaron's team had been practicing continuous integration and continuous testing, and Jake knew this was the best spur-of-the-moment demo he'd ever seen at MegaCorp. Aaron looked at it and saw a half-finished prototype. Jake looked at it and saw A Product.

The Friday staff meeting was not a pretty sight for Aaron. "You guys should see what Aaron's been hiding from us!" Jake started out, "We all should be looking at this stuff!" They scheduled several demos that week. Marketing should get a look, Sales was os a boondoggle, so would need their own demo, and of course the tech writers would need a working copy, and users, what about the users? "We'll have to find some; Aaron, can you look into that?"

None of Aaron's careful planning accounted for the coming weeks. Oh, he had planned for demos, all right, but he didn't anticipate the magnitude of interest that "early GUI" generates.

But the interest in Aaron's stuff was not passive. Everyone thinks they're a "GUI Guru," when really they are more likely seduced by "neat stuff" than what actually is useful to an end-user. Marketing immediately wanted "more color and icons" while various VPs that drifted in and out of Aaron's office put in their own personal GUI order, and Sales wanted to immediately ship everything they saw. Aaron was averaging at least two demos per week, and each one ended with some "recommendation" of some kind. His schedule was slipping, as his developers thrashed away implementing conflicting, unplanned changes.

Aaron fantasized about the want ad he would soon be placing: "Product Demo Manager for hire. Expert at jumping through upper management hoops with constantly changing, but meaningless, user interface stuff. If your product is demos, I'm your man!" He thought hard about what he was trying to accomplish, mentally crumpled up the half-composed ad, and picked up the phone. "Andrea, can we have a talk?" he said.

Return of Sanity

After hearing him out, Andrea Saunders agreed that Aaron's project needed a shield. Demos would be limited to the period immediately following "cycle end," which averaged every six weeks. "Must do" demos in between the scheduled ones would only be on the software that had recently been formally presented -- no more pulling people off of "real work" to prepare a special demo.

Trigger had completed the architecture work and much of the design, and had given the implementation a good start. Being outgoing, enthusiastic, and a bit boastful earned him the new unofficial title of "appeasement engineer."

"Half your job is to see that no one else on the team is impacted by demo activity," Aaron told him, "and the other half is to do everything else you were doing with all your time before!" he joked. He knew that Trigger was up to the challenge, and could carry on limited peer review and coding while carefully tracking all the little tasks that producing a good demo requires, and still have time for manic squirt-gun fights.

The Demo Trap had slipped the schedule, and they weren't going to ship all the functions they had originally planned, but their "continuous development" regime was paying off regardless. They had taken on "productization" early, and all they had to do between cycles was add functionality. Sales wanted what they had NOW, and marketing was actually considering a "MegaSoft Lite" offering to "selected beta partners."

"If this keeps up," Aaron mused, "it could be the first time in history that MegaCorp has shipped a product -- albeit not the one they set out to build -- ahead of schedule!" He sighed a contented sigh, and went back to planning his next Smalltalk project.

Go to the previous column in the series, or the next column in the series.

160 Sharp Road, Salt Spring Island, British Columbia, V8K 2P6, Canada