| Some suggestions: - First, and maybe most important: familiarize yourself with the general functioning of the product from the user level. The code will make much more sense if you understand what it's actually supposed to be doing. Also, many of the class and method names reflect things that the product does, so understanding the product will help you decipher the code. - Try to understand the high-level architecture, e.g., what are the major parts of the system and how do they talk to each other? Looking at how the product is built and deployed could help identify the major pieces. In Java, these pieces might correspond to jar files. If the product stores data in a database, what are the main database tables? If it's a web app, what are the servlets or other APIs that the GUI uses to talk to the back-end? - If the product has Javadoc documentation, use that to get an overview of what the various parts of the code do. Try to find any other documentation that exists about the implementation of the system. (Unfortunately, sometimes there's no doc.) - If there are people on the team who are willing to give you an overview of the code, spend some time talking with them. - Once you've done all of the above, sit down with the debugger and try to trace the sequence of events that occurs when you perform some simple user operation, like clicking on a button in a GUI. Try to predict in advance what might happen based on your understanding of the architecture. Read through some of the code that you've executed to get a more detailed idea of how it works. Repeat many times with different types of operations. While doing all this, write down detailed notes. These notes will be useful for you to refer back to, and could also help the next new developer understand the code more quickly. |