Skip to content

Planning Your Internship Project

After you've gotten settled in during your first week, you'll likely be assigned a project to work on for the duration of your internship. This is where the real fun begins!

Principles

No matter where you intern, these principles will likely apply. If you take nothing else away, remember that the key to successful project planning is regular communication and frequent feedback. Don't disappear for weeks working on your own - stay connected with your team and be open to adjusting your approach as you learn more. Your internship project isn't just about the final product - it's about the learning process along the way.

Communication is key

One of the biggest mistakes you can make is not communicating enough. You might worry about bothering people or looking incompetent, but regular communication will actually make you look more professional.

At my first internship, I went heads-down for two days trying to prepare a design doc. When I finally showed my work to my manager, they immediately pointed out that I had misunderstood some of the requirements, particularly that I'd be starting from scratch, as opposed to refactoring an existing codebase. I wasted two days of work that could have been avoided with a quick check-in.

Everyone would much rather spend time helping you get on the right track early than have you waste days going in the wrong direction. Similarly, even if you could read all the company documentation and existing code to understand how to design your project, it'll take a lot longer than just asking someone who already knows.

At my second internship, my mentor and I spent ~30 minutes at the whiteboards discussing my project and potential approaches. This probably saved me a week of work, and I was immediately on the right track.

Seek alignment early and often

Make sure you understand what success looks like for your project. Different stakeholders might have different definitions of success, so it's important to get everyone aligned.

  • Your manager might care about shipping on time
  • Users might care about specific features more than others
  • Other engineers might care about code quality, maintainability, operational excellence, etc.
  • You might care about learning and demonstrating your skills, as well as the feasibility of your project

Try to understand all of these perspectives and take them into consideration when planning your project. This might require some meetings to clarify expectations and get feedback, during which you'll absolutely want to take notes.

My design docs always include an appendix where I take such notes.

Start with the big picture

Before getting into the details, make sure you understand: - Why this project matters to the company - Who will use what you're building - How it fits into the broader system or product - What constraints or requirements are non-negotiable - What the timeline and deliverables are - What has already been done or considered

You don't have a chance of getting the implementation right if you don't understand the problem you're solving. This is especially true if you're working on a new feature or product with non-technical stakeholders.

Break it down

Big projects are intimidating. Break yours down into smaller, manageable chunks. This helps you:

  • Make steady and demonstrable progress
  • Adjust your plan as you learn more
  • Get feedback on smaller pieces

Each chunk should be small enough that you can complete it in a few days at most. This is likely difficult to estimate on your own, so ask your mentor for help with the estimations!

Additionally, try to identify dependencies between tasks, as well as key design decisions that impact multiple tasks. Ideally, these tasks will be decoupled enough that you can work on them in parallel, and make minimal changes if a single task needs to change. This becomes a very important factor in your development velocity later on, since it's common to be blocked on a single task for a long time while waiting for feedback or approval.

Document your decisions

Keep track of:

  • What you decided and why
    • It can be very easy to forget these things and find yourself totally lost
    • e.g. important assumptions you're making, or sources for information
  • Alternatives you considered
    • This helps others understand your thought process, and can save you needing to re-explain your decisions later
    • e.g. a different approach, and why it wasn't chosen
  • Open questions or concerns
    • You can use this to track things you need to follow up on later, but you should make it a priority to address these as soon as possible
    • e.g. a dependency on another team, or a technical challenge you need to research

Be realistic about scope

Internships are short, and there's always a learning curve. Be ambitious but realistic about what you can accomplish. It's often better to deliver something small and complete than to have a half-finished ambitious project, but you'll want to have conversations with your mentor and manager ASAP if you feel like you're going to miss your deadlines.