One of my favorite pastimes as a programmer is to work on personal projects outside of work. I use side-projects as a creative outlet to work on new and interesting things. I also use them as a learning exercise. If I start a side-project, there must be "one new thing" about the project I don't know how to do already. This can mean learning a new language, API, framework, algorithm, whatever. The end result is that I level up my skillset with each project. I recommend this system for every programmer.