I want to share some experiences I made and collected from others about self-directed or "20% time".
There are different ways of doing this and reading about experiences, it can sound like it promotes everything from cleaner tables to eternal youth, but try it. Don't hike up your expectations but let it work itself out and see what you can reap from it. It's different for every team but I have yet to see a company that really tried to embrace it take a loss in the process, when examined objectively.
Work on your own projects
I've worked in an environment where we tested this idea and it worked quite well for a while. We dedicated every friday to this and interesting projects came out of it ranging from little libraries to full-blown test frameworks. In some way or another all of those projects even helped the company we worked for at the time, even though there was no mandate that it had to be for the company.
Select projects from a list provided by the company
In another team, this was fun too. We were able to influence the list some and had a good time working on the projects alone as well as in teams.
Work on whatever piece of existing software you think needs work
This is what the company of a friend of mine do. They have 'hackathon days' where team members get to work on their product, improving whatever they want. It only has to be finished by the end of the hackathon - for the presentation.
Working on your own projects, bits that you really want fixed/refactored from your daily work or similar things at your own pace and direction is very rewarding to a lot of programmers.
Getting out of the box
It sparks creativity, thinking through a whole stack, planning and coordinating with other team members and possibly presentation skills.
Often people worked together on projects to learn from or with each other new skills, technologies or libraries.
Improvements to company products or assets
Almost everything I've ever seen done in this kind of environment eventually proved useful to the company.
To the team
Teams tend to work together better and be more resilient to unexpected sick days or similar loss of resources. Team members usually feel happier, more fulfilled by their work and better in general. Even what could be called rivalries or outright wars within teams sometimes can be reduced or turned around by this.
To the company
Management can plan better, because bottlenecks (at least skill- or knowlege-wise) reduce. Quality of work delivered often improves, from continuous peer-review by teaming up and from thinking outside the box which leads to new and unexpected connections and (warning: buzz-word) synergies. Not to mention the benefits from improved culture and greater perceived happiness with the job, which also carries over into other teams and completely unrelated departments.
- Personal experience (contact me, I'm happy to talk your ears off about this)
- Anecdotal evidence (also happy to relay to others so you can learn from their experience)