tags:

views:

114

answers:

6

Hi there,

Besides practice(practice and more practice) reading books and forums, analyzing others people code is a must in order to have a career in this field.

The problem is that I'm a student(feels like always on learning stage) but sometimes i can't solve the problems by my own. I was thinking that on public open source repositories might be the answer I'm looking for.

My question is how can i find the answer to some of my problems in open source projects/community? Do you have any tips to share for me?

ty

+4  A: 

A few things for learning problem solving skills related to software developement (once you've found a project that you are interested in that is also written in a language you feel comfortable with) are:

  • Sign up to the mailing list
  • Lurk about on the project's IRC channel (assuming they have one)
  • Read through bug repots (the open ones to try solve them, and the closed ones to see how others solved them).

and of course discuss discuss discuss, if you think you have a basic grasp of the problem at hand but need clarification on some issues don't be afraid to ask your peers.

Hope this was of at least some help, Welcome to the open source world and good luck!

suicideducky
+1  A: 

Ask, ask, ask, ask if you come across a particular problem or solution that you don't understand. Make a good-faith effort to solve the problem or to understand a solution, share your thought process, and ask. SO is an excellent place for that, which you undoubtedly have already discovered. Good luck!

Jan Kuboschek
+1  A: 

As other said, ask to the mailing list of the project, anyway some of open source developers are not willing to help (unfortunately) for this sort of things.

In this situation I search answers by myself: pick up a terminal and use grep.

Guess naming of classes/functions that involves your problem you will find the way toward the module where the interesting bits are written.

pygabriel
+2  A: 

What I've found useful over the years, is to validate your code, go through coding conventions and best practices for various languages. Open Standards are the inevitable part of Open Source Software. In order to maintain a successful OSS project, it has to have some common ground in the community, so for instance:

Lastly, but not less importantly, research Object oriented programming and various architectures used for software development, e.g. the MVC pattern.

Ain
yes, right now I'm involved in a PHP project. ty for replay
dole doug
+2  A: 

... analyzing others people code is a must in order to have a career in this field.

I wouldn't say that is correct. Certainly it is not a must. Reading other people's code doesn't usually explain why they chose to solve a problem a certain way, and what alternatives they considered and then dismissed. Besides, it is not uncommon to find open source code that is badly designed and/or badly implemented.

The problem is that ... but sometimes i can't solve the problems by my own.

Ah. Well the solution to that is to practice, practice, practice, and not be afraid to make mistakes. Be self-critical, but don't let this stop you from "having a go". The more you do your own problem solving, the easier it will become.

Stephen C
it's not a must to have a career. then again, being good is also not a must to have a career. ;)
back2dos
@back2dos - that is true, but it is NOT the point I was trying to make.
Stephen C
besides that fact that i don't get the expected output, how else can I know that I'm making mistakes.
dole doug
Quite in tune with you Stephen. Practice, practice, practice. It's not important if it goes right or not, but it is important to take challenges. As often as possible.
Ain
theoretically, who can help me to find/fix the mistakes?
dole doug
@dole doug - with experience, you will learn to make that judgment that too.
Stephen C
Yeah, since you only learn from your mistakes, it would actually be best if you go through your debugging process on your own. There are tools (some of which were mentioned above) that help you to do that. Also choosing the right development tools plays a key role here. See Aptana for instance. It has code hinting and can alert you on the fly if you've got a typo etc.
Ain
@dole doug: if correctness is your worry, then you should have a look at TDD (and related approaches): http://en.wikipedia.org/wiki/Test-driven_development . If however you are talking of design mistakes, then a good suggestion I have is to actually have one project, that you maintain and extends continuously. I promise: mistakes will pop up all the time and with experience you get from other projects, you will be able to fix the problem (even if that means a rewrite). This way you'll learn not to make mistakes in the first place, because you're the poor bastard who has to clean them up.
back2dos
@Stephen C: I know that was not your point. I wasn't really serious. However I think code review is good, at least if the code is well commented (not explaining what you're doing e.g. `return 10;//returns 10`, but why you're doing it e.g. `//default implementation always returns 10 because GOOD_REASON`). Also, it sometimes makes sense to review code in groups. And the point of reviewing code is not only to look at it an awe, but to pinpoint both the gems and the mistakes, an ability which actually is a must. But yes, looking how other people do things doesn't replace DIY in terms of learning.
back2dos
+2  A: 
Norman Ramsey