As an independent software developer, I make my living writing scripts and applications for others. In order to maximize my opportunities, I need to be a master of many environments. Since much of my career has involved Windows applications, I am spending quite a bit of effort in other areas.
One problem with simply going through a tutorial book and learning the syntax of a language is that it doesn't give me real-world experience. One way to get experience is to work at a company that allows you to grow into new areas of expertise. Barring that, another way is to donate time to a local non-profit organization that you can later point to as an example of your work. It's time-consuming, but if you can swing it, opportunities like that can be a win-win for both sides.
Some people wonder why contractors charge so much, but when you think of the constant learning time that must be invested to stay relevant, not to mention a cushion for time off, it's actually quite a challenging endeavor. If one can manage it, the benefits of being your own boss and picking your own projects and tools are quite rewarding.