Onboarding into a new codebase is intimidating. 😱
Technical stacks vary from codebase to codebase significantly, and no two are the same. Getting up to speed quickly and producing quality idiomatic code is challenging. As a new contributor to a codebase, you should also bring in new ideas before you inevitably become blind to the weaknesses of the new codebase and the processes surrounding it.
A technique that helped me immensely over the years is building up a longer-term side project that closely follows the technical stack you use in your professional codebase.
The best time to invest into a side project with this approach is before joining a new codebase at work that has technology you haven't encountered before or are not up to date on.
There are a few reasons to do this.
🗺️ First, by building from scratch, you get a high-level overview of how individual systems interact and how your team's setup differs from the canonical one. This perspective alone will give you valuable ideas about what to improve in the preexisting codebase you're joining — upgrading legacy patterns, standardizing towards community patterns, etc.,
🧪 Second, thanks to your side project's simplicity, you get a playground for quickly executable experiments that are technically relevant to your main codebase. Trying complementary technologies in a small codebase that translate to your daily one makes prototyping more fun, increasing the odds that you'll do it regularly.
🤔 Last, your tiny side project will always remind you how quick building a project can be, how easy it is to deploy, and how painful even a petite codebase becomes to migrate if you skip dependency upgrades for a year. The difference between the ease of developing your side project and your professional codebase is an excellent source of dissatisfaction.
Dissatisfaction creates a lasting incentive to keep improving your daily driver codebase and bring it close to the ideal of your small side project. You will never reach the same ease of development on the main codebase. But that's okay! Incremental improvements add up and make both your team's and your life better in the long run.
Happy building! 💪🏻