Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

I want to understand an existing project for improve myself more but i am not sure that project is overwhelming for me or not. I am not sure i am capable to understand it. I even think that i will be failed. When i look at projects, at a glance it makes me feel scary to see thousand line of codes .

I don't even know where to start read codes.Do i have to follow by debugging or another else? Can you please guide me about this situation ? I am totally get confused for start.

Edit : Few thing for specify about my question.

I know C# language and I have learned some WEB technologies like ASP.NET MVC 2 and Web Forms but sure still there will be many thing which i still don't know. I call myself as beginner but it is just because lack of professional experience in this area. But my OOP understanding is enough good. I am thinking to improve myself on WEB so i am looking for WEB projects like blog engines which is simpler than others for starting.

share|improve this question
I... what? What is the project? What is the project for? Do you even know the language? Actually how large is the project? – TheLQ Oct 12 '10 at 21:09
TheLQ - I asked the question generaly so there is no a project deceided yet but there are some candidate. I am trying to improve myself on WEB.And yes i know language and my knowledge about my language is good. – Freshblood Oct 12 '10 at 21:11
Please edit your question and add more details on your background, the projeçt you are talking about and other information that should help us answer it correctly. Thanks – user2567 Oct 12 '10 at 21:11
But stating clear question is like doing 50% of the answering job. Here is 25% for start. Question must include the word like "Who", "Why", "When", "Where", "How", "What", "Which". choose one. – user7071 Nov 14 '10 at 2:56
There should to be some general line for advice something. It would to be localized question if i would say all details.But also question can be improved with some details but it is still ok by my side. – Freshblood Nov 14 '10 at 14:02
up vote 6 down vote accepted

Best is to start off by fixing bugs. Start with small bugs. Fixing the first bug is a big milestone. Because when you do that, you already know how to edit version controlled code, build it, understand the desired functionality and test it. You also know the conventions used, libraries available, idiom/riffs used, debugging techniques, coding style/conventions of the project, overall code organization, the bug tracking system used etc.

Do not be overwhelmed by the size of the project. Start small. Start with easy bugs. Ideally your mentor should assign something simple enough to get you familiar with your development environment. Then move on to small features, in modules that you are already familiar with. Then you can move on to more complex bugs or move to adjacent modules. In time you will be able to think in bigger chunks of the project and the size will suddenly seem smaller.

share|improve this answer

A few tacts I've used for diving into an existing codebase:

  • Read any high-level documentation you can find on the project, and/or try to get an overview of how things work from someone else working on the project.
  • Trace a few function calls though the code and see what happens. Try to pick something that looks like it hits at least a few major subsystems.
  • Try to implement some simple functionality. It'll probably take a while and a lot of digging through code, but it's a good way to start understanding the code.
  • Try to diagram the system at a high-level, or an important subsystem at a slightly lower level. A uml-ish class diagram or sequence diagram will work. The process of reading the codebase to construct such diagrams can be very educational.
share|improve this answer
hımm so it is better to understand diagram concepts which i haven't spend enough time on it. – Freshblood Oct 12 '10 at 21:29

begin many paths:

  • from inputs: places a user/client launches the application
  • external system : tables on databases, other projects the one you're learning uses
  • diagrams if possible (meaning: if you have any)
  • core business (ask for what's the app supposed to do)
share|improve this answer

My favorite key when working with a project that I've either had from inception to deployment or just looking at an example is F12. In most IDEs I'm aware of, it traces the object, method, or other bit of code to its source if it's user-defined. System language files display a header/interface, depending on which language you're working with. If the files are organized well, F12 will show you an order by which methods travel through the stack, which helps superbly with debugging.

share|improve this answer
You answer basically say 'trace the code'. That is already answered. – Jan Doggen Feb 15 '15 at 9:41

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.