Preparing for Your Internship¶
First, I want to emphasize that this isn't necessarily required for most internships. It's often expected that you'll be learning new tech during onboarding, and plenty of people are absolutely fine without doing any prep work.
However, if you want some insurance that you won't be thrown too hard into the deep end, there is some work you can do before you start. This is especially true if you're going to be working with a new language or framework, or if you know that your internship will involve a lot of new concepts that you haven't encountered before.
Before you start...¶
Gather information¶
What do you already know about the job? Make a list of all the technologies, languages, frameworks, concepts, or really anything else that you think you might encounter.
Much of this will be sourced by the job description or interview process.
I'll typically ask questions about the company-wide practices during the interview process. For example, do you use git? Are there any common languages or frameworks that are used in
? What is the process for deploying code? What does the code review process look like?
This list will evolve over time, especially once you're assigned a team or project. If you're connected with your manager/mentor, it's a good idea to reach out and ask them about the technologies that you'll be using, or if they know what kind of project you'll be working on. Otherwise, if you know the team/org you're assigned to, you can also do some research online for blog posts, GitHub repos, LinkedIn profiles, etc. to gather more information.
Please be respectful. If they don't respond, don't push it. It's an email from an external account, and you shouldn't take it personally.
Identify gaps¶
Once you have your list, try to identify major gaps in your knowledge.
New tech isn't too hard to learn on the job, and you'll more than likely be given internal resources to help you get up to speed on how it's used at the company. However, if you want a head start:
- If you'll be learning an entirely new language, you could get comfortable with the syntax and basic concepts.
- If you're going to be using a new framework, try to understand the high-level details, and how they relate to what you already know.
- If you'll need to use a new tool, try to get familiar with the basic commands and workflows.
New concepts will likely overlap with the above. For example, if you've never worked with C before, you might want to learn about memory management, and more broadly, how computer memory works. Many concepts are taken for granted as "common knowledge", and won't explicitly be taught during onboarding.
For example, I did Advent of Code and some LeetCode in Kotlin to get familiar with the language before using it at my internship. I also did a lot of research on how Kotlin differs from Java, since I was already familiar with Java.
Try to pick a few areas to focus on. You don't need to learn everything, just the things you're sure you'll be using that you're not already familiar with.
Read a lot¶
Try to familiarize yourself with the core concepts so you start to lay a foundation for your mental model. Already being somewhat comfortable while onboarding will help you learn faster, and will make it easier to ask questions. This is especially true if you're going to be using a new language or framework.
Similarly, read up on any new domains that you might be working in. For example, if you're going to be working on a microservice, read some blog posts about microservices and how they work and why they're used. You'll certainly want to keep an open mind, but having a general idea of the domain will help you understand the context of your work, and why things are the way they are. Otherwise, stuff will feel random and arbitrary, and you'll be left wondering why things are done the way they are, while also simultaneously struggling to learn the new workflow.
Build something¶
This could be as simple as using git to version your course projects, or as involved as building a small project from scratch with a new language/framework. I recommend dwelling more on writing code than on setting up projects/build tools, since you'll likely be working with an existing codebase at your internship.