How We Landed 3 Internships Each In College - and How You Can Too!

Practical Advice for Getting Internships in College

Author: Kevin James Tomescu, Niamh Gowran - Created: October 23, 2024

Updated: December 8, 2024

37 min read


Image

How We Landed 3 Internships Each In College

How You Can Too!

Hello, we're Kevin and Niamh, and we are final year computer science bachelor's students at Dublin City University, Ireland.

We both were very fortunate to have a 3 month internship in the summer of our first and second year of university, as well as a 6 month internship in our third year. Our most recent two internships were at Microsoft, where we we had amazing experiences and were lucky to work with some great teams.

In a 4 year bachelor's, this is essentially the maximum number of internships you can have (although lengths may vary depending on your course / college).

There's good news - you can do it too!

In this blog, we're going to share what worked for us and how you can apply it too.

A Brief Preface

Graduation coming up? Fear not! Most of this advice applies to fresh grads too.

Many students have to work during college in order to cover or assist with the cost of them doing so.

We believe it's very important to orient your professional work in college towards your chosen field.

So we're going to paraphrase Computer Science professor and best selling author, Cal Newport, to echo some advice: Don't get a normal job during college.

You might feel that you aren't the "internship" person. You might feel it's too late to get one. But guess what, nobody is, and it's never too late!

You can earn during college and gain a lot of valuable experience towards your profession at the same time.

1. Get on LinkedIn.

We aren't going to go into huge depth here about LinkedIn, but from both of our experiences, LinkedIn was absolutely essential and we believe it's currently a near mandatory tool for all students and professionals in STEM / business related fields.

Create an account, invest time on making a nice profile (again, we might cover this more another time), send a lot of connection requests to people in your college, previous schools, anywhere you've ever worked, friends, family, etc, and especially, send requests to people you'd like to know or hear from also.

LinkedIn is an awesome place to network, so we recommend not being shy with sending connection requests, always keeping it polite and professional. The more connections you have, the wider your network is.

LinkedIn isn't just for growing your network. The majority of tech roles are advertised here, including internships, and for many you can apply in just one click directly through LinkedIn. You can also easily setup alerts for when new roles are posted for things you are interested in, so, in short, it's awesome.

2. Get on GitHub & create public projects.

What is GitHub? "GitHub is a developer platform that allows developers to create, store, manage and share their code."

Again, invest time on creating a nice GitHub profile page. Feel free to search the web for how to do so. Hint: Start with a nicely edited profile README.md:

Image

GitHub not only acts as a great portfolio for the hard evidence of you and your work, but it's a place where you can easily collaborate with others on both open and closed sourced projects, gaining experience with working in a team.

We very quickly created public projects to showcase our skills. By the end of our first semester of first year college, we had our first deployed project ever. A Discord music bot written in Python. It was tiny, and the code was a mess, but, it worked and we learned a lot and had fun doing so.

For us, our GitHub profiles and projects were a great talking piece in all of our interviews and helped us stand out from the crowd, not only during interviews but also during the CV screening process. Showing your ability to take initiative and be a proactive learner is a great thing.

Note this point: projects are not just for your CV or for an interview! They are a real life, practical way to grow yourself and your abilities as an engineer in the modern world and learn to work effectively with others towards common goals. We would not be who we are today without them.

Keep an eye out for a more detailed blog on doing projects during college here later!

3. Build Your Own Work Experience.

Starting off, we had essentially no relevant work experience. While this isn't necessarily a deal breaker for internships, going out of your way to build your own can make a big difference from not only our experience but also from people who we've helped in the past.

How we did it:

1. College Societies

We joined a college society. They are a great way to meet new people, and work together towards a common goal. In our case, we joined the Enactus DCU society. Enactus is an entrepreneurial society with a focus on social enterprise.

Essentially, like a think tank where you try to pursue business ideas which aim at doing some sort of social or environmental good.

Societies like this are a brilliant way of getting hands on, practical real life experience, while trying to support good causes. However, you can do this with any society.

Take on leadership roles and try to revolutionize your society in some way with your work.

In our case, we built websites to represent the society, full stack applications to manage the administration of the society, such as a treasury app, and mobile applications for projects in the society.

We did so in a very collaborative and agile way, with many many team members and real stakeholders. We got amazing experience collaborating with others in a real life setting. If you try, you can find these opportunities in many college groups and societies.

Colleges typically offer paid work experience for older students, be it for tutoring / teaching assistants, or for research assistant work.

We were both laboratory tutors for an introduction to programming module, and it was a great opportunity to do relevant, paid work, while allowing us to guide others and refine our own skills.

Niamh had the fortunate experience of also being a paid research assistant for a research project, where she got to work in an Agile team, doing frontend development and data visualization.

In general, we would say these opportunities can come up publicly, but don't be afraid to seek them out either. Express your interest in these opportunities to professors.

These are a sure-fire way to gain some good paid experience early on in college.

3. Volunteering

We both volunteered for CoderDojo, which is a "a global, volunteer-led movement of free, open coding clubs (Dojos) for young people aged 7 to 17!"

This was where we got to teach introduction to programming using Python to a group of children. It was again, so much fun, a fantastic way to give back to the community and refine your skills at the same time.

CoderDojo is a huge organisation all around the globe and we really recommend trying to get involved, especially during college.

4. Freelance Work

We made and sold websites as freelance work, together. We approached small businesses in our area we interacted with, such as driving instructors, and asked if they would be interested in having their own website.

This is an amazing, amazing way to earn, gain experience not only with the technical problems involved with freelancing, but also the end to end business experience of working with customers and stakeholders to satisfy their needs and expectations.

Be honest and respectful to the people you're approaching. Outline that you are a student, you're still learning, but you're going to work with them to achieve an outcome that both parties are happy with. Set all expectations very early, including what a happy outcome looks like and the price you would be willing to work at to achieve that result.

4. Update Your CV

In our opinion, CV is mostly an art and not a science, but getting it wrong won't get you the chance you deserve. We aren't going to cover an exact CV template but instead give some general advice on what worked for us and what we found doesn't work as well.

There are great templates and lots of advice on this on YouTube! Go check them out.

Some basic rules of thumb that worked for us:

  1. The CV should be one page long.
  2. The CV should be only plain text (you can have bold) with no fancy graphics, formatting or colors.

The sections your CV might contain (in order):

  1. Education - list your grade, top modules, expected graduation year but overall keep it concise
  2. Experience
  3. Projects
  4. Languages, Technologies, Skills

Now that you've (hopefully) built some meaningful experience, put this down under your experience section.

The special thing you should always aim to do is to extract meaningful metrics from all of your experience, and cater it towards the job(s) you are applying to in any way that you can.

By extracting meaningful metrics, you can put your impact into the spotlight.

If you need to pad your experience section, you can put less relevant work experience down, and use this technique also.

Here's an example of extracting metrics from a normal job to show that you have qualities relevant to your internship / grad role -- try to do the same meaningful metric extraction for all of your experience!

Restaurant Supervisor

  • Trained and managed a team of 10+ employees, improving productivity by 15% through streamlined workflows.
  • Resolved 50+ customer complaints monthly with a 95% resolution rate, demonstrating problem-solving and communication skills.
  • Implemented inventory tracking processes, cutting food wastage by 12%.
  • Analyzed weekly sales trends, leading to an 8% increase in revenue per customer.

You can apply this same skill to your projects section as well.

5. Practice Makes Perfect!

The majority of interviews in software will consist of both technical and behavioral components, sometimes in the same interview, sometimes in separate rounds.

From our experience, a typical technical interview will still consist of at least a brief behavioral chat, even if it's not strictly mentioned.

Behavioral

This is the part of the interview where you talk about yourself, your experiences, your goals and potentially your knowledge of the company, their mission, goals, products.

This is really where the interviewer is trying to assess who you are and if your values align with the role / the company. Have a rehearsed elevator pitch (that means very concise) ready to go about you, your projects, academic achievements, hobbies, technical interests.

It would be very wise to do some research on the company, their values and what they do before this interview. Find an aspect of it that genuinely impresses and excites you. Be prepared to talk about this.

Some common questions we found were:

  • Tell me about a time you handled conflict in a project or group setting
  • Tell me about your experience in leadership roles in a project
  • Tell me about a project you were involved in that went well and why
  • Tell me about a project you were involved in that didn't go well, why, what would you do differently
  • Tell me about a project you've worked on outside of college

If you did any effort to "Build your own experience", this part should be a breeze because you will have a lot to talk about whereas many candidates may struggle, but here's some tips:

Try the S.T.A.R. method for giving concise and direct answers:

Image

  • Situation - Describe a situation for your answer.
  • Task - Describe what the goal / problem was, and the role you took in the situation.
  • Action - Talk about what actions you took. This should be the largest part.
  • Result - Talk about the results of what you did. Try to highlight quantifiable results.

MOST IMPORTANTLY - BE YOURSELF (on a good day)! Try to relax and be confident. These aren't life and death situations, there will be more opportunities for you if this one doesn't go to plan, remind yourself of that. Don't be afraid to crack a polite joke, or show a smile.

Technical

So first of all, from our experience, a technical interview will still commonly be a mix of behavioral and technical questions.

It might be a 25% behavioral and 75% technical mix (or some varying split of this always with majority technical), but be prepared to have behavioral style questions and conversation as well as solving technical problems.

We found these to be before you get into the technical problems, and also there tends to be a small bit afterward.

Technical questions typically revolve around data structures, algorithms, object oriented design, and less frequently from our experience for interns and fresh grad roles, are system design questions, where you are given a high level description of a system and its functional and non functional requirements.

The good news!

Websites like Leetcode give you tons of data structure and algorithm questions that commonly come up in interviews, categorized by difficulty and even by company, equipping you with an easy to use online code editor where you can run your solution for a problem, with analysis of the results. This can actually make practicing for the technical part of an interview fun because you can compete against others and essentially solve puzzles.

Practice these a lot in one programming language of your choice (most interviews allow you to do them in whatever language you choose). We recommend Python because you can get into solving the problem quickly and with little boilerplate code.

We aren't experts on this topic, but we recommend giving each problem a go by yourself first, aiming for brute force solution if possible. Then, try to optimize the solution. If you can't do either of these stages after genuinely trying, search for a tutorial online and try to learn from it.

For interns and fresh grad, typically you can expect questions of Easy ->Medium LeetCode difficulty, the majority being Easy.

Additionally, it is a very good idea to be familiar with OOP & object oriented design concepts. We recommend the book "Clean Architecture" by Robert C. Martin, it really is a must read and covers many object oriented design concepts in a fantastic way. After all, Uncle Bob coined the acronym "SOLID".

Tips:

Communication and sharing your thought process matter way way more than many people think. Anyone can copy paste an answer from ChatGPT or StackOverflow, but this is about seeing how you work, not necessarily the best solution.

Making mistakes during these short, high pressure interviews is natural and at this stage in your career, this is where the technical mistakes are tolerated the most, so if you make them, move on! This is about assessing your potential and how you might be to work with.

Simon Sinek is attributed with saying "You don't hire for skills, you hire for attitude. You can always teach skills" - not only do we agree, but from our experience applying to internships, this was true.

  1. Always explore & clarify the requirements of the problem and a desired solution, with the interviewer, before writing any code.
  2. Share your thought process out loud, constantly. Any assumptions you make, share them too.
  3. Work with the interviewer actively. Ask questions. Say when you are stuck. In many interviews, you can think of the interviewer as someone you are pair programming with.

Common Pipeline for Interviewing

This definitely varies from company to company. Some companies have no behavioral round, some have no technical round, some have no online assessment, but this is a fairly common structure you might see.

  1. Apply Online with CV

    • Your CV is reviewed (either manually or automatically).
    • If approved, proceed to the next step.
  2. Online Technical Assessment

    • You are invited to complete an online technical assessment.
    • If you pass, proceed to the next step.
  3. Behavioral Round

    • You are invited to a behavioral interview.
    • If you pass, proceed to the next step.
  4. Technical Round

    • This is often the final stage.
    • Typically includes 2-3 interviews back-to-back with different interviewers.

6. Apply, apply, apply..

At this point, you're nearly there. You've got some projects, you've built some experience, you've got the CV and you've done some prep. (Note: these are ongoing processes, but do a basic level of each before you get to here).

It's time to start hitting that apply button. Apply for everything you can find that suits you and your interests. Internships especially are also a time for exploring what areas you like most, so don't be afraid to test yourself and try something different.

Even if you are just in your first year of university you still need to apply, you are just as worthy as everyone else a few years ahead. If you are the right fit for the role the amount of time spent in college is irrelevant.

The more interview experience you get under your belt the better, even if you don't get an offer for that summer, you'll be a lot better off for the next year.

As we mentioned before platforms like LinkedIn and Indeed are a great place to find job postings. We recommend setting alerts for the type of roles and location you are interested in so you can receive notifications when a new posting is out.

A big tip here is being an early applicant. Most positions are filled on a rolling basis, so submit an application as soon as you see it.

It's tempting to say that you need to keep adding to your CV or gain more technical skills first, but CV's are never finished and you (should) never stop learning new skills so the final point will never come.

Apply with the CV and skills you have at the moment and maintain an effort to keep updating them as you grow.

In the future, we'll do a blog post detailing how you can use LinkedIn to find jobs efficiently.

Bonus Round!

Advice from A Big Tech Software Engineering Manager - Ievgen Bezrukavyi

Congratulations. You've made it this far so we've prepared a treat!

We got in touch with Ievgen Bezrukavyi, a seasoned software engineer and software engineering manager with over 15 years of experience, including at Big Tech.

Here are his thoughts and recommendations for aspiring interns and grads:

CV Tips:

"All grad and intern CVs are similar. It is important to demonstrate motivation to learn new things and work hard. Any hints that you did something close to the work involved in the role will help your future manager to find you."

Here are key ways to stand out:

  1. "Previous internships with an impact on a real project."
  2. "OSS (Open Source Software) contributions."
  3. "Pet projects on GitHub."
  4. "Freelance or contract jobs for small companies."
  5. "Volunteering for charities as a coder."

Interview Preparation:

  1. "Polish coding skills in at least one language."
  2. "Make sure that you can solve LeetCode Easy problems and at least make some progress with LeetCode Medium for a grad interview."
  3. "Familiarize yourself with system design interview vocabulary and structure."
  4. "Learn about the STAR behavioral interview method and prepare stories from your past experience during internships or studies."
  5. "Don't be silent, overcommunicate, be curious, and ask questions about your future job."

General Advice:

  • "All interviews are (somewhat) random, and there is always an element of luck. Apply for multiple roles and companies to maximize your chances."
  • "In case of failure, don't hesitate to apply again in a few weeks for the same company after extra preparation."

Ievgen's advice underscores what we've been saying throughout this post. It's important to show motivation, proactively learning and persistence.

As he very wisely noted, you don't need to be perfect, you need to "demonstrate motivation to learn new things and work hard".

Conclusion

Before we round this out, we want to just highlight some things we were surprised were not as important as we had thought:

  1. You don't need perfect grades.

Don't get it twisted. We aren't telling you to slack off in college. Push yourself to the best of your ability and hold yourself to high standards, however, that doesn't mean you need the highest possible grades to get a great internship or a grad role.

  1. You don't need to be completely proficient in the languages or technologies in the job description.

Especially for internships and grads. These are times for learning, and the majority of employers accept that fully and allow you room to do so. You're trying to show potential employers your potential - not your raw TypeScript talent. It doesn't hurt, it's just not a blocking requirement in our opinion.

  1. Not getting the perfect answer to a technical problem doesn't mean you failed.

You just have to make a well reasoned attempt, explain your reasoning and communicate & collaborate effectively with the interviewer. (Note: there are some cases where interviewers expect perfect answers, but in our experience, this was more rare).

We wish you all the best in securing a great internship or graduate role!

Connect with us on LinkedIn and feel free to reach out if you have any questions. We'll do our best to get back to you!

Authors:

Author: Kevin James Tomescu, Niamh Gowran - Created: October 23, 2024

Updated: December 8, 2024