The first thing you notice about Joel when you meet him is that he's the quintessential New Yorker--he speaks at a pace that's about 400 RPM faster than anyone else you'll ever meet. When speaking, he gives the impression that he's got so many ideas and concepts he wants to get out, the words just get in the way.

His talk was pretty straightforward, punctuated with deliberate tangents into fashion, art history, and psychology. Put succinctly, he started with this slide: "Bugs are bad. Fixing bugs is good. So, fix your bugs."

Then he brought up the next slide: WRONG.

His point is that things aren't always this simple. As an example, he points out the Ariane 5 disaster, in which a $9 billion rocket was destroyed mid-flight when it began to arrow towards the ground on its initial launch. The problem? An integer overflow error, when a 32-bit value was stored into a 16-bit variable, thus causing overflow. He then also points out the classic Tetris game for Windows, where a 16-bit integer is used to hold your score: when you manage to accumulate more than 32k points, your score goes negative.

Cost of the first bug? $9 billion. Cost of the second? $0. Even though they're the same bug.

He then presented a revised version of the "bugs" slide: Bugs cost money. Fixing bugs cost money. So, fix the bugs that are worth it.

As part of that last point, he asked the audience, "If a bug costs $100, do you fix it if it will cost $110 to fix it?" Most everybody said no. "What if it costs $90 to fix it?" More hands went up. Then he pointed out, "The problem is I haven't given you enough information--what if that same $90 can go towards advertising, and brings in $300? From the business perspective, that's obviously the better ROI for the money." And a few engineers in the audience laughed, until they realized he wasn't making a joke.

He then went on to talk about "lipstick vs. guts"--"lipstick" being the parts of the program that the users see and appreciate, and, like the proverbial iceberg, represents only a fraction of the overall effort. "Guts", of course, are what we as engineers spend most of our time on and, perversely, our users can't understand at all. "Most progrmamers", he said, "think lipstick is a necessary evil." He then told a personal story, how his company of "three guys on laptops" were able to bail out a dot-com site who'd hired a global services company and spent millions of dollars with nothing to show for it, and the dot-com was upset that it didn't look "spiffy" enough. They added some gradient shading, some softer curves, and lo and behold, the CEO is astounded and amazed.

Overall, it was a good talk and definitely consisted of things many software engineers need to hear, particularly when decisions are made about what bugs to fix... or more importantly, not to fix. He's an energetic and entertaining speaker, and I thoroughly encourage anyone with the opportunity to see him speak to do so.

Oh, and if there are any CompSci students out there looking for summer internships in New York, visit http://www.fogcreek.com. I can't think of many better ways for the serious programming student to spend a summer.

Visit Joel's weblog for more.