New project jitters? Embrace the discomfort!
Transitioning to a new project or team is a unique period of time in software development. In many cases, it means leaving a situation of relative comfort: being proficient and productive with the toolsets and workflows, being a local "expert," or leaving behind trusted relationships with coworkers.
It can also mean leaving a toxic workplace environment, a project that is no longer stimulating or rewarding – it can be a time of liberation.
Regardless of the context of origin, moving to a new project can stir up mixed emotions: excitement, joy, anxiety, and fear, among others. It's a period of vulnerability – as you return to being a "beginner" so-to-speak, and must adjust to local practices, new frameworks or techniques, and learn new application domain.
You may feel intimidated by the perceived high standard of the team and fear not being able to meet its expectations (hello imposter syndrome!), or you might feel overqualified and carry hubris – this is a good time to check your pride at the door.
In either case, the transitional period of "not knowing" may be demoralizing. How we react to it is entirely within our control: embracing this period of vulnerability and leaning into the discomfort can set us up for growth and success.
Be curious
There's a reason we were given two ears but only one mouth. Joining a new project is a time to listen, take notes, and keep an open mind – not to prosecute ideology. You may be impressed by what you hear and see, or you may object to some of the practices, technical decisions, etc. In the latter case, try to reframe a reaction like "I can't believe they're doing it like this" to "I wonder why they did it this way."
Being curious also reminds us that we are all human, we are always learning, we all make mistakes, and we generally have good intentions.
Joining a new team is an opportunity to learn from others. Everyone has something new to teach us, regardless of their seniority. The diverse backgrounds and experiences of others are enriching – we must be curious and open-minded to notice.
Be patient
I used to consider it a personal failure not to push a commit or open a pull request on the first day of a new project. I've come to reconsider this approach.
Joining a new team requires patience from ourselves. If we view the experience as a return to being a beginner, albeit an experienced beginner, we can alleviate some of the undue self-imposed stress and pressure. Through this lens, we can set more realistic objectives, become more familiar with local practices and problems, and ultimately yield a better first contribution.
This also means being patient with others. Remind yourself that onboarding a new developer is resource-intensive and that existing timelines and pressures on the team continue to exist despite your arrival.
Be incremental
As someone who invests in developer quality of life, I'm especially sensitive to the general developer experience when starting a new project. From the onboarding process, development workflow, and deployment, some projects leave much to be desired. Examples of common gripes:
- Clumsy setup requiring multiple manual steps
- Missing tooling, lack of automation, CI/CD, etc.
- Poor code quality, no linting, no style guide, etc.
- Lack of a test suite or a test suite that makes the codebase difficult to improve upon
- Unnecessary coupling of the development environment with network resources or 3rd party services, to a specific code editor, etc.
Whatever the situation may be, taking an audit of areas of improvement and writing them down helps establish a vision. Equipped with a sense of curiosity and patience, we can work towards improving these areas through incrementalism.
Incrementalism means making small changes over time towards achieving a larger goal. Trying to make radical changes all at once is a risky move, particularly as a newcomer. Doing so in small steps helps gain trust (and political capital) and develop buy-in from others.
Ultimately, joining a new project can be a catalyst for growth. It is an opportunity to learn and challenge existing notions. Embracing the transition as an opportunity, rather than dread, and using feelings of discomfort and vulnerability as signals to be curious, patient, and incremental could be ingredients for a smoother transition and success on the project.