Mary stepped out of the elevator on the Production floor. She pulled her red silk scarf more around to the front and then readjusted it back to its original position. "Ok, so I'm a little nervous," she thought as she examined her assignment. The project was to design a system to support all the business functions of an entire department. Currently, with the exception of a small Unix system and a few, unconnected PC systems, each performing a single function, the department was still a manual operation.
These uneasy thoughts vanish away as the unit's business manager strides up to her. "You must be Mary," he says, extending a hand, "I'm Bill, the department manager. I've been looking forward to doing this project for quite some time."
The business manager is wearing a perfect suit. Every pinstripe is in place, not too wide, not too narrow. His wingtip shoes seem to have been polished within the last fifteen minutes. He wears a white shirt and a blue tie dotted with tiny company logos. He is very enthusiastic about the project. He invites Mary into his office, "Costs a quarter to get in, fifty cents to get out," he quips.
Over the next hour, Bill talks about how this project will make great strides in achieving upper managements objectives. He talks about how improved efficiency and timely reporting will attract new customers to the business and how he expects it to reduce his head count by 40 percent. Noticing a worried look in Mary's eye he quickly follows that statement with, "Of course we're not going to fire anyone. We'll transfer some people to other departments and offer a few an early retirement."
Mary finds herself puzzled by some of this talk. Everything he mentions seems like obvious objectives of the system. Of course you want to improve efficiency. That's what computers are all about! Naturally reporting should be done on a timely basis. Mary feels like she's in church and the priest is telling her to, "Do good and avoid evil." But in spite of these occasional forays into the obvious, she's very impressed with Bill. He's a forward thinker and is likely on the fast track to promotion within the company.
About then, Judy, Bill's second in command, appears. She's wearing a conservative, tailored suit and a scarf with little company logos on it. Her hair is done in a tousled style, but Mary notices that not a strand is out of place. They adjourn to a nearby conference room to give Mary an extended chalk talk on the project.
Mary leaves three hours later with a notebook full of boxes, arrows, clouds, databases, Internet connections, and a notation about a LAN product called LightningLan that operates through the electrical power lines. Bill gives her an advertisement for it on a page ripped out of a data processing magazine. She had never heard of a LAN that runs through the electrical power lines before, but she sort of gave Bill and Judy the idea that she knew about it without actually saying so.
Anxious to get started, Mary rushes back through the operations area almost colliding with a woman wearing a telephone headset and carrying a thick notebook.
"Oops, pardon."
"Anxious to get away from the bosses office, eh?"
"Not at all." Mary is a bit offended by this lack of respect. The woman apparently didn't realize what a fine manager she had in Bill.
Mary's cubicle was on the west side of the building on the 20th floor near the windows. In the morning she had a beautiful view of the city, but on a sunny afternoon like this one it was like trying to work in a toaster oven. Drawing the huge, beige curtains eliminated the feeling that she was being top-browned, but it made the office a bit gloomy.
Back at her desk, Mary took a last look around before starting her Analysis document. On one of her cubicle walls were the certificates she had earned for completing a class in Visual Basic and another in Web design. On the other were pictures of her three cats: Tegan, Adrick, and Ace, (named after Dr Who companions) that shared her one-bedroom apartment. Her desk was clean as always. She recaptured a memo that had escaped from its file folder and returned it to captivity. She was ready to start!
Mary marshaled her document tools: a word processor, a flow-charter, a spreadsheet for computing costs and times, and a presentation manager loaded with cute little clip-art. She starts by turning her meeting notes on the new system into a flowchart. It's so simple, yet so elegant! How could they have waited until now to put in a system like this? A tiny cloud drifts in front of this new sun as she wonders for a moment why that guy back in the operating unit was stapling the blue card to the pink sheet of paper, but she dismisses it as probably being not too important. The flowchart turns out to be a little sparse, but she adds quite a bit of verbiage to it and lengthens the arrows between the boxes a bit and she thinks it ends up looking quite nice.
Over the next week Mary completed her first draft of the Business Systems Design. She reviewed it extensively with the Bill and Judy. They loved it. It's diagramed, it's documented, it's top-down, it uses LigntningLAN, it's beautiful!
Mary's last job is to estimate the time required for the project. There's something odd about this task since the project already has a target date and a budget that were established before she ever started work, but she perseveres anyway. Invoking her spreadsheet product with a single wave of the wand, er . . . click of the mouse, she makes rows of all the programming tasks she has identified and columns of the necessary activities for each one. It looked like this:
| Coding | Testing | Total | |
| Environment Setup | |||
| Database Creation | |||
| Program #one | |||
| Program #two | |||
| | | |||
| System Test | |||
| Quality Assurance | |||
| Installation | |||
| Total |
Of course the Database Creation step would not have a testing stage, and the Environment Setup, System Test, QA, and Installation steps would not have a coding stage so those cells would remain blank. Testing on the programming steps would be Unit Testing. Filling in the cells was harder than creating them. How did you estimate how long it would take to code a program that was the first of its kind? How much time would it take to test a system that had just come into existence? Of course, most of it was familiar. There were inquiry and capture screens, there was a database, files were read and files were written, she'd seen all of that before, but what about the parts that were unique to this project? Mary threw in some numbers almost at random just to see what the final total would be. Hmm, not too bad. Only about 10% over the pre-project estimates. She went back and examined each estimate in detail. She changed all of them so they wouldn't look like such round numbers, bumped a few up where she had a feeling that she might have underestimated, and reduced a few that really did sound easy. She was tempted to tweak the numbers a little to make them come out according to the pre project times, but she thought that would be dishonest so she stuck to her guns.
Finally, the Business Systems Design is finished. Mary turns it over to Susan, the project leader.
Mary was a bit too impressed with the business manager. She shouldn't have let him convince her that he's a data processor. He may have ideas about the technology to use, but if you pry a bit, you'll likely discover that the roots of those ideas are not in deep soil. Perhaps they originated in some gossip he heard over lunch or something he read in an airline magazine. Computer systems tend to bring out the eight-year-old boy's love of gadgetry in people, and there's also a desire to be way out there on the foreskin of modern technology, so she should give the business manager's ideas fair consideration, but she should make the final decisions herself.
Listening to the business manager, by the way, presents its own difficulties. Non data Processing people justifiably complain about "geek-speak," but there's also a "manager-speak" shared by business managers, politicians, TV Evangelists and used car salesmen. Although no Rosetta Stone has been uncovered for this language yet, one of its key tenets is expressing negative information in positive terms. Your teenage son wrecked the family car? It's an opportunity to improve the quality of family transportation. You didn't get the promotion? It's a chance to complete the work you started in your current position. Once you get the general idea, you can do some useful translations. When Bill talked to Mary about "improving customer reporting," she thought he was making a silly, obvious statement, "Of course we want to improve customer reporting," she thought with some disdain, "What a silly thing to say." But if she'd had a good grasp on manager-speak, she might, instead, have thought, "Oops, there must be something wrong with customer reporting." A few questions would have brought it out of hiding.
"Bill, I was just wondering, are our customers happy with the quality and timeliness of the information they get from us?"
"Er, well, as a matter of fact we did have some problems with that last year. One of our biggest customers went to another company when we couldn't return data on their purchase orders fast enough."
Mary may have just discovered the reason that the project is being done. She probably assumed, as many data processors would, that it was being done because automated systems are just inherently better than manual ones and, "obviously," you want to eventually automate everything. The managers that fund these projects don't think that way. Their motto is more like, "if it ain't broke don't fix it" rather than, "we climbed that mountain because it was there." There are really only two reasons that projects are done, saving money and saving face. In this case, it might be both. Losing a major customer is a financial setback, an embarrassment to the company, and possibly a personal embarrassment to the CEO. Whatever the basic reason for the project's existence might be, other reasons -- probably all valid considerations -- will be added to it until a little "project justification confection" is produced. Nothing wrong with that, but it does make it difficult to tell what's really important, i.e., what's the cherry and what's just the chocolate covering.
It would behoove Mary to figure out the real reasons that the project is being done. No one will do anything so overt and gauche as to come right out and tell her; she'll have to figure that out for herself. Listening to the oak leaves rustle at Delphi, or gutting a junior manager and examining the steaming entrails are sometimes useful techniques, but she needs to do it somehow, because whether she solves the problem that was at the root of the project will determine whether it is viewed as a success or a failure.
Mary missed a few key points when she was trying to estimate the remaining time on the project. The biggest single item was forgetting about vacations, holidays, and sick days. The average office worker gets four or five weeks of vacation a year, about ten holidays, and a bit less than one sick day a month, so, although it will vary from office to office, this means that the project staff will be out of the office about 15% of the time. On her spreadsheet, Mary should have included this as the last row and simply added up everything above it and multiplied by .15 and added that result into her totals. By the way, it's a big mistake to have a dark, lingering thought stuck in your brain like, "This project is so important that our guys will just have to suck it up and postpone their vacations until after it's over, and maybe work a few weekend days to make up for those holidays and sick days." There are two reasons to get rid of that thought, first, it gives the project a feeling of desperation rather than the feeling that everything is under control, and second, it takes away one of your biggest safety nets, the ability to grab another gear toward the end of a project and work a few 60-hour weeks to meet the deadline.
She also made a few other mistakes. Items like Quality Assurance and System Testing do have a coding component -- it's changing programs to fix problems that were uncovered. The only time they don't have a coding component is when the project is perfect the first time through. How much time to allocate for that is guesswork -- estimating projects is much more of an art than a science -- but increasing the QA and Systems Testing pieces by 50% would not be out of line.
Environment Setup is another highly variable area. If the project consisted of nothing more than adding a new function to an existing system, Environment Setup time is probably zero. In this project, however, it's a big item. If they end up adding their new application to an existing system, they need to estimate and find space for a new database, add to the backup and recovery scripts, add operator documentation, and shoe-horn a few new jobs into the nightly batch string, and if they intend to use an entirely new system it's much worse. Now they also need to create very basic facilities like security systems, directory structures, and source code control.