title: How to understand the design and code flow of any product quickly?
body: <p>I have switched to a new company and I am working on a product that has a huge code base without documentation. I want to quickly get acquainted with the design and the code flow of the product so that I may become a productive member ASAP</p>
  
  <p>Slowly and steadily one does gets to understand the code, but what should be the best and smart way one should approach the code base so that he understands the code quickly and start delivering?</p>
  
  <p><strong>Note:</strong> I tried my hands on Star UML and tried to reverse engineer the class diagrams so that I may have a rough idea of the product internal designs but failed miserably.</p>
  
  <p><strong>EDIT:</strong> The question is not about gaining knowledge about what the product does but how the internals are designed.</p>
  
  <p>Fixing bugs and Debugging using breakpoints does provide one way of achieving this but I was looking if there is even a faster way we could achieve this</p>
  
  <p>In Keith's Words:</p>
  
  <blockquote>
    <p>This may work for some code-bases, but in general I think its a bad idea. You tend to be too focused on the details, while at first you want to get the big picture: what the classes are, what the communication patterns are, etc. Plus, if you have a distributed application (client-server, n-tier, etc), or code that takes a long time to run it may not be practical to run it through a debugger</p>
  </blockquote>