A good developer will be familiar with and use numerous libraries. If you can find a library that is a good fit for your problem, it’s probably a better solution than your first crack at it will be. And the library has been reviewed, debugged and optimized by a wide community. And more often than not, like the guy in the meme above, we can’t spend much time hot-rodding code to see how good we can get it. These can lead to work which is a little stifling for anyone who likes to think about how fast that loop could be, or how he would implement that image processing feature. Where’s the fun?
I’ve found a couple ways to get the thrill of solving a problem for myself, in the language or my choice, and spending as much time tweaking, optimizing and rewriting as I could take away from Netflix marathons and scrolling through social media feeds.
Project Euler. For the mathematically minded. This site has a large number of problems to solve. They don’t care how you solve the problem, but it’s expected that you’ll write some code to come up with the result. If it’s correct you are free to enjoy the icing on the cake, the discussion forums. I’d say at least half the benefit of working these comes from seeing how others achieved their results and the problem author’s tips.
MOOCs. I’ve taken three Massive Open Online Courses over the past couple years. They all expanded my mind, and gave me the opportunity to work on some of the types of problems I rarely see in day to day programming. Topics like planning via dynamic programming, Markov chains, Bayesian classifiers, and proportional controllers are not going to be something most of us are often called upon to do for a paycheck. When given as manageable problems as they were in the courses I’ve taken, they are a lot of fun.
Stack Overflow provides a different kind of challenge coupled with a video game like reward system. This is more like work than my other programming pastimes. It is serious business we all most likely rely on. So it might appear odd that I would recommend it as something fun. But for relative newbies like me with still low reputation scores, receiving an upvote on a question they answered a year ago will understand. An unexpected +10 reputation simply feels good.
For a few years after I first graduated from college, I would spend a lot of time working on apparently worthless projects. Some of the strange things I did were a checkers program that could be played with a scripted opponent, a program for randomly scrambling audio data, and another to render and blur text for a shadow effect to name a few. I didn’t realize it, but I was making technological bets and investments. I couldn’t have known exactly how the work I did for fun back then would position me to be ready for some of my most rewarding projects I’ve done in my day job, but that’s exactly what they did. Hasn’t that always been the secret of play?