Even in my wildest dreams, I wouldn't have imagined I would be a software engineer.
When I first entered Dartmouth (my alma mater), "Computer Science" didn't even enter my mind.
I tried tackling AP Computer Science, and I distinctly remember looking at Java and not understanding how this random bit of code could cause the computer to do something.
So I entered, with full intentions to graduate as a Math major doing nothing but Math things (like doing proofs, which I love). But just in case, I decided to take a CS1 (technically, it was ENGS20 in which we dug down deep into C land) and what do you know, it clicked!
(I think the difference was that I had a prof to guide me unlike my former attempt, as our high school didn't have APCS curriculum)
With that, I fell in love with Computer Science, or more specifically, building software. Yes, it was cool to learn the fundamentals of data structures & algorithms (DS&A), but what really clicked with me was building software to connect people and to automate away the crud in my life.
(Dear reader, I was a Certified Webshit™)
As I continued my journey into CS, I elected it as my minor during my 2nd year, and focused on getting that math major.
Which I did, surprisingly early. I had my major basically completed by the end of my junior year. And then, I was like, "why not just major in CS, too?" And that's what I did.
But of course, I was an idiot for doing this.
The keep readers might've noticed the lack of mention of the word "internship", and that's directly connected to my decision to double major.
You see, I tried looking for internships as a math major for three years but to no avail - and it really didn't help that I was spending 100% of my time and focus on coursework, naively thinking that I'll be able to easily get a job once I graduate, because I had great grades (3.8+ GPA) and a double major from an Ivy League university, for god's sake!
But I realized just how wrong I was as I searched for SWE internships/entry-level jobs during my 4th year.
Ghosted by one company after another, rejected by one after another.
None of my applications getting anywhere.
And when I thought I finally got something, when I passed the preliminary/screening interviews, when I got to onsites, I failed again.
I even tried the so-famed Triplebyte. It led to one interview. ONE. And even that I got rejected from.
Little by little, I started improving my resume and it got to the point where getting interviews was not a problem. Getting selected, however, still was.
I was getting onsites from high-profile companies like Jane Street and Bloomberg, and plenty of smaller companies as well.
Halfway through the process, I learned about Leetcode, realized literally all of my Jane Street questions were Leetcode Mediums, and started grinding.
Even that did not help (I grinded all of Bloomberg leetcode questions, and their interview questions were from that list, I answered and explained them, but the interviewers still did not like me and so I was sent home).
5 months after graduating, I was all out of hope. I was just 2 weeks away from being kicked out of the states (oh yeah, did I mention I was an F-1 student, as if not having any internship or work experience wasn't enough?).
I was devastated. I had plenty of skills. I even had a nonsignificant quantity & quality of open-source projects people could just look at to validate my claims. Just ask anyone who took a CS class with me - I knew my shit. Even then, no one wanted to hire me because I was too "risky", which was their code word for "you're not good enough".
I started to see this as a failure of myself, a failure of my character, of my own being, and it really affected my sense of worth as a human being.
Despite having the education, (informal but still significant) experience (in which I built projects with teams), and the skills, I was clearly still not good enough for any company in the US (I was applying all over the place).
So that must mean I'm not good enough in general.
That must mean that I'm a failure.
This, with the fact that I didn't have any access to my psych meds (my school's insurance ran out when I graduated), really fucked me up, hard.
The only thing that broke this was a small startup who was willing to give me a chance. A company that didn't mind even a failure like me.*
And I took that chance.
It took a total of 226 applications and years of job searching (even 5 months after graduation) to finally get a job, just barely in time for me to be able to stay in the United States legally.
So what is my point? Job search sucks. It's unreasonable, and no matter how smart you are, there are always 100+ other people who are way smarter than you applying to the same position. It's just unavoidable. It's the reality.
The entry-level job market is hyper-competitive, and you really just have to keep applying. But more importantly, DO NOT let anyone berate you/see you as "lazy", "not trying hard enough", or "too stupid" because you likely are not. You are most likely "good enough" for most of the places you apply to, it's just that when you're looking to enter as a SWE, it's a buyers' market.
Seriously, I see way too many people (cough /r/CSCareerQuestions cough) berating people who cannot find an entry-level CS job, because it's apparently soooooooo easy to get a CS job.
For people with experience, maybe. But for those of us that are trying to get our foot in the door? ABSOLUTELY NOT.
So hold your head high, and keep applying, because at the end of the day, it's a numbers game.
*When I talked to the CIO (who was one of the interviewers during my onsite) after I got hired, he said he thought I was "too good" of a candidate and that he worried that I would be "snatched away" by other companies, because I was apparently that good of a candidate in his eyes.
So please do not under-value yourself!