I have blogged a few times about the Joy of Programming. To work with something that you enjoy is extremely important to keep your motivation up, and to improve your skills over time.
Every year, developers at Cygni have some fun with a programming challenge called Advent of Code. My colleague Kalle Brisland from Cygni in Sweden wrote a piece on how you can grow as a developer, how to be better, just by having fun!
Advent of Code is an Advent calendar of small programming puzzles for a variety of skill sets and skill levels that can be solved in any programming language you like. People use them as a speed contest, interview prep, company training, university coursework, practice problems, or to challenge each other.
Kalle gives some good insights on performance optimization, iterative development, testing, and much more. In addition he shows some great polyglot examples on how to solve some of the programming puzzles. Definitely worth a read!