I'm a huge proponent of designing your code around the data, rather than the other way around [...] I will, in fact, claim that the difference between a bad programmer and a good one is whether he considers his code or his data structures more important. Bad programmers worry about the code. Good programmers worry about data structures and their relationships.
Nobody should start to undertake a large project. You start with a small trivial project, and you should never expect it to get large. If you do, you'll just overdesign and generally think it is more important than it likely is at that stage. Or worse, you might be scared away by the sheer size of the work you envision. So start small, and think about the details. Don't think about some big picture and fancy design. If it doesn't solve some fairly immediate need, it's almost certainly over-designed. And don't expect people to jump in and help you. That's not how these things work. You need to get something half-way useful first, and then others will say "hey, that almost works for me", and they'll get involved in the project.
Talk is cheap. Show me the code.
Learn the rules like a pro, so you can break them like an artist.
Enlightenment is probably antithetical to impatience.
People who want to learn are, however, always welcome. People who respect knowledge, know what it costs to acquire it. People who do not know its costs will generally not respect it, either.
Free software is the world's most advanced technical education system. It allows anybody, anywhere in the world, to get to the state of the art in anything computers can be made to do, by reading what is fully available, by experimenting with it and by sharing the consequences freely.