Programming is like any other craft, whether that be engineering or woodworking or auto repair. Every craft has its tools that must be learned and maintained in order to do beautiful work and make wonderful things. In the craft of programming, one of the main tools we work with is programming languages. The more languages we know and the better we know them, the more versatile and valuable we can be as programmers and the better our solutions become. Fortunately, it's extremely easy to find websites to help you practice with programming problems and build up your skills with the languages you already know or bring you up to speed on languages you're trying to learn. They're so easy to find that it may be a bit overwhelming to pick one and settle in to actually work on some problems. Here are some of my favorite (free) sites—and why I like them—to help simplify that decision.