Staying Ahead of the Curve as a Computer Science Student

In an era where the tech job market is fiercely competitive, navigating the path to securing coveted Software Engineering (SWE) internships can feel like navigating a maze of challenges. The landscape is evolving rapidly, with online assessments becoming increasingly rigorous and the industry more saturated than ever before. As someone who has experienced the intensity of this environment firsthand, I understand the how this journey can be intimidating.
My own journey began with unique hurdles – as an international student on an H4 visa status, I faced restrictions that initially limited my ability to gain work experience in the United States. However, I didn't give up and started my work experience with an unpaid apprenticeship program with Google called Software Product Sprint. This experience served as a crucial bridge between my aspirations and the tech industry, providing me with invaluable insights/mentorship into coding and coding interviews. The next summer, I secured a last-minute internship with Pearson VUE, leveraging connections forged through networking and friendships. This serendipitous experience was my first step into the industry and became a huge learning opportunity. Now, as I prepare for an internship with Oracle for this upcoming summer, I am reflecting on the importance of standing out amidst a sea of ambitious and equally-deserving peers. In this blog article, I try to break down the steps that I took as a CS student to make myself stand out and receive interviews with industry giants such as LinkedIn, Oracle, Amazon, NVIDIA, and Adobe.
Personal Skill Development
Personal development is something you can be working on ALL the time, or rather you should be working on all the time. Here's exactly what you need to figure out before starting:
- How confident are you in your chosen major? (I am assuming that you have chosen CS)
- If you are confident, what are some of the subfields that interest you the most? (research subfields such as ML/AI, Web Dev, Robotics/Computer Vision, AR/VR, etc. that might interest you)
- If you are not, what do you want to pair with CS? (CS can be paired up with almost any industry such as healthcare, business, etc.)
- What is the tech-stack for beginners for your subfield? Try to make a roadmap of languages/libraries/technologies you want to learn.
- Outline some personal projects you can do to learn those technologies.
- Map projects to the tech-stack you're interested in.
- Ensure you have ample online resources to assist you with your initial few personal projects. It is okay if you need to be spoon-fed initially or even if you create something that has already been done. Learning is all that matters.
Once you've got that sorted, diving into personal projects becomes significantly smoother. These projects are paramount for any CS student, given the wealth of resources available online and the often vague nature of class curriculums. They not only boost your skills and resume, but also serve as platforms to exhibit soft skills like problem-solving, dedication, and debugging prowess. Adding unique features to your projects further personalizes them, making them stand out. They're also invaluable for gaining hands-on experience when formal work opportunities are scarce, leveraging the plethora of online CS resources.
Beyond personal projects, consider joining project-based student organizations at your university, such as the App Dev club or Design-U, or even a research group if possible. Here's my take on how you can get involved in research as an undergraduate student. These groups provide similar experiences in a collaborative setting, emphasizing teamwork and interpersonal skills alongside technical ones. Additionally, you should consider joining other student organizations such as Student Board, Code the Gap, Society of Women Engineers, etc. in order to gain leadership experience in a more technical space.
Next, I would highly recommend starting to prepare for technical coding interviews (Leetcode/HackerRank) as early as possible, especially alongside your Data Structures and Algorithms (DSA) course. It enables immediate application of DSA concepts and offers valuable feedback on optimizing code efficiency in terms of runtime and memory. Practice makes perfect in this case, and I definitely regret not starting my interview prep earlier. There are also thousands of online resources and YouTube videos on how to get you started with technical interviews, so definitely leverage those. My personal favorite is Neetcode.io .
Don't underestimate the power of LinkedIn. Keeping your profile up to date can attract recruiter attention. I was approached by several recruiters from companies such as Palantir, Microsoft, LinkedIn, Cisco Meraki, etc. through LinkedIn. Consequently, start making a resume and going to your university-hosted resume workshops to constantly get feedback on your resume. Here's an amazing tutorial that helped me build my first tech resume:

Additionally, recruiters LOVE when you have a personal brand. Whether through blog posts, LinkedIn articles, or a personalized portfolio website showcasing your skills and personality through web design and development, creating a distinct online presence can make a significant impact. I established my online presence through writing, but you can achieve it through various mediums such as design, photography, dance, or any other avenue that helps you to distinguish yourself!
To summarize:
- Do projects – personal projects, student orgs, research groups
- Start interview prepping – figure out interview structure, start Leetcode/HackerRank, polish your behavioral
- Build a personal brand – through LinkedIn, a personal website portfolio, and more!
Network Development + Pre-internship/Unpaid Opportunities
Networking serves as a vital pillar in today's fiercely competitive job market, often misconceived as mere small talk to gain favors. However, it transcends such superficial notions; it's about exchange of ideas and forging meaningful connections. For me, networking was instrumental in navigating my career path.
Networking involves leveraging platforms like LinkedIn, Career Services through your university, alumni networks, and mentorship programs. These avenues provide invaluable insights, guidance, and opportunities to connect with seasoned professionals. Here are some more specific actionable steps to help you build your network:
- Cold email/LinkedIn message at least two people daily. These could be recruiters or employees, but make sure that you show genuine appreciation for their work when reaching out. Try to set up a 15-20 minute conversation with them; it is often harder to forget people after being on a 1-1 call with them. Ask about their experiences and if there are any available opportunities at the company.
- Make sure you don't let your connections forget you! Keep in touch and follow up with people you connect with. If you are messaging them on LinkedIn, you can also post on LinkedIn to indirectly remind them of you.
- Attend career fairs and join groups outside of your university. I attended Grace Hopper Celebration (GHC) in 2022 and 2023 which helped me tremendously with building my network (Here are links to my takeaways from GHC'22 and GHC'23). I also joined Rewriting the Code which helped me gain access to more exclusive scholarship opportunities, conference resources, and supportive community.
Additionally, unpaid internships and apprenticeship programs provide fertile ground for networking. Building rapport with managers and peer leaders not only enhances the internship/work experience but also opens doors for future opportunities and mentorship. Several big tech companies have such programs to propel encourage incoming CS students which can be great learning opportunities for all.
Summer 2022, I got the opportunity to participate in Google's Software Product Sprint Program. This program aims to expose CS students to the industry by helping them build their portfolio, practice industry's best code review and collaboration practices, and give Interview prep tips and tricks. On the technical side, I learnt a lot about frontend development, backend development, Google Cloud Platform, NoSQL database, and contributing on GitHub through Git. For someone interested in exploring a career in software development, I believe this program to be a very helpful first step into the CS industry. Here's an article on the interview tips I received from Google! Thanks to this program, I obtained a referral from my program manager for Google, who also serves as a valuable mentor, offering insightful industry guidance.
All in all, as you navigate the complexities of securing internships in the competitive tech landscape, it's essential to remember that your journey is as much about personal growth as it is about professional development. By embarking on projects, engaging in networking, and building a personal brand, you not only enhance your technical skills but also cultivate invaluable soft skills and expand your professional network. Each step you take, whether it's reaching out to industry professionals, participating in unpaid internships, or honing your interview skills, brings you closer to your goals. And while the path may be challenging, the experiences you gain along the way shape you into a well-rounded individual ready to tackle the opportunities that lie ahead. I hope this article was informative and helpful for your tech journey. Remember to stay true to yourself throughout this process and have fun!