I've met a lot of younger kids who say they like computers, by which they mean they "like playing computer games." I've seen these kids learn just enough about networking and hardware to get their favorite game installed, and then rot their brain with thousands of hours of un-educational video games.
Sure, a little game playing to relax and recharge is one thing. But throwing away the formative years of your career - i.e. high school, college, and post-college - is a sad thing to do.
It doesn't need to be this way. Programming can be fun, perhaps as fun (or even more!) than playing a computer game. The idea is that if writing a fun program (which has a huge learning benefit) is about as enjoyable as playing a deadbeat game (with no learning benefit), then obviously it's better to budget your time for more programming.
So, why is solving the nth level of Game XYZ fun, but solving how to code an algorithm or UI screen not? Let's look at several reasons, and see how programming could fulfill the same fun criteria.
|Why game-playing is fun?||How programming can achieve the same result|
|The game is relaxing and takes less mental energy.||You can pick an easy, relaxing project.|
|The game offers you new and exciting things to explore (new level, creature, technique, etc...).||There's always new things to learn while programming, and these new things usually provide you with a marketable skill.|
|You can stop the game at any time.||You can take a break from your pet project at any time.|
|The game consumes your mind, and sucks you into its world.||Ditto.|
|You can play with your friends.||You can build an open-source project with your friends (such as using shared space on CodePlex), or share your new app with friends or coworkers.|
|You cannot lose at the game (provided you have the sufficient cheat codes).||Ok, so your program may crash and fail, but you can usually find help (such as on a forum or from a coworker), or reduce the feature scope.|
My point is that many of the things that make game-playing fun also can make programming fun. And unlike game-playing, programming offers you tons of long-term benefits.