That said, if you want to become a craftsman and build quality software that people can depend on, definitely hone your skills by doing unpaid work. But definitely don't do it for people who make money off your work, it's plain unnecessary. There's literally thousands of open source projects that could use even the most basic of programmers.
You can do this even if you have a full time job or study at a university (which I can also recommend). Just take 1 or 2 hours a few nights a week. Spend this time checking out their source code and running their test suite. If you've managed that you're already half way done. Next step is picking an easy sounding bug from their tracker and see what causes it. If it's easy to fix, fix it and send them a pull request. When they accept, you've got the "contributed to open source project XXXX" credential that will almost certainly aid you in getting a job.
All really good programmers I know got good by either contributing to open source projects, or starting their own projects. Developer skill really just is experience, and being independent in a project is just the best way of gaining experience.