So you didn’t land a summer software engineering internship…Now what?

Two things not to do

  1. First of all, don’t panic. Internships are a helpful way to prepare for a career in computing, but they are certainly not the only way.
  2. Second, don’t give up on your career goals. Each internship opening gets many many applicants — sometimes over 100 applicants trying to get one job. I hired some interns when I worked at IBM, and there is a lot of randomness in the process.

A few ways to spend your time constructively

  1. Corporate experience: Interns get acquainted with the corporation that is hosting them for the summer. This increases the chances that the intern will take a job with the corporation after graduation.
  2. Engineering experience: Interns get engineering experience with a real project working with a larger team towards a business objective. This lets them apply what they have learned in the classroom, and understand topics that professors cannot teach you.
  1. Contribute to an existing open-source project. There are many open-source software projects that would love to have some additional support. There are many ways to contribute to an open-source projects — writing documentation, adding test suites, adding or improving their continuous integration pipeline, fixing defects, and adding new features. These are exactly the same activities that people do at software engineering internships, with the added benefit that you can show what you did to a potential employer (because it’s open source). You might think, “Hmm, but I don’t know how to get started”. If you are serious about contributing to the project, then one of the maintainers will be happy to help familiarize you with the codebase, and they may be willing to meet with you on a weekly or biweekly basis. Get started by reading the code from the user entry points (e.g. a user-facing API or user interface), chime in with small suggestions on pull request discussions, and look for a small defect to fix (often they are tagged with “good first bug” or similar). To get the full experience, you will want to set yourself a schedule, and spend 10–40 hours a week on it.
  2. Learn to do something new. Complete an online certificate. Compete in Kaggle competitions. Create a Linux kernel module. Write an LLVM pass. Write an application that uses Boost. Implement several chapters’ worth of algorithms from Cormen/Leiserson/Rivest/Stein, in multiple programming languages. Use the Cloud Education credits from AWS and Google Cloud: build the same application using a monolithic and a microservice architecture; support a REST API and a GraphQL API routed to the same backend.
  3. Help others. Try to get the highest reputation you can on Stack Overflow. Pick a few popular topics, study them, build relevant software, and then start sharing your expertise. You’ll be amazed at how much this helps you learn to communicate effectively with others, and again, you’ll have a neat experience to share in your next interview.
  4. Engineer, don’t hack. For any software that you develop this summer, follow an engineering process. Work in iterations. Define your requirements. Create a design on paper and then in a UML tool. Prototype in Python. Track changes with Git. Keep your code in GitHub, using issues, pull requests, and a CI. Follow test-driven development. Use standard frameworks like React or Electron. Document your code. If you create a substantial application that demonstrates engineering skill, guess what — you’ve got a great project to talk about in your next interview.

Closing thoughts

--

--

--

I am a professor in ECE@Purdue. I hold a PhD in computer science from Virginia Tech. I blog about my research findings and share tips for engineering students.

Love podcasts or audiobooks? Learn on the go with our new app.

Recommended from Medium

Ingress Controller and Kubernetes Using Minikube — a Tiny Demonstration

Microsoft Au Daemon Mac Mojave

Determining the duration of powerup effects on Player

10 useful commands when debugging network issues in Linux

Don’t Fret With Git Rebase

How Kotlin can cover for the shortcomings of Java? — A Developer’s Outlook

Android App Development with Kotlin — Systango Blog

The Ultimate Cheat Sheet On IBM i Application Modernization

Can you guarantee that a function has no bugs?

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store
James Davis

James Davis

I am a professor in ECE@Purdue. I hold a PhD in computer science from Virginia Tech. I blog about my research findings and share tips for engineering students.

More from Medium

How to Become a Programmer

LeetCode vs HackerRank

Problem Solving Techniques Every Developer Should Know

The missing piece to the puzzle

What do Software Developers actually do?