How to Manage Interns
From onboarding to coaching, give your interns the tools they need to succeed—and set up your reports to lead them.
February 14, 2020 • 6837 words • 24 minute read
Adapted from a talk given at Austin Lead Dev Meetup in July 2019. Original slides and more information on the Talks page.
Internships can be a fantastic opportunity for everyone involved. The most successful internships are those where every participant walks away having learned something or gained some value.
It’s not just interns who have the opportunity to grow during this process—managers can develop leadership talent on their teams by asking one of their reports to manage an intern.
In a successful internship, everyone wins1:
- Entry-level interns gain the experience of working in a professional environment and learn practical skills with specific technologies and processes. They have completed a concrete project they can talk about on their resume or in future job interviews.
- Experienced engineers build their leadership skills and test out management by mentoring an intern.
- Managers identify and develop leadership talent within their team.
- Teams ship small projects or meaningful features implemented by their intern that might not otherwise be prioritized.
- Companies build relationships with potential future hires with a proven track record, and with students who can speak about their experiences to other potential intern or full-time candidates in their program.
But how do you manage an intern well? And if you’re considering delegating internship management to a non-manager, how does that work?
-
Set Up Your Interns to Learn covers practical tips and steps to take from the weeks leading up to your intern’s arrival through their last day. You’ll learn how to prepare an environment for your interns where they can spend their time gaining valuable experiences and working on meaningful projects for your team.
-
Set Up Your Reports to Lead makes the case for delegating internship management to non-managers. You’ll learn how to make opportunities for your reports to develop leadership skills and test out management in a lower-stakes environment.
Feel free to skip around and skim through this blog post! This is intended to be a collection of resources that will be most valuable to different people at different times.
Set Up Your Interns to Learn
Managing an intern well takes a lot of preparation and communication. You’ll want to lay the foundation for your intern before they ever arrive, making sure that they jump right in when they arrive and start learning.
If you take some extra time to set up your intern for success, you can ensure they can work on impactful, relevant projects and have the tools and resources they need to actually achieve the goals you set together.
The work and tasks I take on when managing an intern fall into four major categories:
- Learning Resources you should collect to help your intern figure out the company and your application.
- Onboarding Tasks of incremental complexity will help your intern ramp up.
- First Day tips to get off to a great start when your intern arrives.
- Coaching advice for giving consistent feedback on what’s working and what could use improvement.
You definitely don’t have to do all of these things, or do them exactly as I suggest! This is the system that I’ve found that works for me when managing an intern. What’s most important is finding what works for you and your interns in your own context.
Learning Resources
Before your intern arrives, you want to collect references to different documents and resources that will help them learn about your company and your technology.
In an ideal world, your team has already been writing these resources for your own use! All of these resources are incredibly helpful for developers of all experience levels. One tried-and-true method to expanding your list of resources is to ask any new hire to write or expand on the documentation with what they wished they knew as they onboarded.
But assuming you don’t already have a handy list of links lying around, do your best in the time before your intern arrives. Ask your team to contribute! Make sure you’re covering these general categories.
You don’t have to have all of this written down—you can always have in-person or remote meetings to discuss these topics. But taking the time to document will give your intern a place to refresh their memory if they have questions, and make onboarding the next person faster!
Company Basics
What’s the important information everyone needs to know about working at the company? Do you have an employee handbook? Are there paid company holidays? Do those apply to interns? Does your intern need to submit timesheets? How do they request time off or call in sick? What are the different teams at the company? What are the teams that your intern will likely be working with?
As a Pingboard employee, I’m a big fan of our interactive org chart and vacation calendar—it helps me keep track of who’s who and who’s out today. But any tool or set of documents will do here, as long as you have some way to share basic information about the company with your intern!
Setting Up Development
How do you install the app you work on, and its dependencies? How do you run services locally? How do you run tests? What tools and software do you need access to in order to develop, and how do you request access? How do you create test accounts? Do you have a specific development process in terms of how you seek code review and get your code tested and deployed?
When you’re writing out instructions, have empathy for your interns and make everything as clear and explicit as possible.
For example, don’t just say:
### First Time Setup
Clone the repo and run `yarn install`
Break it down into every step you’d need to take to set up your app on a fresh computer, for someone who might not have used this specific technology stack before:
### First Time Setup
1. Clone this repository and check it out on your computer:
`git clone https://github.com/my-org/my-repo.git`
`cd my-repo`
2. Install [Homebrew](https://brew.sh/) for Mac.
3. Use Homebrew to install [Node](https://nodejs.org/en/):
`brew install node`
4. Use Node to install [Yarn](https://yarnpkg.com/):
`npm install -g yarn`
5. Install our app's JavaScript dependencies with Yarn:
`yarn install`
6. Now you can run the app!
`yarn start`
Learning the Problem Space
What is the common terminology used at the company? What general information about the domain is helpful to know? What are the names of the products you ship? Who uses them? What are their use cases?
For example, if you’re building tax preparation software, it would be helpful to have:
- a glossary of common tax words and phrases;
- a quick explainer about the difference between your software for individuals versus the one for businesses;
- and a list of the main models you use across the apps to represent users and filings.
App Specifics
What does your service architecture look like? Is everything in a giant monolith? Do you use microservices? Which ones will your intern mostly interact with?
Within the app your team is working on, what’s the main structure of it? How do you find files and what’s the organizational structure of your directories? What are the main components of your system? What kind of clients do you support? Web? iOS? Android? How many databases do you have and what kind are they? How do requests flow through the system?
This is a great time to draw diagrams and have some visual representations of more complex systems! They’ll help everyone on your team, not just your intern.
Best Practice
Share responsibility for sharing knowledge.
If you are managing or mentoring your intern, you should not be the only person responsible for teaching them and bringing them up to speed! Making sure multiple people are involved in onboarding is better for your team and for your intern.
- Introduce your intern to more people. Your intern will have more people they feel comfortable reaching out to when they have questions. And they might be able to go directly to the person with the best insight or expertise!
- Reduce time burden on any one person. Ensure that a single person isn’t in back-to-back meetings or conversations. Make sure to include your remote teammates too! They can be a fantastic resource to help onboard your intern.
- Utilize the unique skill sets across your team. Your product manager is the best person to explain the different subscription types or user personas. Your designer is the best person to talk about the overall design system and patterns. A front-end engineer can discuss the front-end architecture; a back-end engineer can walk through the database models. Let the expertise of different members of your team shine!
The Goal of Learning Resources
When my intern arrives, they will
have access to the information that
they need to know to succeed in their role
and know where to look when they have questions.
Onboarding Tasks
When your intern arrives, you want them to be able to start working on meaningful contributions as soon as possible! But what are the kinds of tasks you can hand over to someone on their first day? Or the first week or so as they’re still learning about your app and technology and development process?
Your team can gather together and comb through your backlog and issue trackers and identify some good candidates for your intern to tackle when they arrive. The best candidates will be:
- Fairly straightforward. Don’t pick something with hidden depths and complex solutions that require a lot of existing familiarity with the codebase!
- Not too time-sensitive. If this is a bug that needs to be resolved within 24 hours, don’t kick that off to your intern on their second day!
You should create some kind of list or collection of tasks. As you add tasks to the list, make sure they have enough detail and information for your intern to get started!
In this example, I had a bug that had too little detail. As an engineer experienced with this app, I knew exactly what the problem was even with such scant phrases. So I took the time to create a test account for my intern with a sample scenario, took a screen capture video demonstrating the issue, and wrote out every step to reproduce it again.
Make sure every task you assign to your intern has sufficient detail for them to get started, and/or offer to pair on the task to get them started.
As you’re collecting potential tasks, categorize them into these three sections:
First Day Tasks
These are the simplest tasks. A really good candidate for this column is something like “fix a typo” or “make this button blue” or “change where this link points.”
The point of these tasks is to let your intern work through your entire development process:
- checking out the repository
- running the app locally
- making a small code change
- committing it
- having their code reviewed
- deploying their code
…or whatever your process entails. Make sure the coding task itself is small enough that most of your intern’s brain space can go towards learning the process itself.
First Week Tasks
These tasks are a little bit more complex than the previous ones, but they’re still not too tricky!
If the first category is “tasks that are a single line of code that you can immediately visualize,” the second category is “tasks that you have a pretty solid idea of how to tackle but the exact details are a bit fuzzy.”
For example, think about a task like “make sure modals close when the Escape key is pressed.” Or maybe there’s an exception being thrown by the server for a specific request and you know it can be fixed by checking for a null value.
The goal here is giving your intern a chance to learn more about the actual app and practice debugging and exploring the codebase on their own! You still don’t want to give them complete head-scratchers, or anything that requires a lot of existing knowledge about how the app works.
Project Ideas
Finally, start a list of potential project ideas! These should ideally be a project that your intern can complete and release largely independently within the duration of their term.
If your intern will be with you for eight weeks, you should plan for at least one week of onboarding and one week of off-boarding. So you want to target for projects that can be started and finished by one entry-level person in six weeks. If it’s a project that you think you could do in six weeks, it’s too much work! Figure out a way to scope it down a little smaller, and make some stretch goals.
Ideally, projects should be well-defined, meaningful, but not highly time-sensitive. Some great candidates for intern projects are “small-ish projects we would like to do but never quite have enough time for.”
Best Practice
Let your intern pick their project from a list curated by your team.
A really successful internship is one where your intern is proud of the work they have been able to accomplish, and your team had a small project completed that you might not have been able to get to otherwise. You can find a way to let your intern have some say in their work while still taking into account what your team needs!
- Give them a sense of agency. Provide your intern with a short list of viable projects that are reasonable in terms of the time and experience required. But let them have the final choice! Hopefully, they’ll be more invested in the project and get to work on the things that interest them most.
- Teach them to plan and estimate. Encourage your intern to write a short plan for each project idea they like. Have them do a bit of research to answer “How would I implement this? What are the major steps of this project? How much time do I think each step would take? What questions or unknowns do I have?” This can give both you and your intern a better sense of which projects are a good fit for them, and teach them valuable skills they’ll use in every role after about how to plan out a project.
- Set boundaries around what tasks are a good fit. Your team gets to pick what projects make the list! You can make sure that the list reflects your team’s priorities, and only includes things that are the right level of complexity for an intern. It can be really difficult to build a list of multiple project ideas, and there might be a few ideas that are obviously better than the others. But if you can come up with 1-2 really good ideas and 1-2 decent ideas, that’s a great list to give to your intern!
The Goal of Onboarding Tasks
When my intern arrives, they will
have access to a list of tasks that are
appropriate for their knowledge and skill level
and provide sufficient context for them to get started.
First Day
Your intern is finally here! It’s their first day!
If you work at a larger company, you may have a dedicated intern program that handles welcoming everyone, going through any required Human Resources tasks, and getting everyone set up with a working laptop. If you have a really excellent intern program, your interns might even do some basic development and coding together before joining their individual teams.
But if you’re at a smaller company, you might not have those kinds of resources and it’s on you to make your intern feel welcome and to get off to a great start together!
Clear Your Own Schedule
Make sure you are available for your intern’s first few days with your team. Get out of as many meetings as you can and block off time on your calendar. Avoid committing to any strict deadlines of your own during your intern’s first week so you can really focus on them.
Make yourself easily reachable—whether that’s by sitting next to them at a table or having a video call or reaching out on Slack and making sure they know they can ping you with questions.
Try to make sure your intern is set up with all their devices by the end of the day. Even if you can’t fix every problem for them, make sure to keep checking in and reaching out to people who can help! You want to make sure that your intern doesn’t feel alone on their first day when they likely don’t know anyone and may be nervous.
“Choose Your Own Adventure”
Whenever possible, try to give your intern choices about how to spend the onboarding time! For example, you might say “we have thirty minutes until lunch—would you like to have some quiet time to finish setting up your laptop, or would you like to start talking about how our app works?”
There are some tasks that will have a strict deadline—like filling out legal documents for HR—but other things are probably a bit more flexible about exactly when they happen. Give your intern a bit of agency by letting them choose! This can also help them feel less overwhelmed if they need a little space to collect themselves or to feel more engaged if they’re ready to dive into code right now.
Discuss Expectations
Schedule time for a 1:1 meeting with your intern on their first day to formally welcome them and talk about expectations and work style.
I’m a big fan of sending a calendar invite with discussion questions in the description. This gives your intern a chance to think about some of their answers, or at least just know what’s coming in this meeting.
-
What would make this summer feel like a successful internship for you? Do you have any specific goals for this internship? How can we help you succeed and grow?
-
What’s important to you in a workplace? What makes you feel valued and supported? Do you like a lot of independent space to work? Do you prefer to pair program more often? Are there any things that frustrate you or make it harder for you to thrive in your job?
-
I’m planning for us to meet for a 30min 1:1 check-in every week throughout your internship. That time is a good opportunity for us to chat about how you’re feeling, give each other feedback, and make sure you’re set up for success. Does that cadence sound good to you? How would you like to spend that time? Is there a specific structure for 1:1s that you like? (I can list off some different formats if that’s helpful, or we can also experiment for the first few weeks.)
-
What questions do you have about the company or about this internship or the team? What other things would you like to talk about? Is there anything else I should know?
Your intern may not have answers to all of these questions. They may not have worked in a professional workplace before, they may have no idea what their preferred work style is, they may not have ever had a 1:1 meeting, they might not know what their overall goals are and be able to eloquently state them. That’s okay!
One of the main goals of this meeting is to make sure you and your intern are on the same page and have set expectations about their role. For example, if they indicate that they want to learn about Vue but you use React, that’s a good thing to know on day one. Or if their goal is to build an entirely new app, you can let them know the kind of projects they’ll be working on are probably features in an existing app or internal tools for another team.
Ideally, you can find ways to support their goals and preferences—for the Vue enthusiast, maybe your team has a hack week coming up and they can try out a project of their own choosing then. But ultimately, there may be some things your intern would like to do that just aren’t part of the role, and that’s okay. You want to make sure your intern understands what’s expected of them in their role and what they can expect of you, and be as clear as possible from the beginning.
The Goal of the First Day
After my intern’s first day, they will
have a working development environment,
access to relevant software and accounts,
and clear expectations for their next few weeks.
Coaching
Now that your intern has arrived and started settling into your team, you still have a whole internship together! The best way to ensure that everyone gets the most value from that time is to be an active coach and mentor.
Your intern may not have much experience with writing production-ready code or working in a professional environment or on a cross-functional team. They’re going to be learning a lot just from working and existing in this space. But if you intentionally coach your intern and give them feedback, you can make that learning process smoother—helping your intern to focus on what matters and to understand what’s working, what’s not, and how to improve.
As always, you’ll want to make sure you explicitly communicate any expectations you have—you cannot assume your intern will walk in knowing exactly how you think they should behave or approach their work!
Provide Feedback in Every 1:1
A weekly 1:1 meeting with your intern is a really great way to make sure you have a dedicated space for checking in and giving feedback. I make it clear that our 1:1 time is not just “regular conversation in a different space,” but is meant for talking at a higher level.
- Their Project: How are things going overall? How are they feeling about their project? Do they think it’s going on schedule? Are they getting stuck on anything?
- Their Career: What kinds of questions or topics do they want to discuss about being a software engineer? Are they learning anything about what kinds of projects and technologies are interesting to them?
- Feedback: What are they doing well? If something went wrong in the last week (like a bug in production), this is a good time to talk about it. Reassure them of what they did well, that everyone makes mistakes. But then talk about what could be different next time!
Step Back and Give Them Space
You have more experience with this company, this application, and this technology than your intern. As they are planning or working on their project, you might be able to spot a mistake. Maybe it’s an implementation choice that is way more complicated than the situation calls for; maybe it’s writing something by hand instead of using a library method; maybe it’s not enough error handling.
When you spot a potential pitfall, don’t always jump in and just tell your intern to fix it and how. If it’s not too costly, if it’ll show up in testing, and won’t actually make it in front of a bunch of users—let them make their own mistakes.
Part of learning is making the wrong choice, recognizing when you’re down a rabbit hole, and figuring out a better way. It’s valuable to be given the space to mess up in small ways and to learn how to recognize those anti-patterns for yourself.
Of course, jump in and help your intern when they ask for help! And definitely step in if they’re about to waste a lot of time on something that’s not worth it—like dependency injection. But if you give them the space to experiment and try things out their way, they’ll learn so much more deeply. They might even surprise you and figure out their mistake before they make it!
Keep an Eye on Their Progress
While you want to give your intern some independence, you also want to make sure they aren’t getting stuck on anything for too long.
As an engineer, I’ve got my own process for checking up on my different tasks—times that I go through and check the status of my pull requests, or make sure all my tests are passing, or double-check that there aren’t any merge conflicts. Whenever I do one of these checks for my own work, I also spot check my intern’s work.
This can help surface potential problems—for example, your intern has resolved some feedback but the reviewer hasn’t responded in three days. It might be time for you to go ping that reviewer yourself and ask them to take another look. Or you can coach your intern more directly and say “Hey, if we haven’t replied in a few days, feel free to reach out directly and remind us! We try to pay attention but sometimes a message slips past us.”
Give Mid-Point and Final Feedback
Try to schedule a time to give your intern some longer-form feedback halfway through the internship and at the very end. Think of this as a very light performance review.
Here’s a sample template for mid-point review with just two questions:
- How has
progressed and grown so far in the internship? - What are opportunities for further growth in the remainder of the internship?
And a question for the intern to complete:
- How are we doing as a company and a team? What can we change to set you up for success or help you feel more supported in your internship?
You can answer each of these questions with just a paragraph or two of feedback. It doesn’t have to elaborate or incredibly detailed—you’re trying to give your intern an overall sense of how they’re doing and get some feedback from them about how the internship is going from their perspective.
Ideally, if you gave some suggestions for improvement at the mid-point check-in, you’d be able to come back to those at the final feedback and point to where they were able to implement your feedback!
Remember, you aren’t holding your intern to the same standards as a full-time engineer with a few years of experience. Think about the job description your team wrote for interns when hiring. How has your intern been doing relative to their experience and skill level?
Giving feedback at the end of the internship is very helpful if hiring your intern for a future role is a possibility. You can provide some documentation to other people on your team to justify a hire/no-hire decision. Even if you aren’t able to hire your intern for a full-time role or a repeat internship, they get some valuable information about how they did and some practice with performance feedback in a professional setting.
The Goal of Coaching
Throughout my intern’s term, they will
have consistent, timely feedback about
their progress and growth over time as well as
opportunities for improvement.
Set Up Your Reports to Lead
If you are a manager of a team that’s planning to host an intern, I strongly encourage you to consider asking one of your reports to manage the intern instead of doing it yourself!
Delegating managing an intern to one of your reports is a great way to develop leadership skills on your team and make space for your reports to grow in their own careers. Managing an intern can be a valuable opportunity for an engineer who has to demonstrate a proven track record of mentoring and leading before being promoted or assigned a formal management or tech leadership role.
On a practical note, a setup that I’ve found that works well is splitting management of an intern into two categories: mentoring and people management.
- Mentoring is all the tasks described earlier about defining tasks, meeting on a regular basis, and providing feedback and coaching. That’s work that can be delegated to someone who hasn’t been a formal manager yet but is interested in taking on a leadership role.
- People management is all the official reporting structure and HR tasks like timesheets and time off. That’s best done by an existing people manager, who has the right access and knows the process.
While I advocate for delegating the mentorship aspect of management, as a manager you should still be your intern’s manager “on paper” and handle the people management side.
Why It Matters
So why should you ask one of your reports to manage an intern? It’s good for your report, good for your intern, and good for the long-term health of your team!
Let Reports Try Out Leadership
If one of your reports has expressed interest in management or leadership, managing an intern can be a fantastic testing ground. Think of your report managing an intern as their own management internship.
Your report can get an idea of what’s involved in the mentoring and feedback side of people management, and if they want to continue to pursue it. You also get to evaluate how they perform in a leadership role and identify areas of growth to work on before your report is ready to lead other full-time employees.
If you realize your report is ill-suited to leadership, you’ve learned a lot of very valuable information about your report without having to make more long-lasting role changes. But if your report demonstrates skill and promise as a leader with an intern, it will be much less risky to give them future opportunities with more responsibility or a longer-term time commitment. You can start developing the leadership talent and experience within your own team today to prepare for the needs of tomorrow’s team.
One added benefit: as an individual contributor, being asked to manage an intern shows me that my manager trusts me and listens to my career goals. This kind of sentiment is important for employee satisfaction and retention!
Give Interns Insight Into Daily Life
If your intern gets a full-time job in the next few years, their daily life as a developer will look closer to the schedule kept by your reports who are individual contributors than your own as a manager. Having your intern work closely with someone who is a bit closer to their next step can give them some more concrete ideas of what full-time work will look like, and what interests them.
Lighten Your Load (Kind Of)
Managing an intern well takes time. There’s a lot of coaching and answering questions and making yourself available. It’s time that’s well worth it, but it is time nonetheless.
If you already manage at least one full-time employee, your schedule might already be booked. You can choose to trade off the daily management and mentoring tasks of an entry-level employee for higher-level coaching of your more experienced report instead. This is a different kind of work, but you might find it fulfilling and engaging to focus on teaching someone how to lead and manage, instead of teaching someone how to contribute with code.
Support Your Reports
If you do ask one of your reports to manage an intern, you should be prepared to offer them additional support during the internship to help them adjust to this new role. As your report should be coaching your intern, you should be coaching your report.
Have Regular Updates and Discussion
Check in regularly with both of your reports—your intern and your intern’s manager.
Ideally, you already have a 1:1 scheduled with your report, but if not you should set up those meetings for the duration of the internship. You want to be able to check in regularly with your report about how they’re managing, how they’re handling different scenarios, and give them feedback on their own progress and performance. That time is when a lot of more specific coaching can happen.
You probably don’t need to have a weekly 1:1 meeting with your intern—and in fact, it might undermine your report if you do. But you might choose to do a biweekly or monthly meeting, or just reach out every now and again to check in on your intern. You want to know how they’re doing, but also get some feedback from them about how your report is mentoring them.
Adjust Your Expectations
Don’t expect your report to keep producing their own development work at the same level as they take on these new tasks of managing an intern. Give them a lighter project load for the duration of the internship and make it clear that you consider their management and mentoring tasks to be an important use of their time at work.
You don’t want to burn out your report by expecting them to keep producing the same amount of work while also taking a new leadership role. And you also don’t want your intern to get the short end of the stick if their own manager is so overwhelmed with their own deadlines that they can’t make time for mentoring.
Make Yourself Accessible
Ensure your intern knows they can talk to you, especially if they have concerns or feedback about your report’s performance as a lead.
It might be helpful to meet personally with your intern during their first week and explicitly tell them the division of responsibilities between you as their people manager and your report as their mentor. You want to communicate that you trust your report to lead and that they’re the first person your intern should go to—but that you’re around and ready to talk if your intern needs anything or doesn’t feel comfortable going to your report.
For example, questions about development or process go to their manager—but you’re the right person to talk to about time off or uncomfortable comments from a coworker.
The goal here is that your intern feels fully supported by both of you and knows the difference between the roles of people manager and mentor and that you have open lines of communication with everyone on your team.
Summary
Managing an intern well takes time and energy and communication and empathy. But it’s incredibly fulfilling to mentor and coach an entry-level employee and see them thrive and succeed over the course of a few weeks.
There is so much joy in seeing an intern release the project they’ve been working on, in observing them navigate the entire development process and learn valuable skills along the way, and in seeing them feel empowered to take on the next step in their career.
I can’t speak for managers, but I imagine there’s a similar joy to be had in creating an opportunity for their reports to test out management on a small scale, to coach them on how to coach, to mentor them on how to mentor, and to watch them develop their leadership skills.
Investing time in your interns and in your reports can lead to new potential for your entire team. Give them the space to test out new skills and roles, and see how much they can learn in just a few months. You can build the team you’ll want to hire tomorrow by creating opportunities for them to grow today.
-
If your expectation in hiring an intern is “someone who can quickly ramp up, work largely independently with little oversight or instruction, and ship a full feature,” then you are really trying to hire a cheap contractor. Internships are opportunities for learning and building relationships with entry-level employees who may not have much experience but could have a lot of potential. And interns must be paid, and paid fairly. ↩
The best HTML elements you never knew existed, so you can improve your website's accessibility, mobile UX, and SEO while writing less code.
Learn how browsers use the HyperText Markup Language (HTML) and the Document Object Model (DOM) standards to turn text files into beautiful web sites.