Last month, I graduated from Oregon State University's Computer Science post-bacc program, and will begin my first role as a software engineer at (a subsidiary of) one of The Big 5 companies in tech.
Naturally, those with similar career ambitions have reached out for advice on their own journeys. This post is an attempt to address questions I've received.
But, with a small catch -
I no longer believe in giving advice.
The truth is, I can only share what worked for me in my situation. What worked well for me may not work well for others. Likewise, what didn't work for me may very well work for someone else.
Rather than sharing advice, I hope to instead provide useful information. What you decide to do with this information is totally up to you.
So, with this in mind, here are the factors I believe had the greatest impact on my transition into software engineering, and answers to commonly asked questions.
This recent tech winter of massive layoffs has only supported my claim that bachelor's degrees continue to be the most reliable entry into software engineering. Regardless of the "inclusion" lip service, the top dogs of the industry still show a strong preference toward campus graduates. This labor market has been particularly tough for undergraduates, but it's been even tougher for bootcamp grads.
But, putting aside the industry's bias toward degreed candidates, here's why a bachelor's program has been so impactful for me:
Access to internships: In this field, experience is everything. My 1.5 years of paid internship experience made me stand out in a brutal hiring market. Hiring managers were comfortable giving me an offer because my experience proved I knew the work. Unfortunately, bachelor's degrees are a hard requirement for most internship programs. This means, without a bachelor's program, I wouldn't have my internship experience, and thus would have a much harder time competing in the hiring market.
Well-rounded education: I'm extremely confident in my own ability to pick up any tool or language. Because ultimately a computer science program teaches students how to solve problems - not just how to code. Sure, I know Java, Javascript, C, and Python. But, those are just tools. My most impactful and interesting lessons have taught me how a computer is built, how to design and test systems, and how something as big as The Internet can be boiled down to electric impulses and radio waves between networks. This is the knowledge that has given me the confidence to become an effective and thoughtful software engineer - instead of just a coder.
Author's note: The differences between computer science and bootcamp grads are most pronounced at graduation. However, as bootcamp graduates and software engineers both acquire experience, the differences between these two engineers become negligble.
Getting involved in the student community
One phenomenon I've noticed throughout my years at Oregon State University (OSU): those who were most active in the student community tended to have the most successful career outcomes.
I don't know what causes this to happen, but I can attribute these two factors to my success:
Sharing of information and resources: Because I was involved in the student community, I was aware of resources and opportunities that less-active students were not privy to. For example, thanks to students who spread the word, I learned about and applied to CodePath's interview prep program - which is how I learned how to succeed at technical interviews, and where I got my first internship opportunity.
Referrals: Friends tend to want to help out friends, and one of the easiest ways to do so in this industry is through referrals. My Zillow and Meta internship offers were from OSU students. (Side note: another student reached out to offer a Google referral, but I had already bombed their coding interview).
Joining CodePath's technical interview prep program
CodePath is a nonprofit program that helps underrepresented students gain the skills needed to transition into software engineering roles. One of the ways they do this is through a summer-long course that teaches technical interview skills, followed by a career fair.
Here's why this program was impactful:
Skills: Simply put, I didn't know how to Leetcode before joining CodePath. And, thanks to the program, I learned enough to secure four internship offers during my first hiring season.
Accountability: Being forced to complete algorithmic puzzles on a regular basis gave me the stamina to learn interview skills and continue my learning long after the program was completed.
Safe space for learning: Computer science is extremely competitive, which can sometimes bring out nastiness amongst students - especially in anonymous forums like Discord, Reddit and Blind. For me, it felt very validating to learn (and fail!) with the positive support of my pod that was personally invested in my success.
Taking a break to pursue multiple internships
As mentioned previously, we are in a tech winter that has created a very tough hiring market for juniors. I've seen fellow students - with better interviewing skills and more prestigious internship experience - struggle to get offers.
But here's why I believe my internship experience worked for me:
I worked for companies with a high intern-to-FTE* conversion rate. Of course, these numbers aren't published publicly, but students do talk about their experiences. So, although turning down Meta for Zillow was a difficult choice, I felt completely justified when Meta failed to give return offers to most of their 2022 intern class, and even rescinded the few offers that were given. Most of the companies I worked for continued to hire and convert interns throughout the recent layoff season.
Side note: ironically, I was one of the few Zillow interns that didn't get an offer, but that's a long, emotional story for another time.
The sheer number of internships made me a stand-out candidate: Most students complete one or two internships during their undergraduate years - I was lucky to do four, for a total of 1.5 years of paid experience. By the time I completed my last internship, I had seen enough in the workplace (both good and bad) that hiring managers felt confident I could excel as a junior engineer.
For example, during my Disney interview, the interviewers were highly impressed with my reflections on my difficult internship at Zillow. They explained my challenging situation was more valuable than the typical, safe sandbox experience most interns are accustomed to. However, if Zillow had been my only internship experience, I don't believe I would have accurately assessed what exactly went wrong and why.
*FTE: Full-time employment
Now that I've reflected on the factors I believe have been most impactful for my success in transitioning into software engineering, these are answers to some of the most common questions I get in my LinkedIn DMs:
Answers to commonly asked questions
How do I get my foot in the door as a bootcamp graduate?
This is a tough question to answer, for a couple of reasons:
I'm not a bootcamp graduate, so I have blindspots regarding which programs and opportunities are available that are unique to bootcamp grads
As I've written before, entering the field as a bootcamp graduate is really, really tough to do
That being said, here's what I believe is the only way to get ahead as a bootcamp graduate:
Build your own internship experience: Bootcamp students may not have access to traditional internships, but this doesn't mean you can't create your own. The most successful bootcamp grads I've seen have participated in:
Apprenticeships (similar to internships, but less restrictive)
Hackathons
Open-source projects
Personal side projects
Writing technical blogs
Make new friends in the industry: (formerly known as networking) Just like students like to help each other out, so do fellow engineers. There are so many meetups and organizations in this space that can help you connect with other engineers - engineers that can one day give you referrals.
My most successful experience has been from getting a leadership position, teaching algorithms through Women Who Code. Being on a leadership team is a great way to be visible in your local tech community and make strong bonds with fellow engineers. Through this experience, multiple people have reached out to me, asking if I'd like a referral to their company.
What tips do you have for getting internships? What about off-season internships?
Apply, apply, apply. Always be applying.
Make your LinkedIn profile attractive to recruiters. During the height of the tech hiring frenzy, recruiters found me on LinkedIn and reached out to ask me to apply for their internship positions. This was only possible because my robust About section and headline made it easy for them to find me via search.
Find career fairs with a strong track record of hiring students. Some examples I've seen are:
University career fairs
Grace Hopper*
AfroTech*
*These are community-specific career fairs, so if you do not identify, find a better-suited conference
Did you have side projects as a student? What tips do you have for building a portfolio?
I had side projects, but most weren't great. Here are examples of some terrible projects that once graced my resume.
As for tips, I found the most success in joining programs and events where a project was the final conclusion - i.e. hackathons and a CodePath Android course.
Best of luck in your career!
Software engineering is a tough field, but like any field it rewards knowledge, skills, and - most of all - experience. If you use these three points as your north star during your journey, I have no doubt you'll transition into the field.