DEV Community

Discussion on: What are some good questions to ask when you're inheriting a codebase?

Collapse
 
barelyhuman profile image
Reaper
  • Setup
  • Credential Management
  • Code Flow
  • Target Use Case

Setup

I would normally recommend someone creating a repo to have all the steps required to setup that repo mentioned in the README but since not everyone does that, as someone who's been handed the project the next step would be to let the person guide you during the setup and while doing that any technology that's being uses can be used as a query to figure out why it's being used. If the person points out that it was a decision taken by someone else, make sure you get the answer to the "Why" from them later.

Credential Management

The next important part is how are the configs and database credentials (if any) being managed both in the local setup and in the production environment so you know what to keep in mind while messing with the credentials.
Some people have 2-3 different environment based files so it's a easy to know that changing the local configs shouldn't have an impact on the app that's on the staging servers even if you do deploy it

Code Flow

Now this one depends from project to project but the idea remains same, asking for the code standards / linters /code style to be followed for the project and also it's kinda important to know how the application flows.
For ex. a webserver, assuming a nodejs server starts off in the server.js file, figuring out how the plugins and routes and models are getting injected into the application, if not, are they just importing each route manually and using them. These can differ from company to company project to project based on how the company develops it's processes but it's always good to know what part of the code controls what.

Knowing :

  • where the scheduled jobs are stored.
  • where the binary scripts are being handled
  • what significance does each folder hold etc.

Target Use Case

I'm pretty sure you are already told what you are going to be working on and what that codebase's intent is but in case it isn't, you gotta find out why you are building it and what problem does it solve