The question in the title was
What level of programming should I
have to contribute to open source?
and the answer to that is none at all. While smaller and newer Open Source and Free Software projects (especially when there is overlap with an existing project the community is happy with) can struggle getting the support of programmers and skilled users the number one thing you can do to help a project you support is document it from a users perspective.
While it's not the most glamorous of projects it's guaranteed to get you the love and respect of your peers on the project team.
From writing proper docs to answering questions on mailing lists and forums it all counts as support and is really, really important and lacking in all but the most professional of FOSS (I still hate that term) projects.
The second question you ask is;
Are novice programmers a hindrance to a project?
And the honest answer to that one is a difficult one to give because they can be and I hate to admit it but projects aren't schools and some people can take more from a community that they are attempting to help than they give but in all but the most mature and newbie hostile projects there are dozens of people willing to give you the support you need to get you up to speed.
Those people helping you out remember when they where the newbie asking good questions about the wrong thing or silly questions about the right thing and know that in many cases the person asking the questions now will return the favour and start answering newbie questions (exp. the ones they asked) pretty quickly.
So don't be afraid to ask a good question and get stuck in the chances are a successful team will have enough members willing to give you a helping hand up the ladder but be aware they will expect you to do the same and answer the FAQs as they come up and perhaps write the documentation for them.
What goes around comes around and documentation is the key to the door :)