PerfConsole is my kind of 20% time...
Other companies have much talked about 20% time... That sounds great to me! Here at Microsoft (at least in my group) we do too, kinda. I find that every one of my peers has some interesting project that they're working on outside of their normal work activities, some of the categories for people I know of on the CLR are:
- pet projects related to the product (in this case CLR) which they are prototyping in the hope of getting some traction in the problem space
- pet projects related to the engineering effort around the product (e.g. static analysis, etc...)
- tools related to software engineering in general (much of my stuff falls into this category)
- random stuff using managed code just to use manage code (eating your own dog food is good right? especially when it tastes this good)
Many of the tools that we use to build and test the CLR started this way, two public examples being PerfConsole and MDBG. Both of these were started as pet projects and have become an integral part of CLR processes (admittedly MDBG significantly more so than PerfConsole at the moment, MDBG being the CLR's primary managed debugging test harness).
Anecdotally I believe that there are lots of people inside Microsoft doing this as well, internally we have a system for sharing tools you've written that help you get things done and last time I checked it had 4500+ tools on it, and that's just the stuff that people bother to publish.
I strongly believe that pet projects should be encouraged within any software development team. I'm glad that my experience with Microsoft has been that they do encourage experimentation, after all where do you think the CLR came from?