I give Google a lot of credit for responding so quickly to a major public relations problem and rolling out a fix.
However, I think that this problem could have been avoided if Buzz had used a team of exploratory testers, and if they had 'friends and family' test as well.
The reason I am saying this is that, in general, software engineers and other highly technical people don't 'think like a user'. They tested their code, and I am sure that it worked. The problem here is that it really needed to be tested from a user's perspective.
I was a Test Engineer at Google for 7 years, but now I have my own testing company, TheTestingTeam. I say this to let you know that I am very technical...especially when it comes to testing websites.
My first reaction was shock when I tried Buzz and it wanted to use my location, which at the time of testing it, was my home. They were going to share my post and location with everyone. I could see where everyone else was when they posted. I just didn't feel comfortable with that idea. I quickly realized how to keep my posts private, but I am sure that the average user would just take the defaults. That's where the problem was. There was too much sharing set up by default. This works fine for developers and highly technical people, like Googlers who can easily figure out how to configure the settings to best suit themselves.
Had the Buzz team used 'real' people or testers who think like users, this problem could have been identified and addressed before the release. This would have saved a lot of bad publicity for the company.
I am not picking on Google, but rather just using this release of Buzz as an example of how important exploratory testing and usability studies (with real users) is to the successful release of a product. Engineers shouldn't assume that just because they think that their product is amazing that everyone else will feel the same way.
When software engineers write code, generally they write it in such a way that it works! They have tested it, and if you do everything as expected when using the program, it works! It takes an exploratory tester to do the unexpected. That's where the bugs and the major issues are. Ultimately if the end-user doesn't accept the new product, doesn't like the new product for some reason, or gets frustrated with it, it doesn't matter how great your engineering is, the product won't make it in the real world.