So what step is before this one? I'd love to contribute to an open source project, but I still don't think I have enough programming skill in Python. I've been following several MOOCs and been through codeacademy and LPTHW, and I still can't program any projects(small or big), or even contribute to any.
One way to contribute is by testing documentation - try following a project's instructions to set up a local dev environment, and then report anything confusing or outdated in the documentation. You can also write a blog post explaining your experience of trying to contribute to a project - being a thoughtful beginner can help you point out problems that a more experienced contributor might automatically compensate for and not even notice. I wrote this kind of post for OpenStreetMap once, and experienced contributors appreciated it: http://www.openstreetmap.org/user/brittag/diary/19741
Like the article says, you can also answer support questions, report bugs, help manage bug reports (verifying reports, marking duplicates), write publicity blog posts, etc. These tasks are important and often understaffed on projects, and they help you become more familiar with a software project and more prepared to become a productive contributor to code.
I do non-code software work like that, and I've been happy to find a project that invited my kind of help: OpenHatch (http://openhatch.org/), conveniently relevant because it's about helping people who want to contribute to open source projects.