In which a Post-Mortem Offers Valuable Insight
Aardvark: Good afternoon, Friend Bandicoot. I'm sorry to be late for this meeting.
Bandicoot: That's quite all right, Friend Aardvark. Is your head feeling better?
A: No. But we need to get this module out the door anyway, so I'll go be sick some other day. I spent most of this morning going through the test suite trying to figure out what's wrong with your code, and I think I've at least got some idea -
B: But there's nothing wrong with the code. You saw me demo it yesterday.
A: Yesterday I saw your code fail the entire test suite.
B: Test 6 passed.
A: That turned out to be due to a bug in the test harness. The test was actually failing, and incorrectly reported as a pass.
B: Well, that's not my fault.
A: But it... wait, what? Why not?
B: I didn't write the test harness.
A: So, it's not your fault that the test harness incorrectly reported your code failed all but one of the tests, when your code really failed every single one of the tests?
B: That's right, Friend Aardvark. I think it was Friend Panda in Quality Control who wrote that test harness. Not to make trouble for him.
A: I suppose it is a true statement that you are not responsible for incorrect reports by the test harness, Friend Bandicoot.
B: Was that what you wanted to tell me today?
A: No! We have a module that you were supposed to demo, completed and working, yesterday, and instead it failed all the tests.
B: Only after you started asking for extra optional features that weren't in the spec.
A: The only extra feature here is the symbolic differentiation, which you added.
B: And that works perfectly.
A: Addition is more important.
B: But I demoed addition and that was fine, too.
A: But it - look, we're getting off track. Want to see what I discovered?
B: Of course!
A: The first test that fails is Test 1. That's a very simple test, what we call a sanity check. It just adds "2+2".
B: We did agree that extra optional features are optional.
A: Well, there are no optional features mentioned in the spec; the only thing that we could possibly call an extra is the differentiation you added.
B: Yes, I added it on my own initiative!
A: Addition is a core, absolutely essential feature.
B: Initiative is one of my areas of personal strength, identified in the last round of the animal resources development process.
A: It's very weird, and I haven't been able to track down just why this happens, but addition fails on some inputs and not others. And two plus two is one of the bad ones.
B: I don't understand why you even think we need an extra optional double-double feature.
A: Addition is not an extra and not optional.
B: But we have addition.
A: Not when both operands are "2," we don't.
B: Yes, which of our customers are going to need that extra optional feature?
A: Well, some of our customers use our software to control nuclear reactors. It's sort of important to get the numbers right.
B: Oh, I do like nuclear reactors! What's an example of the kind of calculation the operators do?
A: Well, I don't know, maybe stuff like "We have 421.36 litres of radioactive liquid sodium, and we're about to add 86.30 litres, how many litres will overflow the 500-litre tank and end up in the river?" So they enter "421.36+86.30-500" and it's important that the result should be 7.66. Neither more nor less.
B: So, these are smart people, right?
A: I do hope so.
B: And they're doing calculations with decimal fractions, or even symbolic calculus.
B: They're not doing double-double, and if they wanted to, they could do it in their heads without using our product. They don't need an extra optional feature for that.
A: Oh. Oh! Wow.
A: When you keep saying "double-double," is that what you mean? Do you mean adding two plus two?
B: Of course.
A: You mean the specific case of the numbers two and two, considered as distinct from adding any other numbers in particular?
A: Do you think adding two and two is a separate feature in itself, and that it somehow makes any kind of sense at all to say we have "addition" when we don't have that case of addition?
B: The extra double-double feature isn't in the spec.
A: I think now I'm beginning to understand.
B: You're never too old to learn!