When you work in IT, your family turns to you as the ultimate computer expert. Since Reggie worked in IT for the direct mail industry, not only did he get carpet bombed with the usual computer questions, but also with questions about the piles of junkmail his family received. "Why do they send so many? How do they afford that?" "Is the furniture store really going out of business?" "I got the same thing twice. Do you think I can double up the coupons?"
Reggie could never quite make them understand that there were many companies in the direct mail industry, and that his company only provided address lists. He knew less about the actual mail his family recieved than they did. No explanation helped; his association with the industry made him an expert on all things postal.
Reggie's company assembled a new release of their web application for generating address lists. The previous release had allowed customers to retrieve names and addresses, but many customers had lobbied for a cheaper (for them) alternative. They wanted just the addresses and a "slug", like "To our neighbor at", "To the petlover at", or "Resident", and they wanted to be billed accordingly.
It had been a simple enough change, although it was bundled in with a lot of other minor improvements. Coordinating the release and making sure clients knew what to expect was a significant undertaking. On the last day before the official go-live, Reggie pulled up the requirements document to review it while writing up the release notes.
14.3 On the field selection screen(Fields.jsp), a checkbox will be added and labeled 'Use slug'. If it is checked, 'THE SLUG' will be used. (see screenshot)The requirement seemed straightforward enough, but as Reggie reviewed the document, something seemed… absent. He read through the whole thing a few times, checked the attached screenshots, and then fired up the new version of the application to confirm.
At no point did the requirements specify an input field to define what the slug should be. Since it wasn't in the requirements, it wasn't in the application. Since it wasn't in the requirements, no one tested for it. In fact, QA had signed off that the requirement was complete and that, when checked, the application generated data using "THE SLUG".
Reggie generated the same data set twice, once using names, the other using the slug. The first try worked as expected:
But the second attempt confirmed what he feared:
John Adams, 111 Street St, Townton, NY 11111-1111
Thomas Jefferson, 111 Road Rd, Townton, NY 11111-1111
Burt Reynolds, 111 Lane Ln, Townton, NY 11111-1111
To THE SLUG at, 111 Street St, Townton, NY 11111-1111
To THE SLUG at, 111 Road Rd, Townton, NY 11111-1111
To THE SLUG at, 111 Lane Ln., Townton, NY 11111-1111
This was bad news, but it wasn't the end of the world- at least they caught it before the official go-live. Reggie hurried down to his boss's office. "We need to postpone the go-live. I know this is short notice, but a delay is better than putting it out into production…" Reggie stopped when he saw the look on his boss's face. "… it's already in production, isn't it."
"One of our major clients paid extra to get pre-release access. They've been using it for two weeks." Reggie's boss sighed and said, "I'll take it from here. Who knows? Maybe they haven't been using that feature."
That faint hope was dashed when Reggie's mother called a few hours later. "Can you believe the nerve? They called me a slug! A SLUG! Are they trying to make a joke? Because it's not very funny!"