Terms of Reference
This is an an everyday lesson that I shall try to remember next time I’m at the requirements gathering phase of system design, or the next time I’m explaining to someone why common terms of reference are such an important part of Software Engineering.
The Sandwich Shop
Em and I went to the local sandwich shop to buy today’s lunch. It’s a small shop, but their main custom is through deliveries, so their selection of sandwich fillings is far greater than you’d expect because their customer base is far larger than the shop can accommodate.
They know their business area well: they know all about the ingredients, the recipes, and the processes required for getting the sandwiches made and shipped for everybody’s lunch. The result is that the food is fresh, inventive and reassuringly unprocessed. What’s more, the staff are always offering tasters of the fillings so you can try before you buy – it’s almost like an appetizer course.
The Order
Today I couldn’t decide between “Chicken, Pepper & Parmesan” and “Bacon, Walnut & Brie”, both looked delicious. When I tried each of them, both tasted wonderful, so I asked for half ‘n’ half, on a baguette.
When we got home and unwrapped the sandwich I was amused to find one minor flaw.
The Sandwich
The shopkeeper had selected the correct ingredients, added just the right amount of salad to a crisp fresh baguette and given me a half ‘n’ half, as requested.
The sandwich was delivered exactly as specified, but, instead of the two fillings being at either end of the baguette, as I had expected, they were arranged on top of each other: a layer of salad, a layer of “Chicken, Pepper & Parmesan” and then a layer of “Bacon, Walnut & Brie”.
The Lesson
Our terms of reference were only slightly different, yet the gulf between the anticipated two-course snack and the more contemporary lunch that arrived was striking.
As I enjoyed my “Chicken, Bacon, Pepper, Walnut, Parmesan & Brie” baguette I reminded myself that the cost of similar assumptions in software can be n orders of magnitude higher, and made a mental note that assuming less can have very tangible benefits.