You need to get betterLet's face it: Most of us work in jobs where we can do awesome stuff 10% of the time and spend the rest of our time with routine stuff, maintaining legacy systems and other not so cool stuff. I don't get better doing this. Actually, I might learn a thing or two, but it's not real improvement.
I don't want to stop where I am and therefor I'm always working on side projects, doing things which might not be neccessary but which teach me something, or I am working on Code Kata, Project Euler or some open source project.
The real goalAnd while doing all this, my real goal is not to establish a real business. I don't have the time or energy to work on another "real" thing beside PicturePlix, and I know that most of the stuff I start never gets finished.
The reason I do all this things is to get better. First, by getting knowledge about topics outside of my scope, I can make better decisions in the future. Second, I can use many things I learn from this playing around in our important projects, making them better. And third, it's fun! If you work 60h+ a week and have a family, sometimes you just don't have the energy to work on dead serious, not so fun tasks. And as I don't like wasting time in front of the tv, I just work on a fun project.
Of course it would be great if one of my projects gets bigger one way or another, but thats not my goal.
What to do...For me, fun projects are very broad. Sometimes I like it to explore functional programming using Racket or solving a problem at Project Euler. Another time I might work on a Code Kata using Python.
When I'm in a more serious mood, I work on a private project which I don't want to give much information. It's a web app using symfony2. I try new technology like sass, coffeescript or redis, even if it might be over the top for this project.
Then there are projects which we might need at PicturePlix but which are not that important, like our vagrant/chef project I did or a project where I try to solve the versioning of databases (without any success yet).
And sometimes I try new things within projects at work, like the usage of solr yesterday.
...and what to learnLooking back, much stuff I used in these "weekend projects" ended up in our code base. The stuff I wrote yesterday is deleted, but I got a pretty nice idea on how to restructure the search engine we are using right now. I don't think I would have come up with this without trying solr.
*The reason I deleted solr was because right now the search engine does not need to perform complex searches. We just search for very special fields which can be covered by pretty simple sql. And as we only have a couple thousands of rows in the particular tables and probably 20 searches a day, performance is not an issue right now.