Onboarding Like a Pro¶
Starting your internship can be both exciting and overwhelming. Your first week will involve a lot of information intake, meeting new people, and trying to figure out how things work. There's a good chance it will feel like drinking from a firehose.
Day 1¶
Meet your team and manager¶
You'll likely meet your team, your manager, and potentially other interns. Try to remember names (I'm terrible at this), and ideally find a directory/org chart/slack channel that lists everyone on your team. This will help you put faces to names and understand the team structure.
Regardless of your social proclivities, try to be friendly, approachable, and proactive. This is a great opportunity to make connections and build relationships that could last well beyond your internship, and first impressions matter.
You'll be assigned a mentor at most companies, and an "onboarding buddy" at some (Amazon). If you don't have an assigned onboarding buddy, it can be very helpful to find someone relatively new to the company. This could be another intern that started before you, or a new hire on your team.
It's important to build a good relationship with your mentor/onboarding buddy, as well as your manager. After all, they'll more than likely be the ones giving you feedback/evaluating you for a return offer.
Set up your development environment¶
This might take longer than you expect, so be patient. You'll probably spend a good portion of your first day installing software, configuring your machine, and getting access to various systems.
- Follow any setup guides provided by your company
- Ask for help early if you run into issues
- Take notes on the setup process, and try to differentiate between one-time setup and workflows you'll use regularly
Familiarize yourself with the company's tools and processes¶
Every company has their own set of tools and ways of doing things. You might need to learn:
- How to access the company VPN
- Which communication tools they use (Slack, Teams, etc.), and what channels to join
- How meetings are scheduled and conducted
- Where documentation lives
- How to access the codebase (GitHub, GitLab, etc.)
In particular, you should understand how to search for information. This is a great thing to talk to your onboarding buddy/mentor about.
Never underestimate the power of Slack search! There is a very small chance you're the first person to ask a question. Similarly, later on you can lean heavily on code search tools (e.g. GitHub code search).
Review the onboarding materials¶
Most companies will provide some kind of onboarding materials or presentations. Talk to your onboarding buddy/mentor about what they found the most useful, and make sure to pay close attention to those parts.
On that note, you'll likely need to do a few hours of compliance training (e.g. security, workplace policies, etc.). This is usually pretty dry and inconsequential, but I won't explicitly tell you to click through it as fast as possible; that's a personal choice.
Sometimes companies will have a "bootcamp" or "orientation" where you go through a basic example contribution to the codebase. This is a great way to get familiar with the tools, but take these with a grain of salt since they can differ from the actual workflow your team uses.
Take notes on important information¶
You're going to be bombarded with new information. Don't try to memorize everything - write it down instead. Even if there's existing documentation somewhere in the company's resources, it's way easier to reference without all the noise.
I keep a "work journal" where I document things like useful commands, links to important resources, and small updates on what I'm working on. This sort of doubles as a knowledge base, and a timeline of my work.
Week 1¶
Get access to the codebase and start exploring¶
Don't try to understand everything at once. Instead, get familiar with the general structure of the codebase and how the pieces fit together.
- Look at READMEs and other documentation, but don't get too into the weeds yet
- Understand the general architecture and tech stack your team uses
- Focus on the areas where you'll be working, whether that be repositories, services, libraries, etc.
- Search for additional (non-code) documentation that might be helpful, such as design documents or architecture diagrams. No need to read or understand it all, but bookmark anything that seems relevant to your work.
It's easy to waste a lot of time here reading code you'll never work with. Try to scope it down to the areas that are relevant to your work, and focus on understanding those at a high level.
Shadow someone¶
One of the best ways to learn is to watch how your team members work.
- Observe their workflow and tools, and identify how it differs from what you learned in onboarding
- Watch how they debug problems
- Ask questions about why they do things a certain way
Don't be afraid to ask "why" questions - understanding the reasoning behind practices is just as important as knowing what the practices are.
If possible, try to shadow someone from the beginning of a task to the end. If your onboarding buddy has a small new task involving a code change, as well as some time to spare, ask if you can sit in with them on the whole process, from creating a branch to getting the code reviewed and merged. This will give you a good overview of the entire process.
Submit a small change to the codebase¶
Nothing helps you understand a process like actually going through it. Try to make a small, low-risk change early in your first week.
Updating a log to be more consistent/informative is a great start. It has the added benefit of being observable in production, so you can test it out and see if it works as expected.
Bonus points if you're able to get it reviewed and merged. Hopefully you'll also be exposed to testing in a staging environment, the code review process, and deployment. That being said, it isn't critical that this change is merged.
Attend team meetings and ask questions¶
Team meetings are a great opportunity to: - Gain context on what everyone is working on - Understand team expectations and norms
Don't be afraid to ask questions, but also be mindful of the meeting's purpose. If you have a lot of questions, consider writing them down and asking your mentor afterward.
Schedule one-on-ones with your team members¶
Getting to know your teammates individually can be really valuable. Try to schedule short (10-15 minute) chats with your team members.
You can ask about: - Their background and how they ended up at the company - What they're working on - Any advice they have for you - How your work might relate to theirs
It is really easy to deprioritize this, especially considering all the other stuff on your plate during your first week. However, you won't be new forever! You have the most pretense to schedule these meetings early on.
Understanding what people are working on, and in particular who to ask for help is really important. You'll be able to gather this information throughout your internship, but it's much easier to approach people later on after having already met them.
Understand your evaluation criteria¶
Most companies will have some kind of evaluation criteria for interns. You should ask your mentor or manager about this early on, and make sure you understand what is expected of you. You can start demonstrating these qualities early on, and it will help you understand how to prioritize your work and what to focus on.