I recently joined a new project and found myself trying to learn everything at once. I felt like I was spinning in circles trying to absorb a wealth of new information. Now that I’m a few weeks in, I’d like to share a few things I’ve done to steady myself and move toward productive learning on my project.
1. Ask about tooling. 🛠
When you join a project, your instincts may be to hit the ground running as fast as possible. Though it’s counterintuitive, I’ve found that it’s helpful to slow down and ask about tooling first.
Once you’ve asked teammates for their recommendations, take the time to set up your tools properly. Get your development environment up and running. Learn the keyboard shortcuts for your new text editor. Create some bash aliases that streamline your workflow. Feeling confident about navigating your codebase and running your application provides a solid foundation for getting started.
Don’t get so caught up with tooling that you feel like you have to get every little thing perfect. Remember that your tools are meant to serve you. If you aren’t sure what your perfect setup should be, use a reasonable default. You can continue evaluating your tools as you move forward. There’s no need to perfect the settings of your tools right now.
2. Read the documentation, then tie it back to the project. 📖
Reading documentation is a great way to start learning the new technologies involved in your project. If you’re like me, it’s also a great way to lose context and end up wandering through seemingly endless pages of technical jargon for hours on end.
Here’s the trick: start small. Read some of the basics of the new technology you’re using, then open up the codebase and look for examples. Ask teammates about things that seem to deviate from the standards recommended by the documentation. This is a great way both to stay engaged in the documentation you’re reading and to start making sense of the project in the context of its technology stack.
3. Ask about the auxiliaries. 🤓
At one point during my onboarding, I asked a question about a pretty specific technology on the project. This technology is a standardized communication API for the kind of data in our project, but it’s not a core technology on our project, and I’m not likely to use it again in the future. I felt a bit guilty asking about it, as if I were taking time away from learning the important things.
I later realized that eliminating the unknown about this technology helped me orient myself. Think of it this way: instead of hearing “red, orange, yellow” and thinking:
“What on earth does any of that have in common?!”
I was able to think:
“I don’t know what makes things red, orange, or yellow yet, but I know now that those are the first three colors of the rainbow.”
It boosted my confidence, and it made me a more productive teammate when I could start to see patterns and point them out in pairing sessions.
This one is a double-edged sword. If you try to learn all of the minutiae at once, you’ll probably end up more confused. If you’re not sure whether to ask or whether to move on, consider asking your teammate something like, “Hey, you keep referencing X, but I’m not familiar with that. Could you give me a high-level overview so my brain isn’t getting stuck on that anymore?”
Giving this kind of direction to your teammate helps them know what you’re looking for. If you get the basics, you can do more research on your own later when you’re ready to absorb more information.
If you’re joining a new project and need more ideas on how to get started, my colleague Meredith recently shared three ways to minimize project ramp-in time, which I found very helpful.