How to prepare internship for software engineers

Planning your engineering internship program

Mirek Stanek
7 min readMar 9, 2023

--

Even though we face massive layoffs in Tech Industry in 2023, the talent shortage is not going anywhere. and may reach four mln unfilled positions in 2030, according to KornFerry (check their Global Talent Crunch report)

For engineering leaders, it means that competing for skilled professionals will only heat up in the coming years.

One of the great ideas for tech talent supply is to run cyclical internship programs. In this article, I want to share with you my experiences and practical hints on how to run an engineering internship program.

Cost of internship

An engineering internship is quite a significant investment. The program will make sense only if you put in enough energy, so it is not about getting a cheap workforce.

This is what you will have to do:

  • Software engineers will need to share their knowledge and support interns with their tasks. They’ll also spend some of their time on hiring activities.
  • The HR team will need to help you find the right interns and then handle the legal process.
  • You will invest your time — in building the process, doing employer branding, hiring interns, and mentoring them during the journey.

The usual internship program takes 2–3 months (+ another three months of planning). So this is quite a significant investment. So first, think what’s your expected return from it.

Advantages of internship

Here are some possible outcomes from the internship programs. Most of them come from my experience leading multiple programs over a few years.

  • Grow your future employees — often, this is the most desired outcome from internships. For 2–3 months, you train people to become professional software engineers who will stay with you after a program ends. Even though they are juniors, they’ll have domain knowledge, understand the product better and know the organization’s culture. They are turbo-boosted juniors, ready to continue their professional journey.
  • Stretch your current team — this is underrated but also has significant value. Engineers will need to learn how to transfer their knowledge to less skilled peers. Sometimes they’ll need to think twice about why some decisions were made this or that way. You will have a chance to do shadowing sessions during interviews and share feedback with your teammates so they are better prepared for interviews in the future.
  • Stretch your tech stack — interns will test your tech stack and SDLC processes. You will see how easily a low-skilled person can contribute to a project. Or how easy it is to break things — will SDLC catch mistakes and bugs before they reach production? An internship is also a great opportunity to decrease the entry level of your project. If your software engineers need to explain tech complexity repeatedly, they’ll soon simplify it as much as possible. By the way, this was one of my internship goals — to make it possible to deliver the first change to production within seven days.
  • Become a better leader — the internship is also an interesting experience for you as an engineering leader. Leading people at the beginning of their careers is challenging. Very often, these people need to learn more than just technical skills. They need to know how to work with the team, communicate effectively, what’s the difference between delivering value vs. delivering code, and how to acknowledge and work with feedback.

Checklists and templates for planning engineering internship program

If you are looking for practical materials which will help you to plan and execute the internship program — planning checklists, 1:1s, and goals templates, comms templates, take a look at Practical Engineering Management — Engineering Internship Materials.

How to prepare for an internship program

I suggest kickstarting the internship 3–6 months before the first day at work. You will need to coordinate this process with your HR team.

Here are the things you need to take care of:

  • Write job specs with company information, expectations, and what your interns will get from this program.
  • Set salary budget. Even though you hire people with low experience, those will be your employees who need to be paid fairly for their work. Ensure that the budget for an internship is secured.
  • Plan employer branding and the places to promote your internship program. Contact local universities, advertise it at conferences or meetups, and use social media. Here you can check an example blog post I wrote a few years ago: https://medium.com/azimolabs/internship-at-azimolabs-5972c317545c.
  • Set up an effective hiring process. You must review CVs, make phone screenings, check candidates’ skills, etc. In my experience, each internship process brought about 100 candidates. You cannot talk to each of them, so you need an effective (you find the right people) and efficient process (it will take only a few weeks of work for you and your teammates).
  • Define comms. With a few dozen candidates, a few interview stages, and things happening for an extended time (a few weeks), you need to communicate efficiently. I had a few templates, like an invitation for an interview, rejection messages, invitations for the next stage, etc. Ideally, each letter should come with the reasoning for the decision, feedback, etc. Make sure you treat every single candidate with dignity.

Timing

I recommend planning the internship process in a way, so the candidates know they will join the company a few weeks ahead of time.

The timing which worked well for me was:

  • The internship starts in July,
  • so candidates got the final decision at the beginning of June,
  • so the hiring process takes place in May,
  • so internship promotion starts in April,
  • so internship planning starts in March.

Internship, how to start

A few weeks before the internship, you need to plan in detail what these three months will look like.

This is the moment when you need to:

  • Decide who will be a peer partner for interns. If you are a hands-on leader working close to the code, it can be you. But overall, I recommend picking a software engineer. It’ll benefit an intern who will be much closer to day-to-day work and an engineer who will need to learn how to become a great mentor.
  • Define goals for the entire internship program. They should be aligned with your career ladder to open the path for future growth as a junior and later regular engineer. Goals for interns should be very direct. I usually came up with something like x tasks closed (mix of bug fixes, feature implementations, technical/maintenance tasks), contribution to process (e.g., grooming, code review), and understanding SDLC process. I also expected that each engineer would write a blog post that sums up their work (here are a few examples: link1 link2 link3 link4)
  • Decide on what your mentoring will look like. While interns have their peers, they also need to have their leader who will help them with their goals, discuss feedback, and support them with their first steps. You need to set up communication channels and regular 1:1s (sometimes even a few per week).
  • Prepare exact tasks — yes, next to goals, you need to have real tickets, ideally for at least two weeks, so interns know what to do. Treat these tasks as an interactive tutorial, so while interns progress with their work, they learn about the company, product, processes etc.
  • Prepare onboarding materials and support. How to set up their workstation, run the project, access required tools, get information about a product, etc. You need to find a balance between giving them basic knowledge and tools and not overloading them with too many materials.

With all of these materials, you are ready to go.

Be the one who welcomes interns on their first day, show them the office if this is on-site work, introduce them to the team, set up your 1:1s, and let them start working.

Internship, what’s next

Before the internship ends, you must decide whether you want to continue your cooperation or let them go. In both cases, prepare honest feedback and share it with them face-to-face.

If you decide to continue, this is the moment when you have Junior Software Engineer on board. It means there are new expectations for this person, which are connected to new compensation. Make sure this person is fairly paid according to the organization’s standards.

Sometimes the intern would like to stay with you, but they need to return to university. While you need to assess the situation, I tried to be flexible and continue part-time cooperation until they graduated. This kind of flexibility is another challenge for you and the team, but very often, it’s worth it.

Working with Junior Software Engineer is a new story, so I recommend checking some of my articles for inspiration about what you should expect from software engineers:

Let’s stay in touch

I hope this article is valuable to you. My mission is to help engineering leaders make great ideas happen.

Explore more content on practicalengineering.management.

You will find there practical strategies for effective engineering leadership. Join the community of impactful leaders to bridge the gap between inspiration and implementation with actionable steps that empower your team, boost trust, and drive real-world results.

--

--

I empower leaders through practice 🛠️💡✨. Site Leader and Director of Engineering at Papaya Global. Ex-Head of Engineering at Azimo.