How to Make a Peanut Butter and Jelly Sandwich
Submitted by John Haren on Mon, 2005-08-15 12:15.
Stupid Questions and Software Development
Back in college I was a math tutor. A preliminary for all tutors at this particular college was a joyous seminar on the “problems of learning and instruction” – a brief glimpse into just how maddening the enterprise of explaining things to people can be. Most of it seemed like tedium, and painfully obvious. It was no surprise to the assembled tutors-to-be that some people just don’t get math. Of course – why else would someone seek out tutoring?
I remember nursing a genuine resentment at being forced to waste two weekends listening to lecturers drone on and on about ‘cognitive gaps’ and ‘leaps of inference’ and the like when it was eminently clear that none of this would aid us, the tutors, or our charges. Really, if years all of this pinheaded theorizing hadn’t made oh, say, the professors of math courses any more effective as teachers, what chance did four days of it have for us?
Then came a little ‘interactive’ session entitled ‘How to Make a Peanut Butter and Jelly Sandwich’. The premise was simple. The audience was to verbally instruct one of the seminar’s facilitators, step-by-step, on the process of crafting a fine, and presumably edible, PB&J. He had everything he needed arranged on a table: peanut butter, jelly, a loaf of wonder bread, and a knife. Oh, dear, thought I. Now we get the sad spectacle of a man pretending to be as stupid as a bag of hammers in order to frustrate our attempt to walk him through making lunch.
And sure enough, the facilitator played it to the hilt. What was surprising was that this little exercise was actually enjoyable; hilarious even, as it became clear that this guy was experienced. He was good at what he did, and it made for fine comedy.
“Just start with two pieces of bread!” was the first instruction that coalesced out of the din of tutors offering simultaneous advice. The facilitator put on his best what-me-worry face and confidently gripped the bag of bread, held it aloft. Then consternation crossed his visage, signaling that the next phase of his mission wasn’t clear. Hmm… two pieces. Well, I’ve got this collection of bread pieces… hmm… I need two of them, but they’re in the bag… hmm.
“Open the bag!” Well, you lob a slowball like that, he has to hit it out of the park. A look of enlightenment came upon him as he vigorously shook the bag, but this, too, passed into confusion as the bag failed to yield its load of bread-like styrofoam. Much hooting and hollering ensued. Again, gripped by inspiration, he settled on a tried-and-true bag-opening tactic: he tore it open, violently. With purpose. With conviction. Bread flew from the bag. Some landed in his vicinity and he seized it triumphantly, mangling it further in the process.
“Now put some peanut butter on the bread!” At this point everyone was fully cognizant that this guy was going to misinterpret our instructions in some absurd manner; some of us just wanted to see exactly how absurd. Much laughter as he placed the whole unopened jar of Skippy on top of the bread with a self-satisfied flourish.
It went on and on; full minutes later, after we’d successfully negotiated the opening of the peanut butter jar, we’d told him to get some peanut butter on the bread by way of first getting peanut butter on the knife and then smearing the knife on the bread. See, we thought we’d out-dumbed him, but such was not the case as he viciously plunged the knife into the jar, punching out the bottom and sending a mess of broken glass and hydrogenated oils to the floor.
Well, I’ve bored you enough with the details. Suffice it to say that it took a solid hour to finally get this guy to make a frickin’ sammich. So where am I going with this, and what does it have to do with requirements gathering? Everything.
Because, when you’re writing software, you’re “sitting in a chair telling a box what to do,” as someone on JOS put it, and that box is pretty dumb. Because, essentially (and particularly in a business domain) you’re trying to instruct something a lot dumber than a man pretending to be stupid, and you’re trying to get it to do something a lot more complicated than making a PB&J. Another way of putting it is that successfully developing software necessitates dealing with a level of specificity that makes most people ill, insane, or both. Largely, this is a war of wills, and the decisive battle is usually in the requirements gathering phase.
As developers, we’ve probably all had the experience of requirements coming down from on high only to find that they are woefully incomplete and/or vague. That’s an old complaint and an old story. But it’s also a safe bet that we’ve all had the additional experience of running into what can charitably be called resistance when seeking clarification on requirements, and smoothing that dirt road is what I’m here to talk about.
Many approaches over the years have been offered. Agile/XP-type processes, with their emphasis on “user stories”, short cycles, and lots of end-user feedback, seem to work very well when they work, but, just like technologies, methodologies don’t exist in a vacuum. You usually can’t simply combine a methodology with a business environment like you combine acids and bases in a laboratory. Agile methods are great when everyone plays along, not so great when they don’t. Same goes for any methodology, big-M or small. The chief problem in any software development environment is cooperation—a people problem.
As developers, we’re quite aware of our strange mental inclinations. Whatever our differences as human beings, our similarity lies in our shared capacity to decompose the real world into a series of maddeningly specific steps. To a client’s business analyst, it’s a job well done to specify:
“Requirement 357a: The system shall, upon encountering an incoming address, increase the ‘returned from post office counter’ in the data warehouse for existing addresses equal to the incoming address.”
Yup, the analyst thinks, that’s all there is to it. Problem is, of course, the developer can’t compile that sentence into workable code. Now the developer is faced with the task of asking The Stupid Questions. Incoming address? Incoming from where? Where do we find it? How are two addresses reckoned to be “equal”? So on and so forth. The business analyst starts to get exasperated; he’s got, like, four tons of this crap to go through, and he’s not a mind reader either. Now he’s got to go directly to the client and ask The Stupid Questions, because come to think of it he’s not exactly sure of how the client determines when two addresses are equal—OK, they’ve got the same street, number, city and zip, but this one address is missing a state/province code… seems straightforward, they’re still equal, right? ‘Cos if you have the zip you know the state… jeeze! But that box, that stupid, stupid box, doesn’t know that, and now the analyst has to ask what the client wants, which makes him look like a moron, because he’s paid to figure this junk out, and he hasn’t done it, or so the client seems to suggest every time he walks into her office with another list of questions… So he ignores the developer’s email and hopes they’ll just do something right for a change. And the developer sends more email and things get testy because now the schedule is slipping because there’s still these unimplemented features because the developer doesn’t want to code them until the requirements are clear since if she does and the client doesn’t like it then that will generate a bug report on her code, and too many of those look bad come review time. Now QA is getting testy, too (no pun intended) because how are they supposed to test unimplemented features?
Four weeks later, after the PM has called the VP to schedule a JAD session, it comes out that:
“Requirement 666a: The system shall consider two addresses equal when, and only when, at least the following fields in the incoming data source (defined in subpart J of definitions document Foo) are Unicode (see addendum 6) character-by-character matches on a one-to-one basis… [long and winding road inserted here]… Further as documented in the ‘null-field coalesceable’ specification, STATE/PROVINCE is not a required field for this process as the system shall normalize the city and state by the postal code, which is required…”
Welcome to the Dilbert zone.
So sure, you say, we’re all familiar with this kind of frustration. What do we do about it? Well, I have an idea. Keep in mind that’s all it is. I’m not selling any snake oil. There’s no guarantee that this will work, no statistically significant findings from a controlled study to back it up. But I think it’s worth trying:
Arrange a meeting with the client, and get them to tell you how to make a peanut butter and jelly sandwich.
Since we as developers are paid to systematize the world on behalf of other people, we have to do a better job of educating our clients on both the value and the pitfalls of what we do. As long as the rain keeps falling, no one knows or cares about our chanting and dancing around with the chicken bones. Come drought time, the mystery of our profession is our undoing. We’ve always been unfathomable pinheads, but in times of systemic failure we’re the unfathomable pinheads who failed. I think it’s possible, and desirable, to give people a sense of what we do. And if you get to clown around and make a mess in the process, why not?
- John Haren's blog
- Login or register to post comments









Outstanding
Thank you, this is a great read. I think you are dead on in everything here, except perhaps in your final suggestion, but then that would depend on the circumstances. I'd like to think the solution resides somewhere in around where the developer is waiting on the customer to help with requirements where instead you would hope to have an inspiring/charismatic personality on your team, not a programmer, but someone who can connect with the customer and redirect the train when it is obvious you are spiralling into the Dilbert zone...
you may be right
Ben,
Thanks for reading! It's quite gratifying to see that someone slogged through all that.
You're probably right that it would take someone with a good deal of charisma to pull that off. If that's the case, so be it. I'm thinking of this as a people problem, not a technical one, so it makes a certain amount of sense to think that a 'people person' could be part of the solution. Also, it would probably help to do this before you start a project, rather than after things go south...
Great Read
As Ben said, I think you're on target, but I share the reservations about the suggestion. I can see it working when you have a big enough contract, a few receptive client contacts, a people person on your team, and either a reputation that precedes you or a pre-existing relationship. I could also see it helping to soften an existing client relationship, or maybe get communication back on track if it's not working.
Wonderful article, ideas to bounce back
I really enjoyed the story you told and agree entirely about the urgent need for good requirements and the general failure we experience in getting them. I have two thoughts to share about this though:
1) While we may think that the problem stems from personality types that don't mesh with the über-analytical programmer, in truth we are bad at it too. I've witnessed programmers try to talk with other programmers about a tool he or she wanted and it was described poorly. There is an inherent dissonance between the problem domain and the series of rules that delivers a solution, otherwise known as code.
2) I believe the ultimate solution is tighter integration between customer and developer. I'm distrustful of environments where a business analyst runs interference between these two entities. Like the game of "telephone", the system requirements lose meaning in every telling. While it may make sense to us an analyst I firmly believe that programmers need some face time with the people who will use the software to really internalize the purpose the of the software.
Problem of varying expectations
First of all: This is a great story, truly seems like a core lesson in usability testing. If there is any room of ambiguity, chances are the user (or whoever) will find a way to interprete freely and in unforeseen ways.
I think the developer who wants to nail down just exactly what it is he or she is supposed to do faces a problem: The customer (whoever it may be) may expect the developer to literally just figure it out. Think. I have witnessed this repeatedly. Providing any sort of closer detail was in those cases viewed as "doing the developer's work, who couldn't figure things out himself". In those cases, customer education can be particularly tough.
Archimedes
40abda286b7f57a686e5f2c341d1c333
Archimedes was an ancient Greek mathematician, physicist, astronomer and engineer. scaricare film gratis, www morenasex net. Although little is known of his life, he is regarded as one of the leading scientists in classical antiquity. Trucco Gta San Andreas It, frasi d 'amore. Among his advances in physics are the foundations of hydrostatics and the explanation of the principle of the lever. valutazione auto usata, fac simile lettera recessione contratto. His early use of calculus included the first known summation of an infinite series with a method that is still used today. unieuro genova, Calcolare L Ascendente Zodiacale. He is also credited with designing innovative machines, including weapons and the screw pump that bears his name. video xxx celebrita, ucraina ragazze. He is best known for allegedly exclaiming "Eureka!" after discovering what is known today as Archimedes' principle. chiamami com, Foto Donne Grasse. Archimedes died during the Siege of Syracuse, when he was killed by a Roman soldier despite orders that he should not be harmed. simail it, Humax 5000. The relatively few copies of his treatises that survived through the Middle Ages were an influential source of ideas for scientists during the Renaissance. Locali Scambisti Crema, classifica cd venduti. The historians of Ancient Rome showed a strong interest in Archimedes and wrote accounts of his life and works, chiamami com, Litri Sangue Corpo Umano. while the discovery of previously unknown works by Archimedes in the Archimedes Palimpsest has provided new insights into how he obtained mathematical results. immagini amore, concorso allievi marescialli. Carl Friedrich Gauss is said to have remarked that Archimedes was one of the three epoch-making mathematicians, with the others being Sir Isaac Newton and Ferdinand Eisenstein.
Knut
ef1ad2590c9d04212413de836c40c833
Knut is a captive-born polar bear who was born at the Zoologischer Garten Berlin on 5 December 2006. hex key arabesque, Telecom Ufficio Reclami. Rejected by his mother at birth, he was subsequently raised by zoo keepers. disegni per bambini da stampare, Contratto Collettivo Studi Professionali. He was the first polar bear cub to survive past infancy at the Berlin Zoo in over thirty years. hex key arabesque, barca vela usata vendita. At one time the subject of international controversy, he became a popular tourist attraction and commercial success. fallo lattice, Scritture contabili. After the German tabloid magazine Bild ran a quote from an animal rights activist that seemingly called for the death of the young cub, a worldwide Occasioni Camper, passero solitario leopardi giacomo. public outrage was caused as fans rallied in support of his being hand-raised by humans. Tassa Vidimazioni Libro Sociale Dell, la sirenetta walt disney mp3. Children protested outside the zoo, and many emails and letters expressing sympathy for the cub's life were sent from around the world. rooms mame32 gratis, Uomo nudo pisello. Knut became the center of a mass media phenomenon dubbed "Knutmania" that spanned the globe and quickly spawned numerous toys, media specials, DVDs, and books. ragazza nuda gratis video, angeli foto. Because of this, the cub was largely responsible for a significant increase in revenue at the Berlin Zoo in 2007. Trasex Foto, Castelnuovodigarfagnana. Zoo attendance figures for the year increased by an estimated 30 percent, making the zoo the most profitable it has been in its 163 year history. tomb raider soluzione, foto scopate di animali. Recently featured: History of American football Dookie Through the Looking Glass
Generic Viagra | Cheap
Generic Viagra | Cheap Generic Viagra | Generic Levitra | Generic Viagra | Cheap Generic Viagra | Kamagra | Cheap Generic Viagra | Finpecia | Penegra | Generic Viagra and Kamagra | Generic Viagra
Hi
Vimax and Vigrx is The Most Effective Penis Enlargement Pills on the market today, every single product is also guaranteed, and offers permanent results.
thank u my dear دليل
thank u my dear
دليل مواقع بنات مصر دليل مواقع يشمل مواقع مصرية , مواقع سعوديه , منتديات , مواقع اخباريه , وكالات انباء , صحف , والعديد من المواقع المفيده
دليل مواقع - دليل مواقع- دليل مواقع
مرحبا بكلم فى موقع العاب بنات مصر العاب للبنات فقط جديده , العاب بنات , العاب تلبيس , العاب تلوين , العاب باربي , العاب طبخ , العاب سيارات
العاب
games , free games , on line games , game , girl games
games
العاب بنات جديده العاب للبنات متجدده بشكل يومي وحصريه
العاب بنات
العاب بنات
العاب باربي
ان كنتى تبحثي عن العاب بنات جديده ومنوعه بشكل يومي فيمكنك دخول موقع العاب بنات مصر
العاب بنات جديدة
هل انت من هواة المنتديات والمشاركة فى المنتديات شاركنا التميز فى منتدي منتديات بنات مصر
منتديات
تعرف على بنات مصر فى منتديات بنات مصر
بنات مصر
بنات
منتدي , مواضيع عامه , مواضيع مميزه , اسلاميات , قرأن كريم , صور , افلام , العاب , برامج
منتدي
حمل صورك فى مركز تحميل صور بنات مصر
تحميل صور
صور رومانسية , صور حب , صور بنات مصر , صور بنات جديده ,
msryat
صور
حمل صورك فى احلى مركز تحميل صور يمكنك تحميل 5 صور فى مره واحده
مركز تحميل
دردشة مصرية , تعارف فى احلي دردشة مصريه
دردشة مصرية
شات مصري
دردشة مصرية
احلي موقع دردشة , دردشة مصرية , دردشة للبنات
دردشة
شات بنات دردشة بنات شات للبنات فقط
شات بنات
شات بنات مصر
شات بنات مصر
شاركونا احلي صور صور رومانسية وتوبيكات وصور بنات صور صور حب ,صور بنات مصر , صور رومانسية
شات ودردشة نسيتك , شات سعودي , دردشة سعودية , موقع شات شات شات نسيتك شات سعودي دردشة شات كتابى سعودي دردشة كتابية شات كتابي احلي شات كتابي سعودي في موقع نسيتك دوت كوم ادخل وتمتع بالشات شات سعودي
اما ان كان عمرك فوق 18 سنه وتبحث عن افلام سكس وسكس للكبار فقط ادخل الى هذا الرابط وشاهد سكس وافلام سكس سكس
كما يمكنك تحميل افلام سكس افلام سكس
ولتحميل افضل برامج وبرامج نت جديده وحصرية للكمبيوتر الخاص بك برامج نت كل يوم برامج جديده وحصرية وبأنفراد عن باقى مواقع البرامج برامج وكمان عندنا قسم للصور وصور البنات والحب وصور جديده وحصريه لمشاهدة القسم ومشاهدة كل الصور صور
وكمان عندنا احلي توبيكات ملونه , وتوبيكات حب توبيكات توبيكات عشق توبيكات حب وغرام
ولحواء وبنات مصر والعرب منتديات عالم حواء عالم حواء ازياء وموضة ازياء جديده ازياء ولبنات مصر والعرب اللي بيحبوا الالعاب والعاب الدولز والبراتز العاب دولز العاب ويوجد بقسم العاب الدولز والبراتز العاب جديده وحصرية لن تجدوها بأى موقع العاب دولز وبراتز اخر
ولمن يبحثون عن الافلام العربية لدينا اقوي افلام وافلام عربية واجنبية من السينما الي قسم افلام و مشاهدة افلام و كذلك يمكنك بعد مشاهدة الافلام تحميل افلام وايضا بعد تحميل الافلام تقدر تشوف العديد من انواع الافلام كـ افلام عربية للدخول لقسم افلام عربية افلام عربية
شاهدت الافلام العربية بالقسم ستجد ايضا قسم افلام اجنبية افلام اجنبية ايضا لمشاهدة اخبار الفن والفنانين فوووت علي قسم اخبار الفن والفنانين
افلام فلام افلام مباشره افلام عربية افلام تحميل افلام كل جديد فى عالم الفن تجده فى بنات مصر