
In the software industry, people move from project to project and company to company. A programmer working on a project for a long time is generally very productive with the codebase. If another developer joins to replace them, there is a period of low productivity and risky outcomes. We can call this the transition time.
During this transition time, developing new features takes longer than before. Chances of regressions are also higher. After the transition, things return to normal. The length of the transition period varies: complex projects require longer ones, while well-documented projects with clean code have shorter ones. It also depends on the skills of both the departing and incoming programmers, as well as how the handoff is handled—a proper handoff makes it smoother.
The reason for this lies in how programmers think about the program, which we call a mental model. Every programmer on a project builds a mental model of the program. We code using this mental model: when it’s closely aligned with the actual program, we produce better-quality code faster. If there’s a gap, we code slower and introduce more bugs.
Building a strong mental model takes time. If a programmer builds something from scratch, their understanding stays in sync with the program, making it easier and faster to code in a new project. Working on a very old project, on the other hand, is much harder.
If you’re starting on a new project, always aim to build the right mental model as soon as possible (ASAP).