I really appreciate this comment, mostly because I feel an immense amount of pressure to use my remaining time to do something "amazing" or keep up with the insane rate of frontend changes. I feel the core issue is that as developers/engineers, we spend a lot of time doing things that companies want, which can be at odds with skill growth, professional development or other things that are actually really important to making ourselves better. If I want to learn something new or improve myself, it's done on my time, not the company's. I guess this does make some sense, because they hired me to build things, not to study, although allowing me to spend some free time doing interesting things is known to provide large dividends.
I think the solution to this is the 20% time rule, but Google only really does this.
This is a great point. Something "amazing". That may not be possible to do on your own. But there are some tricks you can apply to achieve that anyway:
1) Do non-amazing things that can build up to amazing things. E.g. help other projects with simple maintenance jobs like triaging tickets, reviewing pull requests, writing docs for things you know, discussing with people in IRC and mailing lists. By this you will learn things automatically that make other tasks later on easier. Another way to build up is to learn simple tools like linux, vim, git, etc better and more indepth. That enables you to handle more complex tasks with less effort and produces value in itself when combined with teaching others. The last example I can think off immediately is pg's doing non-scaling tasks. Really work with people and treat them very individually. Thereby you don't just build a following that can give more impact to what you are doing, you also really learn what other people need.
2) Don't build alone. We programmers hate all these meetings, but truth is, that few people are that good that they can do "amazing" things alone. Usually this is achieved by having a group off slightly above average people, and letting them cooperate. Organize non-meeting things that brings people together, like a lunch with your local docker group. Then use these opportunities to make small progress in complex tasks. Send everybody home with a small thing they need to do that together will be a huge step, but trust everybody to figure out what that thing is by talking not by commanding. Doing that a few times will lead to amazing results automatically.
PS: AFAIK google also doesn't do the friday projects rule anymore.
Just judging from comments here, it sounds like officially it's still running but unofficially that 20% time had better not detract any actual work hours from any of your official work. So really it's "work 20% overtime on whatever you want, and the company will own it" which doesn't sound very motivating to me.
Some smaller companies and startup still do this. They need to in order to attract good talent. Toss that in with the fact that they sometimes pay better (for the same reason) and a fairly decent balance can be had.
I think the solution to this is the 20% time rule, but Google only really does this.