Question

I've joined a small software development team to work on an existing code base. While I am tasking myself with learning the required programming languages and actually reading the code, I'm wondering if there are things software engineers would recommend I do in order to efficiently get up to speed on working with an unfamiliar code base.

I'm concerned that my question is too broad, so comments on how I can improve it would be appreciated.

Was it helpful?

Solution

It depends on your strengths.

  • Some people learn best through tinkering. Taking the code, compiling it, poking at it somewhere, looking at the result, repeat as necessary.
  • Some people learn best through mapping. They find the entrypoint, then start following the flow to important bits of code, getting a feel for dependencies and structure.
  • Some people learn best through diagramming. They ask someone to show them what the architecture is like on a whiteboard or similar. Once they have the high level of it, as well as some of the terminology, they ask more questions and/or look through the code to see where it all lines up.
  • Some people learn best through socializing. They will pair up with an existing developer and watch how they work. Where do they go? What do they do? How do they find stuff?
  • Some people learn best through goals. They want some basic task to focus on so they aren't overwhelmed by it all. They find that one simple thing, and armed with that confidence get progressively larger goals to hammer out.
  • Some people learn best through use. They want to open up the program, understand what it does (+how +why) and then will look through the code to map the user interface with the implementation.

In practice, it tends to be a mix since even if you're aware how you best learn, most orgs aren't good enough to embrace that. And no matter which route you take, it will take time and effort to get there with some mistakes along the way.

OTHER TIPS

Some common techniques you may find useful include:

  • Run the application with a debugger attached and step through the core parts of the code that way. This way, you can see a slow motion view of data flowing through the application as it runs. This should help better understand which parts of the code are responsible for certain parts of the application

  • Read the unit tests to better understand the use cases for key classes. This may also help explain some of the interactions and dependencies between classes.

Licensed under: CC-BY-SA with attribution
scroll top