Intro
I entered college in the fall of 2022, and now, in the summer of 2026, I'm about to begin my first full-time job as a software engineer.
For anyone who started college around the same time, you'll know that this was quite a tumultuous period to pursue a career in computer science. The hiring boom of the early 2020s gave way to layoffs, hiring freezes, and one of the most competitive new grad markets in recent memory. There were plenty of setbacks, moments of uncertainty, and lessons learned along the way, but, God willing, I made it through with an outcome I'm incredibly grateful for.
As I make the transition from college student to software engineer, I wanted to take some time to reflect on the journey that got me here. Since everyone has a different path, I do not intend for this to be a guide or blueprint. Instead, it's a record of the moments that ultimately shaped me from a freshman with an interest in computer science into a software engineer.
Becoming a CS Major
When I first arrived at the University of Wisconsin–Madison, I was, like many incoming freshmen, a bit lost. Although I had declared computer science as my major, I wouldn't say I was particularly confident that it was the right path for me. In truth, I didn't really know what computer science actually entailed beyond the introductory classes I had taken in high school. I certainly didn't have a clear picture of what a software engineer was or what career opportunities the field offered.
Looking back, my reasons for studying computer science were fairly simple. Throughout high school, I had always enjoyed subjects like algebra and calculus because of their logical nature, but I also knew I didn't want to spend the rest of my life doing math for math's sake. Around the same time, I had taken a couple of introductory programming classes and found that they scratched the same itch while also allowing me to build things. Beyond that, I kept hearing about how incredible the job market is for CS majors. So at the ripe age of eighteen, I decided this was the career for me.
Early Years
For most of my freshman year, I was blissfully unaware of how software engineering recruiting actually worked. Academically, things were going well. I enjoyed my computer science courses and was learning the fundamentals well. Because of that, I assumed I was on the right track. In my mind, if I continued getting good grades and learning the material, the job opportunities would naturally come later. I figured corporate jobs were something you started worrying about junior or senior year. I couldn't have been more naive.
It wasn't until late into the summer after my freshman year that I discovered how early software engineering recruiting begins. I learned that many students spend the summer after their sophomore year interning, and applications for those positions often open nearly a full year in advance. In other words, while I thought I still had years before I needed to think about jobs, the recruiting cycle had already begun.
This realization hit me like a truck. I quickly learned that I was missing almost every piece of the puzzle. I had never heard of LeetCode, so the first online coding assessments companies sent me were unlike anything I had seen before. I didn't know how behavioral interviews worked, what recruiters looked for on a resume, or even how to approach applying for internships. At the same time, stories about the software engineering job market collapsing after the hiring boom seemed to be everywhere. Layoffs were dominating the news, and every conversation online revolved around how much harder it had become to land an internship.
The sudden realization of how behind I was weighed on me heavily. As the recruiting process was going on during my sophomore year, I began trying to build the plane while flying it. I started solving LeetCode problems, despite barely knowing where to begin. My older brother helped me improve my resume, and I spent hours reading interview advice online and practicing common behavioral questions. I was mass applying to any suitable position I could find. I would have happily accepted almost any software engineering internship that gave me the opportunity to learn and an experience to talk about for future recruiting cycles.
Unfortunately, that recruiting cycle didn't go the way I had hoped. After submitting hundreds of applications, I received exactly two interviews, neither of which resulted in an offer. Watching so many rejection emails pile up after months of preparation was incredibly discouraging. It felt like all of the work I had put in had amounted to nothing, and I couldn't shake the feeling that I was falling even further behind my peers.
As the summer approached, I realized I wasn't going to get the software engineering internship I had been desperately chasing. Instead, I scrambled to find anything remotely technical that I could put on my resume. Eventually, I landed a freelance data training role. It wasn't the corporate software engineering experience I had envisioned, and if I'm being honest, accepting it felt more like damage control than a victory. At the time, I was simply trying to avoid entering my junior year with an empty experience section on my resume. While it wasn't the outcome I had hoped for, it at least gave me something to build on for the next recruiting cycle.
Junior Year Redemption Arc
After everything I had gone through the previous year, I was determined not to make the same mistakes again. Slowly but surely, I started putting the pieces together. I revised my resume what felt like hundreds of times until I finally reached a version I felt confident in. I polished my answers to the handful of behavioral interview questions that came up every time. Most importantly, I put significant effort into improving my technical problem solving abilities.
During the spring of my sophomore year, I completed my university's algorithms course, which gave me a much stronger foundation in the concepts that frequently appear in technical interviews. Over the summer, I enrolled in CodePath's free technical interview prep course. Not only did it teach me how to approach LeetCode problems more methodically, but it also forced me to solve problems while explaining my thought process out loud. It was the first time I experienced anything resembling a real technical interview, and it proved to be one of the most valuable resources I used in college. Outside of that, I spent dozens of hours practicing on my own working through LeetCode's Interview 150 study plan, watching mock interviews on YouTube, and solving problems almost every day.
By the time recruiting season rolled around in late summer, I felt prepared. I was comfortable solving virtually every easy problem and most medium problems companies were asking in online assessments. For the first time, I wasn't walking into interviews hoping to just survive. I actually felt confident.
That confidence paid off almost immediately. One of the first places I applied to was a FAANG company. I passed the online assessment, then the first technical interview, then the second. After months of grinding, I had finally done it.
Or at least, that's what I thought.
The recruiter informed me that I had passed the interview process and was moving on to team matching. Officially, team matching wasn't a formal offer, but it was presented as little more than a final administrative step. The clear message was: "Great job, now we just need to find a team for you."
I was ecstatic. Just months earlier, I had been questioning whether I was even capable of landing an internship. Now, before the summer was even over, I believed I had secured a spot at one of my dream companies. I couldn't believe the turnaround.
There was just one catch: team matching wouldn't begin until February of the following year, roughly six months after I finished interviewing. At the time, I didn't think much of it. I assumed all I had to do was wait. That assumption ended up being one of the biggest mistakes of my college career.
Because I believed that internship was essentially in the bag, I approached the rest of recruiting completely differently. I still applied to positions and stayed sharp with prep, but the urgency was gone. I mostly targeted companies of a similar caliber because, realistically, I couldn't imagine accepting another offer if I expected a FAANG internship to be waiting for me in the spring.
When February finally arrived, I completed the team matching questionnaire. I cast as wide a net as possible. I selected every possible location, picked multiple engineering disciplines, and maximized my chances in every way I could think of.
Then I waited.
And waited.
No interviews. No conversations with hiring managers. No updates. No teams.
As the weeks passed, the optimism I had carried for six months slowly drained away. Every day that went by without hearing anything made it harder to convince myself that things would work out. Eventually, the team matching period ended, and I hadn't matched with a single team.
To this day, I still don't fully know why. Maybe it was my lack of prior internship experience. Maybe there simply weren't enough teams hiring. Maybe something else entirely. I'll probably never know.
What I do know is how it felt. I had spent six months believing I had my dream internship locked up, only to watch it disappear without ever receiving a formal rejection. By the time I realized it wasn't going to happen, recruiting season was effectively over. Most positions were filled, and I was left realizing I had let my guard down when I thought I was safe.
Missing out on a sophomore internship had already made me feel behind, but this was different. I was staring down the barrel of senior year without a single software engineering internship on my resume, wondering how on Earth I was ever going to land a job after graduation. It genuinely felt like rock bottom.
The Break I Needed
Right as I was feeling as low as I had ever felt, completely unexpectedly, everything changed. Almost two months into the spring semester, while I was still trying to process the disappointment of my recruiting cycle, I received an email that I never expected to see. It was from an Epic recruiter regarding a software engineering internship position I had applied for and been rejected from many months earlier. I remember taking their take-home assessment and feeling like I had performed well, but after receiving the rejection email, I assumed that chapter was closed.
However, the email explained that Epic had opened up additional internship spots and wanted to reconsider some previous applicants. They asked if I would be interested in interviewing for the role. I remember being surprised just to receive the opportunity. After months of feeling like every door was closing, suddenly a door was reopening?
Later that month, I completed the interview process. Shortly afterward, I received an offer for a software engineering internship at Epic Systems. The feeling was difficult to describe. Just weeks earlier, I was convinced that I was heading toward my senior year without any meaningful software engineering internship experience. I had already watched one opportunity disappear after months of waiting, and I felt like I was running out of chances to fix my situation. Then, out of nowhere, this opportunity appeared.
Looking back, this offer completely changed the trajectory of my college career. It gave me the internship experience I desperately needed, a real software engineering environment to learn from, and most importantly, confidence that I was finally moving in the right direction. What started as one of the lowest points of my college journey ended up becoming the turning point I needed.
Senior Year: Choosing the Next Challenge
After completing my internship at Epic, I was fortunate enough to receive a full-time return offer the following school year. It was an incredibly rewarding moment and I could not have been more grateful to Epic for giving me that opportunity. My experience there was overwhelmingly positive, and I could have easily seen myself building my career with the company. I was familiar with the area, it kept me close to family and friends, and I knew I would have a great quality of life.
At the same time, having that security gave me the freedom to think more intentionally about what I wanted from my first job after college. After spending my entire college career pushing myself to catch up, I felt like this was a rare opportunity to take a risk. I wanted to challenge myself, move somewhere new, and experience a different environment outside of Wisconsin.
Interestingly, senior year recruiting felt completely different from the previous two cycles. The process that once felt overwhelming had become much more familiar. I understood how to approach applications, how to prepare for interviews, and what companies were actually looking for. I was also seeing much better results. I started receiving interviews from top companies at a much higher rate than previous years. It's hard to know exactly what caused that change. Maybe it was having an internship on my resume. Maybe the market had started to recover. Maybe new grad recruiting was simply easier. Regardless, the difference was night and day. Instead of desperately hoping for any opportunity, I was now in a position where I could be more selective about what I wanted.
After interviewing with several companies, eventually an opportunity came along that felt like the perfect fit: Whatnot. Whatnot represented almost everything I was looking for in my first job after college. It was a fast-growing late-stage startup where I would have the chance to work on challenging problems, move quickly, and learn from ambitious engineers. On top of that, it offered me the chance to finally experience life in New York City, a place I had always dreamed of living after graduation. It was simply an opportunity too good to refuse.
Final Thoughts
As I sit here writing this just days before starting my first full-time job, I can't help but reflect on everything that happened over the last four years. If there's one thing I hope someone takes away from my story, it's this: everyone has their own timeline.
There’s a famous quote that says, “Comparison is the thief of joy.” After going through my college career, I truly understand this quote. It's incredibly easy to fall into the trap of comparison, especially in an industry like software engineering. Open LinkedIn on any given day and it can feel like everyone around you is landing internships, accepting offers, or announcing some incredible accomplishment. But what you're seeing is a highlight reel, not the full story. You rarely see the rejection emails, the failed interviews, or the moments where someone questions whether they're good enough.
For a large part of college, I constantly believed I was behind. I didn't understand recruiting, I failed to land internships, and even when I thought I had finally made it, everything seemed to fall apart again. Looking back now, I realize that being behind did not mean I was out of the game. Little by little, I found my footing. Every rejection taught me something, every interview made me better, and every setback prepared me for the next opportunity.
The other lesson I learned is that this process is full of uncertainty. Progress is rarely linear. There were moments when hard work paid off immediately, and there were moments when it felt like nothing was going my way. Sometimes timing and circumstances are simply outside of your control. What you can control is how prepared you are when the next opportunity comes along. Keep improving, keep showing up, and trust that if you consistently put yourself in the right position, eventually the right door will open.
Four years ago, I walked into college without really knowing what computer science was or where it would take me. Today, I'm about to begin my career as a software engineer in a role I’m proud of. It wasn't the path I expected, but looking back, I wouldn't change it for anything.