Some CS Majors have reached out to me and expressed concern about not having a summer internship. Others have complained that their internships don’t give them meaningful projects, and they spend most of their day idle. They are unsure of how to utilize their free time. Hopefully my suggestions below provide some direction and structure.
Who This Article Is For
- Incoming Sophomores, Juniors, and Seniors that don’t have a summer internship.
- Incoming Sophomores, Juniors, and Seniors that have a summer internship, but feel like they aren’t getting enough work or have the energy + passion to do more. (I’ve been in this situation before…)
- Incoming Freshman that want to learn more about what it takes to land summer internships and full-time jobs.
Who This Is Not For
- Incoming Sophomores, Juniors, and Seniors that have a busy and fulfilling summer internship.
This group should focus on performing well and receiving a return offer for another summer internship or a full-time position.
Having a return offer will dramatically improve your mental health during the Fall Semester recruiting season. You won’t feel as rushed to nail down an internship/full-time offer ASAP. You can use the deadline on your return offer to expedite the interview process at other companies. You will also be more confident in those interviews because you already have a back-up option.
If your company is giving you a short window to accept/decline the offer, you should check whether your university has guidelines for the minimum time that can be given to students to accept/decline an offer. (For example, UC Berkeley makes all affiliated employers give at least 3 weeks.)
Why Personal Projects?
As I mentioned in my Lessons Learned from the SWE Internship Grind article:
Projects should showcase your passion for technology and your self-starting, entrepreneurial spirit. Recruiters want to see that your passion for tech compels you to take on challenging projects outside of the classroom.
Personal projects are the unfair advantage that CS Majors have over most other majors. Undergraduate students interested in business-side roles mostly have to rely on the validation given by leadership positions in on-campus clubs or real internship experience to show recruiters that they are capable of a corporate environment. In contrast, CS Majors can create websites and apps from the comfort of their homes to show recruiters that they are capable of fitting in with a corporate software team.
What Should I Create?
Try to do a personal project on a topic or hobby that you have genuine passion for. This will keep you motivated to finish the project.
Pursue any technology or language that piques your interest. At the college level, you really just need expertise in an object-oriented language like Java or C++ to perform well in a Software Engineering job. The introductory CS classes in college usually cover Java or C++ anyways. Personal projects are your opportunity to truly learn what you want to learn.
If you are unsure of what constitutes a good personal project, I have some examples below.
Example 1 — Python Data Analysis Project
This is one of the most structured, straight-forward personal projects you can do.
First, you need to learn basic Python syntax.
- FreeCodeCamp has a good video-based tutorial. (You can stop right before the Regular Expressions section.)
- If you want a self-paced coding-based tutorial, try out my self-serve Python curriculum. (You can stop at the Classes section of lesson4.py.)
Next, you need to find a dataset that resonates with you.
- Browse Kaggle for pre-cleaned datasets.
- Make your own dataset by scraping data from a website. For example, you can use scraping libraries like BeautifulSoup to scrape basketball stats from an NBA data website.
- Fetch data from an existing API. For example, FinnHub provides well-formatted financial stocks data.
Next, you need to formulate some questions about your dataset.
- What are your gut-feeling hunches about the dataset?
- What visualizations (histograms, boxplots, scatterplots, etc) would allow you to come up with more questions?
Only you will know the right questions to ask. Your domain knowledge on the project topic will help you create new hypotheses. (This is why it helps to have passion for the project.)
Finally, you will need to figure out which statistical/data-science methods will help you answer your questions.
- Linear Regression and Logistic Regression are simple methods to start with.
- Tools that would help execute Regression in Python would be NumPy, Pandas, and sklearn.
If you are new to creating personal projects, this may feel overwhelming. That’s how all worthwhile projects feel. The whole point of these projects is to learn by doing. We rarely learn by doing in the American education system, so this will feel uncomfortable at first.
Here are some more resources to help you get ramped up with the skills you need to complete a project like this:
- Use Google CoLab to do all your coding so that you can avoid the hassle of setting up a local coding environment that has access to all the important Python Data Science Libraries.
- NumPy & Pandas are covered in Lesson 5 of my self-serve Python Curriculum. FreeCodeCamp also has a great Python Data Analysis course that covers these Libraries.
- Linear Regression is covered in Lesson 6 of my self-serve Python Curriculum.
- Web Scraping and Data Visualization are covered in Lesson 7 of my self-serve Python curriculum.
- Project 3 in my self-serve Python curriculum provides even more structure and guidance for this type of project.
- Google & YouTube are your best friend! You can do high-level queries like “Logistic Regression in Python” to get an end-to-end tutorial of this process. You can do low-level queries like “python import a csv” to get help with a small coding issue.
Here are some examples of this type of project:
Example 2 — Professional Portfolio Website
Create and host a website that showcases all of your professional achievements. Mine is adithyasolai.com.
You really only need to know HTML & CSS to make a simple, clean website. I recommend FreeCodeCamp’s hands-on, coding-oriented HTML & CSS course.
You will also need to host your website. You can host for free on GitHub Pages.
If you really want a challenge, you can try creating web components that you know and love — signup/login pages & user accounts, seeing data about your account after you login, processing payments, etc.
Every website seems to have those web components, so we take them for granted. It takes lots of learning to actually build those features.
You will need a database underpinning this more complex website. I would recommend Google’s Firebase Realtime Database because it is free and easy to use because it is non-relational.
I’m still exploring and learning Front-End Development myself. I’m still a novice. I’m just sharing what I know. Here is my in-progress front-end project: Apex Pies.
Create Your Own!
The examples above are just suggestions, and they are all very common amongst CS Majors. Do whatever interests you! You are more likely to stand out that way.
If you already have a robust portfolio of personal projects, then you are likely to pass the resume screen when applying to jobs in the Fall Semester. You will likely get many coding challenges, phone interviews, and on-site interviews. For these students, I believe LeetCode prep is the most important.
Leetcode.com provides coding practice problems that best resemble what is asked in technical interviews for Software Engineering roles. I’ve written about my tips for LeetCode prep in my Lessons Learned from the SWE Internship Grind article.
Try to do 45 min per day at the very least. Some days, you will get really invested with a problem, and 2 hours will go by quickly.
Towards the end of the summer, start to update your resume. Add all of your accomplishments from your current summer internship if you had one. Add details about all the personal projects you completed over the summer.
Check out my Golden Resume Rules for CS Majors article for more tips.
Networking is best done at the start of the summer. Don’t wait until right before the Fall Semester recruiting season.
Due to recruiter expectations for Software Engineer hires, networking is probably the least important out of all of the suggestions in this article.
However, I’m still a believer in networking. Check out my Golden Networking Rules for CS Majors article for my tips.
Thank you for reading! I hope this helps you make the most out of your summer!
E-mail me at firstname.lastname@example.org with any questions/comments!