DEV Community

Cover image for ๐—›๐—ผ๐˜„ ๐˜๐—ผ ๐˜‚๐—ป๐—ฑ๐—ฒ๐—ฟ๐˜€๐˜๐—ฎ๐—ป๐—ฑ ๐—ฎ ๐—Ÿ๐—ฎ๐—ฟ๐—ด๐—ฒ ๐—ฆ๐—ผ๐—ณ๐˜๐˜„๐—ฎ๐—ฟ๐—ฒ ๐—–๐—ผ๐—ฑ๐—ฒ๐—ฏ๐—ฎ๐˜€๐—ฒ
Gaurav Singh
Gaurav Singh

Posted on

2

๐—›๐—ผ๐˜„ ๐˜๐—ผ ๐˜‚๐—ป๐—ฑ๐—ฒ๐—ฟ๐˜€๐˜๐—ฎ๐—ป๐—ฑ ๐—ฎ ๐—Ÿ๐—ฎ๐—ฟ๐—ด๐—ฒ ๐—ฆ๐—ผ๐—ณ๐˜๐˜„๐—ฎ๐—ฟ๐—ฒ ๐—–๐—ผ๐—ฑ๐—ฒ๐—ฏ๐—ฎ๐˜€๐—ฒ

Have you ever felt overwhelmed by a large and complex software codebase?

Joining an existing team with a large, unfamiliar codebase can be daunting, especially when thereโ€™s little documentation and poor test coverage.

I was recently tasked with adding a new feature to a project and it took me an unusually long time to complete. I wasnโ€™t struggling because of my knowledge of the framework used or programming language, but because I didnโ€™t fully understand how the project was designed or its various user workflows. It was my first time seeing this codebase and the tight delivery deadline only added to the pressure.

To get past this, I began searching how to quickly understand large, complex codebases. Here are a few key insights Iโ€™ve gathered. I call this ๐—ง๐—ผ๐—ฝ ๐——๐—ผ๐˜„๐—ป ๐—”๐—ฝ๐—ฝ๐—ฟ๐—ผ๐—ฎ๐—ฐ๐—ต

๐Ÿญ. ๐—จ๐—ป๐—ฑ๐—ฒ๐—ฟ๐˜€๐˜๐—ฎ๐—ป๐—ฑ ๐˜๐—ต๐—ฒ ๐—ฃ๐—ฟ๐—ผ๐—ท๐—ฒ๐—ฐ๐˜โ€™๐˜€ ๐—ฃ๐˜‚๐—ฟ๐—ฝ๐—ผ๐˜€๐—ฒ:โ€จThis may sound obvious, but sometime even experienced developers lack a basic understanding of what the system's main purpose is. Focus on understanding the business concepts before diving into the technology. Ask questions like: Who is using the software? What are their main objectives? ๐˜Š๐˜ฐ๐˜ฅ๐˜ฆ ๐˜ช๐˜ด ๐˜ฎ๐˜ฆ๐˜ณ๐˜ฆ๐˜ญ๐˜บ ๐˜ข ๐˜ฎ๐˜ฆ๐˜ข๐˜ฏ๐˜ด ๐˜ต๐˜ฐ ๐˜ข๐˜ฏ ๐˜ฆ๐˜ฏ๐˜ฅ ๐˜ข๐˜ฏ๐˜ฅ ๐˜ธ๐˜ช๐˜ต๐˜ฉ๐˜ฐ๐˜ถ๐˜ต ๐˜ฌ๐˜ฏ๐˜ฐ๐˜ธ๐˜ช๐˜ฏ๐˜จ ๐˜ต๐˜ฉ๐˜ฆ ๐˜ฆ๐˜ฏ๐˜ฅ ๐˜ข๐˜ญ๐˜ญ ๐˜ค๐˜ฐ๐˜ฅ๐˜ฆ ๐˜ช๐˜ด ๐˜ฆ๐˜ด๐˜ด๐˜ฆ๐˜ฏ๐˜ต๐˜ช๐˜ข๐˜ญ๐˜ญ๐˜บ ๐˜ฎ๐˜ฆ๐˜ข๐˜ฏ๐˜ช๐˜ฏ๐˜จ๐˜ญ๐˜ฆ๐˜ด๐˜ด.

๐Ÿฎ. ๐—™๐—ฎ๐—บ๐—ถ๐—น๐—ถ๐—ฎ๐—ฟ๐—ถ๐˜‡๐—ฒ ๐—ฌ๐—ผ๐˜‚๐—ฟ๐˜€๐—ฒ๐—น๐—ณ ๐˜„๐—ถ๐˜๐—ต ๐˜๐—ต๐—ฒ ๐—”๐—ฟ๐—ฐ๐—ต๐—ถ๐˜๐—ฒ๐—ฐ๐˜๐˜‚๐—ฟ๐—ฒ:โ€จStart with the high-level architecture before getting into the details of the each implementation. Understand the different layers, such as the web tier, business tier, and database tier, as well as front-end and back-end. You donโ€™t need to know every technical detail, just enough to get a general understanding of the systemโ€™s structure. This can help to create a map of how different piece of technology work together.

๐Ÿฏ. ๐——๐—ถ๐˜ƒ๐—ฒ ๐—ถ๐—ป๐˜๐—ผ ๐˜๐—ต๐—ฒ ๐—–๐—ผ๐—ฑ๐—ฒ:โ€จBegin with the specific code or component youโ€™re working on. Understand whatโ€™s its purpose? What functionality does it provide? If available, unit tests can be helpful in understanding how a component works. In well-structured projects, good naming conventions for variables and methods often provide hints about many code flows.

Itโ€™s important to remember that this process isnโ€™t immediate - understanding a codebase is iterative. The more you dig into these concepts and understand user journey flows, the easier it gets.

Donโ€™t hesitate to ask for help if you are stuck. Happy coding!๐Ÿ˜Š

Was this post valuable?

Please say "thank you" by commenting on this post!

Everyone is welcome

Top comments (0)

Sentry image

See why 4M developers consider Sentry, โ€œnot bad.โ€

Fixing code doesnโ€™t have to be the worst part of your day. Learn how Sentry can help.

Learn more

๐Ÿ‘‹ Kindness is contagious

Discover a treasure trove of wisdom within this insightful piece, highly respected in the nurturing DEV Community enviroment. Developers, whether novice or expert, are encouraged to participate and add to our shared knowledge basin.

A simple "thank you" can illuminate someone's day. Express your appreciation in the comments section!

On DEV, sharing ideas smoothens our journey and strengthens our community ties. Learn something useful? Offering a quick thanks to the author is deeply appreciated.

Okay