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!๐Ÿ˜Š

Billboard image

Deploy and scale your apps on AWS and GCP with a world class developer experience

Coherence makes it easy to set up and maintain cloud infrastructure. Harness the extensibility, compliance and cost efficiency of the cloud.

Learn more

Top comments (0)

Billboard image

The Next Generation Developer Platform

Coherence is the first Platform-as-a-Service you can control. Unlike "black-box" platforms that are opinionated about the infra you can deploy, Coherence is powered by CNC, the open-source IaC framework, which offers limitless customization.

Learn more

๐Ÿ‘‹ Kindness is contagious

Please leave a โค๏ธ or a friendly comment on this post if you found it helpful!

Okay