How I am making up for lost time after wasting my entire undergrad.
Tags: webdev, beginners, motivation
Published: 2019-12-17 06:33:35

Hey everyone.

I hope this is not another cliché motivational post.

So a little about me; I'm 24, Indian, currently pursuing my Masters in CS, and have completed two full-stack internships.

Before all of this, I was just another lazy, under-performing undergrad student, who loved programming and computers(still do).

It all started with me screwing up my high school(known as 11th and 12th class in India). Low scores meant that I couldn't meet the cut-off criteria of top-tier engineering colleges in India. And, I had no clue about the admission process in the US/Europe.

I had to make-do with studying Bachelors in CS in a no-name, mediocre college.

A short summary for those have no clue about the Indian education system - it's terrible, unless you're studying in top-tier colleges. The concept of rote learning is religiously followed here, and students copy assignments from their seniors. Even projects aren't spared; there's a whole market for people selling readymade CS projects.

My laziness combined with the terrible education system meant that important CS concepts weren't hammered into my brain. Not only that, but I also flunked twice during my undergrad, which meant that my 3 years of undergrad got extended to 4.5 years.

During my final semester of my undergrad, I decided that I'd work on my college project on my own. I made a shitty mobile shopping website using only PHP & mySQL, taking inspiration from Snapdeal's(an Indian e-commerce website) design.

I had zero knowledge of web development, due to which I spent two entire days without sleeping, to finish my project. 

I was given three entire months to finish it, but being the procrastinator that I was, I took it seriously only when the crippling anxiety of the deadline hit me. 

But it was all worth it, because I realized that web development is what I loved!

After finishing my undergrad, I decided to pursue my Masters from the same college, because I figured it'd be near impossible for me to get a job with just a Bachelors degree from a shitty college.

Oh, and I was jealous! Extremely jealous of my peers surpassing me, and getting jobs through career fairs(they're known as campus placements in India). I thought I was done for, looking onto the Masters degree to save my ass.

Luckily, I had 7-8 months of free time till the admissions for the MS course started. My newfound love for web development made me research the job industry for nearly a couple of weeks. I used to spend endless hours everyday rummaging through Google, trying to figure out how feasible webdev was, and how much devs were paid.
 
After all of this, I stumbled across Udemy, and impulsively purchased a couple of fullstack courses, which helped me fall in love with it even more.

I made a couple of web-apps, and added it to my resume, which gave me a decent amount of confidence. I thought I was job-ready, and like a starry-eyed newbie, applied endlessly on Angellist and LinkedIn for months, without any success.

Then my anxiety hit me. It was severe, and lasted for 3 months, all of which were hell. With regular meditation, and support from my parents, I overcame my anxiety, and I finally bagged an internship at a big company!

I think almost all of you know the joy of bagging that first job or internship.

Given my grades were shitty, I had to pursue my Masters in the same college. Lucky for me that the faculty allowed me to attend college while pursuing my internship.

The internship was in MEAN Stack, and we later migrated to using GraphQL and Apollo. 

It lasted for 6 months. Like a lot of people, I started off as a noob, but unfortunately, didn't perform well in my internship, due to which my internship didn't transition to a full-time role.

I was obviously dejected, but instead of sulking, I decided to focus entirely on my college for a while, and only started re-applying aggressively to jobs after my semester was done.

After weeks of grueling interviews and rejections where I got my ass handed to me, I somehow got into a startup as an intern again, and boy it was chaos! 

Transitioning from a big company with tons of perks, to an early-stage startup with zero funding & benefits was rough. 

The tech stack they used was MERN(MySQL) + Redux, and initially, it was good.

However, my senior was fired for his incompetence. Thus, the responsibility of the entire front-end lay on me.

Taking on such a huge responsibility came with it's usual stress. However, it was also an excellent learning opportunity. I successfully built half of the front-end of the web portal that we were building & managed/maintained the entire front-end.

I quit after 4 months because the stress was getting overwhelming, and it got hard to manage my MS studies. 

Also, there were no seniors to guide me and do code-reviews, which I feel are extremely important when you're fresh in the industry. 

Code-reviews help you learn best practices, and force you to write clean & modular code(atleast from my experience in the big company that I worked at).

***What am I doing right now?*** 

Improving my knowledge of Data Structures & Algorithms by reading books written by Prof Sedgewick(Princeton), watching the MIT Open Courseware(brilliant set of videos), grinding Leetcode/Hackerrank & applying for jobs.

I was a top-ranking student till my undergrad, but it went downhill from there. 
Failures have really humbled me, and taught me the value of time. 

***Here are some excellent resources & the plan I'm following***:

- https://introcs.cs.princeton.edu/java/home/ 

  Great book-site for the related book called [Computer Science: An Interdisciplinary Approach](https://www.amazon.com/Computer-Science-Interdisciplinary-Robert-Sedgewick/dp/0134076427)

- https://algs4.cs.princeton.edu/home/

This is the next book-site that is intended as a sequel for the above first book.
The book site is a summary of the following book: [Algorithms (4th Edition)](https://www.amazon.com/Algorithms-4th-Robert-Sedgewick/dp/032157351X)

The only caveat is that the above two use Java, instead of pseudo-code, which might be a hindrance for some.

- https://www.youtube.com/watch?v=HtSuA80QTyo&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&index=1

MIT's Open Courseware. Excellent set of lectures.

- https://teachyourselfcs.com/

Brilliant list of CS self-study resources. I don't follow the guide to a T, but it's an excellent guide, nonetheless. Useful for devs & CS students alike.

- Solve the first 100 easy problems on [Leetcode](https://leetcode.com/problemset/all/?difficulty=Easy&listId=79h8rn6)





- Solve all the easy DS&Algorithm questions on [Hackerrank](https://www.hackerrank.com/domains/data-structures?badge_type=problem-solving)


I also purchased a small whiteboard. Whiteboarding is extremely effective. Even though, my intention right now is not to aim for the FAANG companies, I've started practicing DS&Algorithms questions on my whiteboard.

Breaking down a given problem statement into sub-problems, and drawing diagrams for the data structure or algorithm that you'll use for these specific problems will really help, trust me. 

And, don't be disheartened if you're not able to solve even the easy problems. It just takes practice, and if you're getting stuck even after that, you can re-watch or re-read material on the programming language and the DS/Algo you're using.

My next plan would be to move on to medium-level problems on Leetcode and Hackerrank once I'm done with the easy problems.

I hope this post was helpful, and didn't come off as "too cliché". 

***Happy learning!***