Subject: Institutional bugs
From: npdoty@gmail.com
Date: 1/31/2009 06:23:00 PM
To: Brian _____, <_____@microsoft.com>; Jon _____, <_____@google.com>
Cc: Mubarak, Bob, TracyMon, Vignesh, NickL
Bcc: http://npdoty.name/bcc


Gentlemen,

It's pretty exciting to see software testing come so prominently into the news twice in such a short time frame. I know that neither of you can share any of the internal discussion you've heard on these topics, but I sure would have enjoyed watching the threads these events sparked. Are these issues getting talked about a lot outside of the groups immediately impacted?

Really, I've been able to see quite a bit just looking in from the outside. It's pretty neat to be able to see the actual source code of the Zune leap year bug and hear the exact wildcard problem in this morning's Google badware bug -- it makes me feel like I'm not so far away from the industry after all. (Which isn't to say there isn't some advantage from knowing some people on the inside: it was fun when I was at Microsoft last month to hear about how our friend on the Zune test team got a call at 7 AM on a day when most people weren't expected at work telling him he needed to be in the office immediately. That must have been a pretty intense day.)

I've heard conjecture (fueled by the short-lived rumor that StopBadware was somehow responsible rather than Google itself) that the mistake happened because Google got an updated list from StopBadware and just checked it in verbatim, rather than Google mistakenly adding the wildcard in itself.

And it's similar to the discussion I saw around the Zune leapyear issue. Speculation raged about how a Microsoft developer could make such a mistake or how the Zune test team could miss it. Then when it came out that it was actually a bug in Freescale Semiconductor's code, suddenly it made sense to everyone: only the Zune 30 had the problem, none of the newer Zunes have that problem because they no longer rely on a third-party vendor's code. And more significantly, it wasn't that Microsoft developed code with such a glaring hole. Or that Google deployed a file with such an obvious error. It's as if we're comforted by thinking that Google and Microsoft weren't the responsible entities; that at least fits with our understanding of these software companies.

But neither of those explanations helps the Google customer or the Zune customer, nor should they be any solace to them. Microsoft and Google are just as responsible for code they ship that was originally written outside the company. And really, if anything, it's an opportunity for a Microsoft SDET and a Google QA engineer to get a promotion.

Sure, whatever Google engineer checked in the file should be getting a talking to: wouldn't a single manual test have caught the issue? When you're making a change to code that'll be run as part of every Google search, shouldn't you at least have tested it once yourself? But it's much more an issue of why there wasn't an automated check-in test that prevented the change from going in at all. A single negative automated test case would have caught this and relying on all your individual engineers to never make mistakes like this is foolish.

Also, I happen to think that the Zune leapyear bug should have been caught by a developer's unit tests: shouldn't a unit test for a piece of leap year code include a case for the end of a leap year? But a Microsoft SDET could make some significant improvements for his product by proposing a policy to do code reviews of partner code. Collaborations are inevitable, and it would be worse for the company to have the already frustrating Not-Invented-Here syndrome institutionalized as an official company practice under the name of quality assurance. Test plans and code reviews are just as valuable for partner code as for code written internally.

Of course I know that neither of you can speak for either company any more than any single person could represent such a huge group of people, practices and institutions. For that matter, I have faith that both the Zune team and the Google Search team have already come to these conclusions and implemented something along these lines. But I'm curious what your thoughts are, since you might be able to bring this idea up as a reminder in your group and in the next group over and that maybe we can all have a little more discussion about it. And that's exactly the point: we expect Google to not make mistakes like this because we expect such a powerful single entity to be so consistent. But Google isn't such a single entity -- any one engineer will make mistakes and any one partner will be unreliable. But since Google the institution is so powerful, it can be as perfect as we expect, not by being a single infallible entity, but by putting practices in place -- like a culture of quality assurance and a system of unit and check-in testing. In both of these high profile cases, the issues were institutional bugs, not code defects.

Perhaps that's all obvious to you guys; to someone just looking back on the software business, it seemed important.

Anyway, hope you're doing well and that you're enjoying software. Grad school is pretty great, but I miss being more intimately involved.
Nick

Labels: , , ,

Subject: Re: programmatic typesetting
From: npdoty@gmail.com
Date: 1/22/2009 01:21:00 AM
To: Sam Maurer
Cc: Timothy Paige
Bcc: http://npdoty.name/bcc


Well, I guess the idea was that it wouldn't need any editing (or only to fix programmatic problems). That raises the question about what the true purpose of the project would be, but at least partially for me it's a statement about our communications -- that they can often be trivial, that the amount is huge, that the pieces are intermixed and formatted identically in my email client despite having such different characters or topics.

This distinction about how email has such a wide variety of topics and styles actually got me started thinking about another idea. What if I wrote a blog that was done in the format of emails that I sent to various people? So each post would be an email (like some of the more significant ones I send to you, or Tim O'Reilly, or friends at Microsoft, or whoever), complete with headers. I really like the idea of blog entries that have more metadata than just a title (who I chose to send to and CC and so on; the content of the email I'm responding to, etc.). Also, it harkens back to publishing an important person's letters as a journal of his life. (http://npdoty.name/bcc, say.)

On Jan 20, 2009, at 11:52 AM, Sam Maurer wrote:
Won't you need to edit the content quite a bit, as well as formatting it? I don't mean that you'll change what you wrote, but you'll need to pick which emails and plans to include, and in what order. Even if you want nearly everything, and you want it chronologically, maybe different themes of writing should be formatted differently, so that personal correspondence stands out from the ideas about information management or about liberal arts education. This part would take even longer than the formatting, right? But you could probably combine the editing with the difficult-to-automate parts of the typesetting, and do both at the same time without much added cost. (Also, this editing process may well be even more enjoyable than reading the finished product, since you'll have to engage with your old ideas in order to organize them.) As long as you do some simple pre-processing to separate entries clearly, format email headers properly, and so on, manual typesetting won't be that hard. You can just define some style sheets and then hit F-keys in BBEdit or InDesign as you go through the content.

I know that I'm subverting your intention to automate the process, but I think this would be a more pragmatic solution!

Sam

Labels: , ,