Other than reading this post about code-sharing and 20% time, I know little about Google's internal software development practices. Do they have epic gant charts constructed from 40 sheets of A3 and sellotape covering an entire office wall? Do the engineers have to email their project manager every week (or, worse, every day) with half-day granularity time estimates and a progress report detailing their latest achievements? Somehow I don't think so.
Google appear to follow the release early, release often mantra of agile software development. They release products early with a 'beta' tag and reduced functionality, then release updates containing new features at frequent (although not regular) intervals. Gmail is a perfect example of this. Even though Yahoo have also started to roll out the beta of their Gmail-rivalling web mail system, you get the impression that their development is somewhat less agile than Google. More Microsoft than Thoughtworks, more donkey than race horse.
Rather than working in agile utopia, it's probable that Google operate a much more formal, regimented system which combines aspects of several methodologies. They probably have significant requirements specifications, design documents and their UAT phase will be long and scrutinous (although this would be the case irrespective of development methodology), but the simplicity of their products, their productivity and the way they listen to customer feedback is a clear sign of a belief in the underlying principles of the agile manifesto.
Any Googleites out there want to share their experiences?