Here I'll explain my journey as someone who went from no programming experience to getting internship offers from Google, Microsoft, and Databricks (junior level, fulltime conversion internship offers) within a years' time.
Things that helped me: keeping my head up through months of rejection (even following a lot of prep) and almost 150 questions on Leetcode. (~50 easy, ~70 medium, ~20 hard)
Feel free to skip to the bottom to the takeaways / tips, and I hope this post helps and has a positive impact, however big or small, on your personal journey.
Some Background
In late 2017, I started my college career without a major. I decided to pursue CS - this was after I had tried to take a programming course in Visual Basic in high school, but ended up not doing so well, failing to understand concepts such as for loops by the end. When telling friends that I was doing CS in college, some of them got a chuckle aware of my inexperience with programming and general ineptitude with computers (the first time I tried to code I literally typed pseudo english into an editor because I didn't understand the concept of syntax or a programming language.)
Failing Interviews
I worked on a few projects, and coming from a rigorous athletic background, was determined to land an internship. I got my resume out there, and by that spring, I had lined up many interviews, but failed nearly every one.
Spring 2018
Yelp - failed 1st round
GM Autonomous vehicles - failed final round
Adobe - failed 1st round
Workday - failed 1st round
Splunk - failed onsite
+4 more startups - all failed
I was able to land an internship at a lesser known company with a lighter interview process, but I was baffled at how anyone could secure top internships. It seemed so difficult to come up with algorithms and ideas on the spot in an interview.
In the months leading up to and during my internship, I had heard from a friend about LeetCode, and he encouraged me to hone my interview skills. So my prep began, and I begun working through problems on Leetcode, following YouTube channels focused on interviews, while also reading up on geeks for geeks articles, preparing for the fall.
Fall 2018: Sep - Oct (In order of interviews)
Facebook (WhatsApp) - failed first round
DropBox - failed coding challenge
Airbnb - failed coding challenge
Cisco Meraki - failed final round
LinkedIn - failed first round
DoorDash - failed final round
Yelp - failed final round
Lyft - failed final round
Pinterest - failed final round
Amazon - failed second round
Lots of Prep and still Failing??
After all this prep (approx 120 LC questions done), I was still failing interviews! And each time, something or the other would get me. I had reached a number of final round interviews, but I was either too slow, couldnt properly figure out a DP recurrence, or something or the other. At this point, including with smaller startups, I was doing ~10 hours a week in interviewing, and it was awful to constantly schedule these 2-3 hour final round interviews only to fail them.
Then -- I really reflected and realized I not only needed time to let these problems sink in, but also that I was putting far too much pressure on myself during interviews, and as a result, I was missing sometimes easy to see things. In fact, in some cases I had crammed in so much prep over the course of 2 months or so that I was pattern matching. This made it difficult for me to come up with new creative solutions when I saw a somewhat similar but different problem.
Additionally, I also had a few bad interview experiences which weren't my fault - I failed a final round interview because my interviewer accidentally posted a solution into coderpad midway through the interview rather than the question at hand. I was not allowed to reinterview.
The takeaway was that I needed to continue to prepare myself, control what I could, and move forward, learning from each experience with a smile on my face.
Something Changed
I kept on going through with the interviews, just taking each one and learning from it. After each interview, I fully coded the correct solution, and then tested it myself. I continued to not only do new questions on Leetcode, but every now and then repeat old ones to test if I was able to reproduce a thought process (not memorizing it).
Things finally aligned, and I was able to string together several successful interviews, landing my first major offer - Databricks.
And let me tell you, after having that in my back pocket, the remaining interviews felt a lot easier.
Fall 2018: Nov - Dec
Google - Offer Given
Microsoft - Offer Given
Databricks - Offer Given
Tips / Takeaways
The goal of me posting this is to hopefully to provide an energy jolt to you wherever you may be in your process. You absolutely 100% can do it - keep your nose to the grind and I promise you, you will see results. You can only be defeated if you give up.
Preparing for interviews, I've found, does actually help improve your coding skills and clarity of thought process - but it requires some grit and practice. I honestly believe if I can land a few offers, that nearly anyone can (but that doesn't mean I stop practicing here, neither should you!)
Please send out that extra email, go to that extra career fair, and continue to spread your resume because eventually things will click.
More Tangible Tips
Hopefully this helps! Glad you made it this far through the post!