3) Got passion to work for next to nothing on something that will probably fail?
4) You don't even need someone "better" than you to learn, just be deliberate about learning what you can from your peers. If you get stuck, find a new gig.
I struggled with the same thing in the past, and thinking I couldn't learn from people just because I thought I was smarter than them really held me back (Also working on municipal tax collection software as a city employee, but I'm pretty sure being less of a cocky prick would have helped)
Realistically would any programmer want a novice to contribute other than documentation? Edit: I have already been doing the things you are saying (learning from everyone) but I feel I am not progressing fast enough.
On just about any project basic bug fixes would be good. You know the easy noncritical stuff that tends to get overlooked. Fix up the slapdash UIs open source apps tend to have. Tests, beat on a library's interface in a way that someone too close to the code base might not think of. Depending on the app, data import\export might be a good place to start. It rather depends on one's area of interest.
I want to focus on deliberate practice by choosing projects that is relevent to my weakness. Right now I want to master C. Do you know a good projects for this?
Open source projects written in C. That is like shooting fish in a barrel made out of fish, on a floor made out of fish, with a gun made out of fish, with big fish for bullets.
You might try Redis, MongoDb, the Linux kernel, One of the BSD's kernels, Python, mongrel 2....
Yes. Working on the same problem space for a long time can get boring, and a fresh face willing to take it on makes it worth the time investing in code reviews and mentoring to provide continuity for users. Professionally at least, I would happily pair program with an intern for 6 months nonstop to bump the bus number on all my responsibilities.
Nothing wrong with documentation. I would do it just not the only thing I want to be doing. Do you know a good road map to make substantial contributions?
Not to be too self-promotional, but I built a site called HackerBuddy.com that could help you find a mentor (it's all free).
A lot of the advice here is about learning to code by building something for yourself, I completely agree with that approach. Pick a small web app that you'd like to build and try to build it yourself - when you get stuck, StackOverflow can usually help. I know that I learned much more by building something than I did being shown how to build something. And good luck!
I'm sort of in the same place. I've been working on making my own blogging system that can house various projects I'm working on and it's been going... slowly. I'm nearly done with the first iteration of it though. I've rewritten it maybe 3 times, but I've learned a lot about coding while making it. Its current iteration is made so that I can extend it in various ways and once I get a few extensions I plan on open-sourcing it. It's been good to have a pet project to work on.
I would love to have someone with a lot more programming talent/knowledge than myself to show me what I'm doing wrong and how to do it better. Is there some way I could submit it when I get the basic structure finished (should be within the next week or two) and get someone to look at it? Is this the kind of thing I could bring to a hackerspace to show off and get ideas from?
Download Wordpress and try making a plugin. Play around with it and see what good programmers have done. You can try this for other software too (pick your language). It's one way of working with great programmers.
Some thoughts off the top of my head (hopefully accurate):
- Do you use Vim? I believe it's written in C
- Apache web server - written in C (I believe)
- Mozilla Firefox - written in C++
These above would have the advantage that they might be programs you are already using, and thus somewhat familiar with.
For something smaller:
- Aspell is a clone of ispell that is written in C++
I believe they were looking for a new maintainer of
the Windows port a while back.
- Also, mongrel2 (by Zed Shaw) is a new web server written
in C that seems well thought out. And since it is new,
it may be more understandable than some of the larger
programs above. Also, the ZeroMQ infrastructure that
it uses seems interesting and useful to know about.
How do I go about understanding the internals of Fire fox or GNU emacs? Do I need to understand the entire thing to contribute? If not what should I do?
2) Got Money?
3) Got passion to work for next to nothing on something that will probably fail?
4) You don't even need someone "better" than you to learn, just be deliberate about learning what you can from your peers. If you get stuck, find a new gig.
I struggled with the same thing in the past, and thinking I couldn't learn from people just because I thought I was smarter than them really held me back (Also working on municipal tax collection software as a city employee, but I'm pretty sure being less of a cocky prick would have helped)