I was watching a video of a tech talk on Google's MapReduce and there was one slide that had very little to to do with MapReduce itself, but I found very interesting. It was a list of 10 observations of the development process at Google:
- Devs work out of a ~single source depot; shared infrastructure!
- A dev can fix bugs anywhere in the source tree
- Building a product takes 3 commands ("get, config, make")
- Uniform coding style guidelines accross company
- Code reviews mandatory for all checkins
- Pervasive unit testing, written by devs; high dev/test ratio
- Unit tests run nightly, email sent on failure
- Powerful tools, shared company-wide.
- Rapid project cycles; devs change projects often; 20% time
- Peer-driven review process, flat management
The source tree - mostly all visible to even interns, and all you can see can be modified. Building couldn't be easier - even the Makefile is auto-generated. Coding style is very strict. They emphasise unit testing a lot, espicially writing them before writing the code. Powerful tools - couldn't have described it better, MapReduce is one of many examples.