Navigate New Codebases Like a Seasoned Pro
Tags: beginners, programming, webdev, productivity
Published: 2023-09-04 05:08:49

*This article was originally published at https://maximorlov.com/navigating-new-codebases/*

You've landed your first web development job or internship, and you're excited to get your hands dirty in the codebase. Congratulations! 🎉

But wait... You're dropped into a colossal project and told to "just mess around with it"? How are you supposed to make sense of **thousands of lines of code**?

You're probably lost and scared that you won't be able to pull it off, especially if you're working remotely. It's not like you can have someone pop by your shoulder and give you friendly advice.

No worries, though. **This feeling is natural and it *will pass*.**

Follow these **4 tips** while you navigate a new codebase and you will ace your new job! 💪

## Tip 1: Create a map
The first time looking at a massive codebase can be daunting. You might feel like you're in the middle of a labyrinth with no escape.

This is why mapping is *crucial*.

Grab a pen and paper, or go digital if you prefer. Create a flowchart that outlines how different modules and components interact with one another. This could be as simple as "User Input → Form Validation → Database" or as complicated as a multi-layer API structure. The goal is to give yourself a roadmap, or a cheat sheet if you will, to refer back to.

Think of it as mapping out your favorite video game. **It helps you understand where you are and where you need to go.**

After creating the initial flowchart, keep refining it. Whenever you understand a new aspect of the code, update your map. The process is ongoing, and your understanding of the codebase will evolve.

The map will become an indispensable resource as you dive deeper. And you know what? Your future self and potential teammates will thank you for it.

## Tip 2: Add small features
You might be wondering, "Why should I add features to a project I don't understand yet?".

Well, the beauty is in the *doing*.

When you take the bold step to insert a small widget or perhaps modify a piece of existing code, you engage with the system in a very practical way. This is where the rubber meets the road. As you succeed in adding small features, **you'll gain confidence**.

Plus, by doing so, you'll inevitably encounter various parts of the codebase, which helps your understanding of it.

Don't worry if the feature you're adding doesn't bring about world peace. The goal is *learning*, not perfection. Over time, these little additions will empower you to understand larger structures and even refactor code.

## Tip 3: Read and comment
Code isn't just a set of instructions for a computer. It's a language that developers communicate in.

**So treat the codebase like a book — *read it, ponder it, question it*.**

Try to understand the developer's intentions. Why did they use a for-loop here instead of a while-loop? What's the reason for caching this specific data? These are the types of questions that will help you dig deeper into the code's logic and purpose.

Don't underestimate the power of commenting. Write your thoughts and questions directly in the code as comments. If you're wondering why a particular function is structured a certain way, write it down. These comments act like sticky notes that you or another developer can refer back to. They're the questions you'll ask in your next team meeting or during a pair programming session.

By annotating the codebase, you make it interactive — a living, breathing document that helps everyone involved.

## Tip 4: Ask (many) questions
It's not only okay to ask questions, it's encouraged!

Think you don't even know what to ask? Well, you do! Write down anything you don't understand and can't find in documentation (if there's any). There's no such thing as a stupid question when you're learning. The only stupid thing is not asking and remaining in the dark.

If you're working remotely it can feel isolating, and the lack of in-person interactions can leave you second-guessing your every move. But remember, remote work doesn't mean less communication. It means *more*.

**Got questions? Jot 'em down.** Not sure how to extend a form or why a piece of code is doing what it's doing? Mark it and discuss it with a colleague.

## Don't let fear get the best of you
The project might be as complex as a full-fledged slot game or a robust e-commerce site, but don't let that intimidate you. Seasoned developers also get this overwhelmed feeling. The difference? **They know it'll pass because they've been through it before.**

You *too* will navigate through the maze of code, functions, and algorithms.

So map out the code, add small features, comment generously, and communicate! Don't bottle up your questions, ask them.

You're not an imposter. You're an explorer charting new territories, and like any great explorer, it's okay to ask for directions.

**So go on, roll up your sleeves, and dig in!** 🚀

## Become a skilled Node.js developer

Every other Tuesday I send an email with tips on building solid Node.js applications. If you want to grow as a web developer and move your career forward with me, [drop your email here 💌](https://maximorlov.ck.page/0076aaf499).