I'm a student developer and also have been writing .Internet programs for around annually now. The majority of the work I've done has involved building new programs (mainly web applications) on your own and I've been given pretty much full treatments for the program design.

This is a great experience however, like a student developer my confidence about if the approaches I've taken are the most useful is minimal. Ideally I would like to collaborate with increased experienced designers (I've found this the very best was I learn) in the organization Sometimes for designers often operate in isolation (an excellent shame for me personally).

Lately I made the decision that a great way to find out more about how experienced designers approach their design may be to understand more about some free projects. I discovered myself just a little overcome through the projects I checked out. With my degree of go through it was confusing your body of code I faced.

My real question is slight fuzzy one. How can designers approach the job of understanding a brand new medium to massive project. I discovered myself flowing over plenty of code and battling to determine the wood for that trees. At anyone time It seemed like I possibly could understand a little area of the system although not observe how its all fits together. Do others understand this same feeling? If what exactly approaches would you decide to try comprehending the project? Have you got every other advice about how exactly to understand design guidelines?

Any advice is going to be greatly appreciated. Thanks.

This can be a quite interesting question. I additionally want to understand how other designers do that. Until recently I personally use these options in no particular order:

  • Browse the source code, it's the benefit that it's always current. It's also the hardest task, but it's possible.
  • Browse the unit tests if they're available, they frequently show the intended use for any class, library or framework.
  • Refactor an element of the source code. When you are enhancing the standard from the source code you improve your knowledge of the code, or should I only say you are able to only enhance the source code knowing what it really does.
  • Debug the applying, step with the program while using the a debugger.
  • Make use of a tool like NDepends, JDepends, Lattix, Visual Studio etc. to reverse engineer the architecture or style of the applying and employ that like a beginning point.
  • Browse the documentation. Any documentation that allows you to definitely comprehend the application is going to do (user documentation, design documentation or architecture documentation).
  • Communication using the original designers as Bruno stated would be also the best place.


I'd usually request a developer to provide me an introduction to the project or the project modules that i'm thinking about. I've not found to date anything that's much better than interacting using the designers involved to become brought to a current codebase. They are unable to only provide you with an introduction to the project and code but additionally recommend any available documentation (e.g. class diagrams) that might be worth searching at.