Making The Most of Your Software Developer Internship

A guide to excelling in software developer internships and laying the groundwork for a successful tech career


laptop

Starting your first internship or job can be both exciting and overwhelming, especially when you’re stepping into an unfamiliar environment with little idea of what to expect.

Having completed several internships myself, I’ve experienced firsthand the challenges of figuring things out on the go—missing opportunities, making mistakes, and learning lessons the hard way.

In this guide, I’ll share everything I wish I had known before starting my first internship. From understanding your role within a team to advocating for meaningful work.


Internships are Extended Interviews

Before laying out my advice for making the most of internships, it’s important to first understand the true purpose of an internship.

At its core, an internship is an extended interview.

For companies, it’s essentially a probation period to evaluate whether you have the interpersonal traits needed to gel well with their team and the technical skills to operate at the level of a full-time junior developer.

But it’s a two-way street. Just as the company is evaluating you, this is your chance to evaluate them. Are there signs that the company prioritizes career growth for junior developers? Are they giving interns and junior developers meaningful work? Are you surrounded by people you can look up to, learn from, and see yourself working with in the long term?

Remember, an internship is more than just getting experience. It’s a chance to test-drve a workplace and team. Use this time to determine if it’s the kind of environment where you’d want to invest your energy and grow into a full-time role.


Find A Mentor / Buddy

Whether it’s a developer on your team or your engineering manager, when you join a workplace you should ideally be assigned a mentor / buddy.

This person should help you onboard onto your team’s project, meaning they should help you:

  • Find good first tasks.
  • Help you if you need to pair up on environment setup.
  • Give you an overview of the codebase.

Not every workplace will assign you a mentor. I have had internships where I’ve not had an assigned mentor and “dealing with onboarding the intern” has been left as a “tragedy of the commons” exercise amongst the development team and a “how much initiative are you willing to take” test for the intern.

Situations like this are not only unideal for you, but a sign that your workplace is not making the most of the opportunity of having interns.

Interns are a great way to give full-time employees the opportunity to hone mentorship and leadership skills. They can later use having you as their assigned intern as leverage for promotions to management.

If you feel that by the third week of your internship that you’re receiving a lack of support, you should discuss it with your manager.


Understand Your Team

Succeeding in your internship starts with understanding your team and how it operates. Asking the right questions early on will give you clarity about your role and how your work fits into the bigger picture. Here are some key questions to find answers to:

What is the team’s goal?: What is your team working toward, and how does it contribute to the company’s broader objectives?

What projects are currently in progress?: What are the team’s priorities, and what are the timelines for these projects?

What does the team own?: Which systems, features, or responsibilities fall under your team’s domain?

Who are the key stakeholders?: Who relies on your team’s work or has input into your projects?

Which teams does ours collaborate with?: What other teams does your team regularly work with, and why?

Your manager or mentor can help you answer these questions. Take notes and revisit them as you gain more context throughout your internship.


Create 1:1s With Each Team Member

Once you’ve completed the initial onboarding process and have begun embedding yourself within your team, it’s a great idea to schedule one-on-one (1:1) meetings with each team member and stakeholder you’ll be working closely with.

This is a great way to introduce yourself and get a better idea of what everyone on your team actually does and who to direct questions to on the team. Maybe one team member wrote a specific module or subsystem of the codebase while another is the resident frontend expert.

Most importantly, properly introducing yourself will make it easier to reach out to them when you will inevitable have a question or have to ask for a favor.

The longer you delay, the harder it can feel to introduce youself properly. It’s easy to fall into the mindset that the “window has passed,” but early 1:1s are crucial for building strong connections and gaining the context you need to work effectively.


There Are Bad Questions

When you join a team, you might hear the phrase, “there are no bad questions.” While the intent behind this sentiment is to encourage curiosity, it’s not entirely accurate. The way you ask questions can leave a lasting impression, and asking poorly thought-out or vague questions can reflect negatively on you.

Good questions demonstrate that you’ve put effort into understanding the problem before seeking help. They show that you’re thoughtful, resourceful, and respectful of others’ time.

For example, instead of asking, “Why isn’t this working?” try asking, “I’m getting this specific error when I run my code, and here’s what I’ve tried to resolve so far. Could you help me understand what I might be missing?”

Before asking a question, try…

  • Searching for the issue within your company’s documentation platform
  • Searching for the issue within your company’s message app (Slack, MS Teams)

By showing that you’ve taken the initiative to research, test, or troubleshoot, you signal to your team that you’re proactive and committed to learning.

Consistently asking questions without context or preparation suggests a lack of independence or effort, which can erode trust over time.


Start With Good First Issues & Pairing

Starting in a new codebase can feel overwhelming, but there are ways to ease the transition and make a strong impression on your team.

When starting out in a new codebase, I recommend asking to pair program with one of the full-time developers on your team while working on “good first issue” tickets when they are busy.

Pair Programming

Pair programming involves collaborating with a teammate to work through a piece of code together.

Ask to pair program with one of the full-time developers on your team. This is a great way to get an applied understanding of your team’s immediate work as opposed to reading through documentation or getting an oral overview of the codebase.

Good First Issues

“Good first issues” are curated tasks designed to be approachable for new contributors. These tickets are typically non-urgent, low-risk, and great opportunities to get familiar with the codebase while contributing something meaningful.

Once your development environment is set up, proactively ask your mentor or engineering manager for good first issues to work on. Emphasize that you’re looking for tasks that won’t block your team or have tight deadlines, as these are ideal for ramping up.

Not every team has a list of curated tasks ready for new members. If that’s the case, bring up the idea early. By asking for good first issues, you encourage your manager or mentor to prepare tasks that will help you contribute sooner.


Advocate for Breadth of Work

If you’re new to a codebase, it’s easy to get pigeonholed into working on similar tasks or focusing on a specific area, especially as an intern who hasn’t yet built trust with your team members.

During most software engineering internships, you’ll likely have time to complete only a handful of tasks, making it crucial to advocate for opportunities that allow you to work on diverse tasks and interact with different technologies across your team’s system.

For example, if your team is building an app with both frontend and backend components, try not to limit yourself to just backend work.

Throughout your internship, think about how your experiences will shape your resume. Are there skills or technologies that would make you more employable in the future if you gained experience with them now?

Also consider what you’ve done in previous internships. If you already have experience with a given technology or area of the stack, make sure you’re learning something different during your current internship.

If your workplace doesn’t naturally offer opportunities to explore different areas, consider raising this with your manager or mentor during a 1:1 meeting.


Take Ownership and Clarify Details Early

One of the most common pitfalls for interns, junior developers—and even seasoned programmers—is diving into implementation before fully understanding the requirements or assumptions behind a task. Instead, you should take ownership and work to fully understand a ticket’s scope and ensure that all requirements are met when it’s delivered.

You do not want to tell your team your ticket is almost done, only for your entire approach to be questioned once you submit your first draft of the code for review. You also don’t want to mark a ticket complete while missing a part of an acceptance critiria and potentially derail future dependant tickets in your team’s backlog.

If a ticket has ambigious requirements, hop in a call with the developer, designer, or product manager who wrote the ticket to clarify when you have a question.

For design or product driven tasks, share screenshots and video updates to confirm you’re meeting their vision before completing the task. This iterative approach avoids spending hours building something that doesn’t meet their needs.

By seeking clarification early and staying aligned with your team, you’ll build trust with your colleagues and have more time to take on a greater breadth of tickets.


Pair on Tickets Outside Your Depth

As an intern, you’re going to see tickets that you just don’t feel you have the experience to take on.

It’s tempting to avoid these tickets to avoid slowing down the team or making mistakes. However, these tickets often provide the most valuable learning opportunities and can accelerate your growth as a developer.

Instead of shying away, consider taking a proactive approach: while continuing to work on tickets within your comfort zone, ask your teammates if it’s possible to pair program on the more challenging tickets.

Especially for tickets like research tasks or spikes, it’s great to pair with someone so you can observe how they break down ambiguous problems, structure their research, and prioritize key insights.


Don’t Have Too Many Tickets in Flight

Aim to keep no more than two tickets in progress at a time.

The final 5–10% of a ticket can often be the most challenging, requiring extra effort to address edge cases, resolve loose ends, or finalize documentation. Additionally, once a ticket reaches the code review stage, it may go through several iterations of feedback, potentially adding days of additional work.

Start by focusing on one ticket. Only take on a second if:

  • Your first ticket has reached the code review stage.
  • Your current ticket is blocked and will likely remain so for more than a few days.

Some valid reasons for taking on a second ticket might include waiting for:

  • Alignment from another team on the ticket’s direction.
  • Input or clarification from stakeholders.

If you know a ticket is going to be blocked for an extended period (e.g., over a week) and it’s unclear when it will be unblocked, let your manager know and ask to be unassigned and explain the situation and the uncertainty around resolution timelines.


Participate in Code Reviews

As an intern, you might not feel comfortable or ready to contribute to code reviews. It’s natural to worry about saying the wrong thing or not understanding enough to provide valuable feedback. But remember, no one expects you to be an expert as a newcomer. Code reviews are not just about spotting issues—they’re also an excellent learning opportunity for you.

A great way to get involved in code reviews is simply by asking thoughtful questions. If you’re unsure about why something was implemented a certain way, ask for clarification.

If you’re struggling to think of questions, start small. Look for areas in the code where you could use more context, such as:

  • A function name or variable that seems unclear.
  • A logic flow that feels complex or unfamiliar.
  • A new pattern you don’t fully understand.

At the very least, just read code reviews. Pay attention to how other team members provide feedback during reviews. Notice the types of comments they leave and over time, you’ll gain confidence and start contributing more meaningfully.


Every Meeting Is A Presentation

Come to every meeting prepared.

Treat every meeting you need to speak in like a presentation.

If you’re expected to speak—even for a brief update—take the time to organize your thoughts beforehand. Be concise, clear, and confident in your delivery.

If you’re organizing a meeting—even a brief one—make sure you’ve created an agenda with clearly identified questions or outcomes you need from the meeting.

Meetings aren’t just about exchanging information; they’re moments to leave a positive impression, establish yourself as a valuable team member, and build trust with your team.


Keep An Impact Log

An impact log is a record of your contributions and accomplishments throughout your career.

After a long time, you’re going to inevitably forget what you worked on, which makes it harder to recall your achievements when updating your resume, writing a performance review, or preparing for interviews. By keeping an impact log, you create a detailed account of your work that you can refer back to whenever needed.

Conclusion

Making the most of your software developer internship requires more than just completing assigned tasks—it’s about taking initiative, building relationships, and continuously learning. By asking thoughtful questions, seeking out diverse opportunities, and engaging with your team, you can turn your internship into a valuable stepping stone toward a successful tech career. Remember, an internship isn’t just about proving yourself to a company; it’s also about discovering what you want from your career and setting the foundation for your future growth.



Want advice or just interested in chatting? Feel free to book a chat with me here to discuss career stuff, jobs searching, resumes, etc.