Software Development at Google
There is a policy at Google to require its developers to work 20% of the time on a research project of their own making. Joe Beda explains a bit about the software development process at Google and lists five characteristics that distinguish Google from most other development houses:
1) One code base: everyone gets free-wheeling access to a large, well-documented software repository.
2) Switching teams: it's easy to work on multiple projects and switch teams without a bunch of formal (HR-driven) process.
3) Intranet: there is transparency into literally the entire company on the corporate intranet, without a lot of apparent worry about security and/or compartmentalization. Information can propagate to the correct parties in free-flowing and even unexpected channels.
4) Pet projects: the 20% 'pet project' is not just paid lip service, it is actively encouraged. In fact, Joe worries aloud that he will get dinged on his review for not working on his 20% project.
5) Interpersonal: there must be a great emphasis on social skills at Google -- and not strictly technical ability. New ideas are greeted with enthusiasm, brainstorming sessions, and the like. Technical elitists are probably not encouraged in this sort of environment.
I do take issue with one statement of opinion:
"One of the reasons that environments like Perl, Python, C#, Java, etc. flourish is that they have large and well through out libraries of useful code. For a variety of reasons, C++ has never had this"
Uhm, Joe, ever visited CodeProject? On SourceForge, for example, C++ is among the top couple of languages used for open-source development. So... I beg to differ. If you're talking platform-inspecific code, well, yes, other languages will have more generic libraries - but where C/C++ excels is in its raw performance. Running close to the metal usually entails some platform-specific features.
Joe Beda: How the Software Development Process Works at Google