From: Tim X Date: 2007-01-03T15:35:06+09:00 Subject: Re: where to begin? Oin Maple writes: > --nextPart1584976.yAKSk0qFlE > Content-Type: text/plain; > charset="us-ascii" > Content-Transfer-Encoding: quoted-printable > Content-Disposition: inline > > Hello! > > I would like to start working on a real project. Start "seeing some action"= > =2E=20 > I've been reading through ruby books for half a year now, but i haven't yet= > =20 > started to make real programs. What I would like to do is help an opensourc= > e=20 > project somewhere, but i don't really know how or who would need this help= > =20 > and what skills would that require. There are a lot of questions. When am I= > =20 > good enough to enroll in such a project? What do I do? Where do I look? > > I tried searching for a project on rubyforge, but I only found 3 requests f= > or=20 > a ruby developer and they all looked too complicated. I got put off when=20 > seeing so many lines of code. How exactly does a new developer help when=20 > joining a big project that has been going on for a very long time. Should I= > =20 > even attempt that? > > there are really lots of questions in my mind. I hope someone will point me= > in=20 > the right direction. > It usually takes a bit of time to get across any project you join which has been running for a while. Don't look at all the lines of code to start with as you will get overwhelmed. My recommendations are 1. First, find a project you are really interested in. don't worry about the complexity or size. It is far more important to get involved in something you have an interest in if you don't want to lose momentum too quickly. 2. Start by offering to provide testing support. All projects need testers. The advantage of starting off here is that you will get to understand the project, the objectives and how the application works. This high level conceptual understanding is critical for getting to understand the lower level aspects. Most projects also require people to write documentation. While this is often a bit boring and doesn't have the cred of being a code contributor, its important and a good way to verify you have the concepts and proper understanding of the app. Projects will often succeed or fail based on the quality and relevance of the documentation. 3. As you get to understand the app through testing, start doing some simple basic debugging of problems you find. Initially, just start with clear documentation of the problem, providing test cases which can reproduce the issue and then start providing additional infora\mation and tracking down the specific module/file and then the code. Apart from allowing you to get more familiar with the application, you will also get familiar with the coding conventions, learn additional techniques and slowly develop your own code knowledge. 4. Once you are comfortable with the app, its code etc, select some problems from the bug tracking system for the project and try to solve them. Provide your solutions to others in the team for their comment and suggestions. don't be too thin skinned - some people tend to be very blunt when providing criticism of code. Put your ego aside as much as possible and try to appreciate what the basis of their criticism is. Sometimes, you may just disagree with their analysis, but try to understand where they are coming from and don't be too defensive. 5. Finally, be patient. Most interesting applications/projects are fairly complex and it will take a while before you really understand many of the finer points. Don't bee to embarrassed to ask for criticism and provide your work for others to review. Above all, get involved in something you find interesting rather than just something you think will be easy and be prepared to take a while before you feel as though you are providing valuable contributions. HTH Tim -- tcross (at) rapttech dot com dot au