Saturday, 21 May 2022

How do I compete with people who are smarter than me?

I got the privilege to study at IIT Bombay’s Computer Science and Engineering Department for my undergrad. It is arguably the most competitive course in Engineering. All the top JEE rankers join the course and so, it becomes extremely competitive.

I secured an All India Rank of 33 in JEE Advanced 2013 - definitely a dream for many. But guess what, I wasn’t even eligible for the American Express Internship because the cut-off was an All India Rank of 25. Not only that, I was not eligible for the Aditya Birla Scholarship because they shortlist only the top 20 JEE rankers from each IIT. For IIT Bombay, this was an All India Rank of 22 because AIR 4 and AIR 9 went to IIT Delhi.

Can you imagine, that there are things that I was not even eligible for, after securing an All India Rank of 33 in the toughest Engineering Exam in India?

In my year, IIT Bombay CSE closed at AIR 59. Approximately 1.4 million (14 lakhs) students appeared for JEE Main of which some 150k (1.5 lakhs) appeared for JEE Advanced. Of this, only the top 59 rankers were eligible to join IIT Bombay, Computer Science and Engineering. That’s how competitive it is.

Every other person is a topper of their respective coaching - Bansal Classes? Yes. Resonance? Yes. Vibrant? Yes. Allen? Yes. You name the coaching institute and the topper is there at either IITB CSE or IITB Electrical. To make matters worse, in my year, during my freshman year, the Electrical Department’s grading was coupled with the CS Department's grading. The Electrical Engineering Department of IIT Bombay closed at an AIR of some 109. This means that if you are a student at IITB CSE, you are directly competing with almost 70% of the top 100 JEE rankers. That’s how brutal it is.

When I joined IIT Bombay in 2013, I faced a lot of challenges. From day one, I was under pressure because of the extremely competitive environment. Some people won’t attend classes, you’d never see them studying, and still, they will top the class. Many knew programming from their school days. In the first year, many courses are related to Physics, Chemistry, and Mathematics which are a part of the JEE syllabus so, it was extremely difficult to manage given that the top JEE rankers were already the best at these subjects.

I worked hard. Really really hard. I spent countless hours studying. My strategy was fairly simple - to compete with the people who are smarter than me, I put in the extra hours. People studied for 4 hours. I studied for 8 hours. Many people called me “maggu” (someone who always studies), but I was clear about my strategy. Most importantly, I had that self-realization that I was not as smart as many of the students here. I also maintained consistency in my academics and did not leave anything for 1 day before the exam. I attended all the lectures, made notes, attended the tutorial sessions, and read books.

End result?



I was ranked 8th in the institute out of some 850+ students, with a CGPA of 9.86/10.0. For my exceptional performance, I was an Institute Academic Award recipient from IIT Bombay which was a cash prize of Rs. 2,000 and an achievement for life. I was also ranked 2nd in the Computer Science Department of IIT Bombay. Here is a copy of my grade sheet:


Here is how you can interpret the grades:

  • AA = 10 out of 10
  • AB = 9 out of 10
  • PP = Pass (a non-credit course)
  • AP = 10 out of 10 and exceptional performance (top 2% in that course)

As you can see, I scored a 9 out of 10 in the Organic & Inorganic Chemistry and Biology Courses. In all other courses, I scored an AA or an AP. As you can see, I have also scored an AP grade in 5 of the courses, which was the highest in our batch. I had never scored 100/100 in Mathematics in any exam in my life, not even in school or board exams. I scored a 100/100 in the Differential Equations course, which was the first time in my life that I got a full score in maths.

I think what really helped me was that I kept working hard. I never worried about the competition. I just assessed the fact that people here are smarter than me and so I need to work hard. From there on, I didn’t look back and I made sure to spend double the hours that any other person is spending. I also utilized the weekends to spend time catching up on subjects where I was relatively weak. For instance, I found Linear Algebra to be quite difficult. So, over the weekends, I spent more time on it to understand concepts better and solve more problems.

Later during the third semester, we had the Data Structures and Algorithms course. It was one of the toughest courses that I have ever taken. Prof. Diwan is known to create question papers that have an extremely difficult set of problems. Throughout the semester, we had 4 exams in that course - 2 quizzes, 1 mid-sem, and 1 end-sem. Of the total 100 marks, I scored merely 27. Can you imagine? Just 27 out of 100. What’s worse was that the highest in the department was 81/100, exactly 3 times my score. I ended up getting a CC grade, which is 6 out of 10.

Needless to say, I was extremely disappointed and scoring so low was a major setback. I realized that if I don’t work on my Data Structures and Algorithms skills, I will struggle a lot later because almost all Software Engineering careers require a sound knowledge of that. I figured out that the course went a little fast and because of the excessive workload during the semester, I could not do justice to the course because I couldn’t give enough time to practice problems. So, I decided that I would use the 3 months of the summer after my second year to spend time practising a lot of problems and reading a lot of concepts.

During the second year summer, I was interning at TU Braunschweig. It was a research internship and I totally did not like it. To top it up, I had plans to spend time improving my Data Structures and Algorithms skills during this period. So I didn’t really focus on the research internship and spent almost all my time practising problems on SPOJ, Topcoder, Codechef, and Codeforces. My flatmate during the internship was a batchmate of mine from IIT Bombay. He was an ACM-ICPC World Finalist. It often took me 5 hours to come up with a solution to a problem which he was able to get in just 5 minutes, without picking up a pen and paper. You can imagine the kind of pressure I was under because of this major gap.

I consistently worked hard and did not give up. I was clear that I didn’t want to go into research and rather would want to get a fantastic internship during the third-year summer. So, I needed to prepare for that now else I will face huge challenges during the internship hiring season in the 5th semester.

It turned out to be a great decision and I got an offer from Tower Research Capital, arguably the best domestic internship offer across all IITs. Further, I got selected at Rubrik (US Office) for an internship worth a stipend of $8000 per month - the highest-paying internship offer. The Rubrik and the Tower Research interviews were some of the most difficult interviews involving most of the questions around Data Structures and Algorithms. Because I had practised a lot during the summer, I was able to solve almost all the questions easily.

Some of you might think that I was already at a benefit because of my being a part of IIT Bombay, CSE. Yes, that’s correct. But the point here to note is that during the campus internship and placement season, I was competing with other people who were all from IIT Bombay, CSE and so, I really didn’t have an unfair advantage over them. In fact, I had a disadvantage given that many of them were way smarter than me.

Fast forward to today (2022), I am the Founder of Cogno AI, where I lead a team of over 150 people, crores in revenue, and ~100 customers. My co-founder (now my wife) and I bootstrapped Cogno to this stage, owning about 97% of the company. Cogno was acquired in a multi-million dollar deal by Exotel. I still work hard. I have figured out the template to win over smart people - put in double the hours of effort.

Many people ask me - do you not get bored of working hard? I think I enjoy winning. I enjoy the work that I am doing and so, I am quite happy with the work and do not get bored. Some people enjoy travelling. Others enjoy cooking. Someone enjoys reading. I enjoy working hard - that’s how it is for me. I am proud of myself and the work I am doing. My parents and family members are proud of me and my achievements and so, I think that all of my hard work has paid off quite well. The best part is that I am merely 26 years old and totally financially free. So, I have a lot of time to enjoy and compensate for the sacrifices that I made so far because of spending that extra time on academics.

So, to all those who are depressed by seeing those smart people around you - beat them with your hard work. Remember - Hard work beats talent when talent doesn’t work hard.

Set high goals for yourself and work on them. Do whatever it takes to work on them. Sacrifice everything that doesn’t align with your goal. Friends and Partying can always happen later. If you work hard during your 20s, you’ll be set for the rest of your life. Enjoy in your 20s and you’ll struggle for the rest of your life. It is easier to correct the course of a rocket when it is on the land than when it is already 10,000 kms away from its planned trajectory. The earlier, the better.

All the best!


Some of my other posts:

Friday, 20 May 2022

How can college students prepare their resume to get a job as a software engineer?

I graduated from IIT Bombay (Computer Science and Engineering) some 5 years ago in 2017. I was reading one of the Quora answers and someone had posted my resume in that. With this resume, I got some of the highest packages across all IITs that year:

  • Rubrik US: $150,000 per annum
  • Hedvig US: $120,000 per annum + stocks
  • Tower Research Capital: Rs. 38 lakhs per annum (may go up to Rs. 42 lakhs per annum, depending on performance during the first year)
  • Rubrik India: Rs. 30 lakhs per annum + stocks
  • APT Portfolio: Rs. 28.8 lakhs per annum
  • Directi: Rs. 27 lakhs per annum (the package breakdown is quite complex here though).

I ended up building a startup of my own though.

Let’s take my resume as a case study and understand it section-by-section to see what is good, what is bad and how can you replicate the good parts.

Education

This is definitely one of the most differentiating sections in my resume for any kind of Software Engineering job in India and the US. The IIT Bombay (CSE) tag is extremely lucrative and on top of that, there is a GPA of 9.3/10.0 which by all means is quite good.

If my GPA would have been in the range of 7.0 - 8.9, I’d have probably also mentioned my rank in my class because at this GPA range, a recruiter would not be able to understand my relative standing. So, if your GPA/Percentage is not exceptional, it is better to mention a rank/percentile. Something like “among the top 10% of the class” would suffice.

Learning: one of the best career hacks is to study hard in school and get into a good college.

Scholastic Achievements

I have listed the achievements in chronological order. Some achievements might be big, but because they happened in the past, they should not be mentioned at the top. For instance, I feel that the JEE Rank of 33 is probably a big achievement, but it happened quite before ACM-ICPC and so, it has to be mentioned below.

A few good points to note:

  1. Score exceptionally well in a few courses and get a top grade and you can add it as a point here. For instance, I got AP grades (given to the top 2%) in a lot of courses and so, I was able to add that as a point.
  2. Participate in some well-known competitive exams like ACM-ICPC which are of national and international repute and it will help you add a point on your resume. A top rank would be a cherry on the cake, but writing about participation also helps show your curiosity.
  3. A top rank overall in a college of repute is another great point to add to your resume. I think if you are among the top 5% or so in your institute, it is worth mentioning on your resume. Shows your seriousness about your career.
  4. The last 4 points on the resume go back to the 2nd point I mentioned above - participating in some well-known competitive exams. JEE Advanced and JEE Main are known to be tough. Same for olympiads. A good rank in these exams shows hard work, dedication, and commitment.

Internship Experience

  1. The most interesting point in my resume is that of a US internship. US startups are tough to crack. So, if you can get an internship at a top-tier Silicon Valley startup or a large company (FAANG), definitely that shines well on your resume. During the interviews, Interviewers will often discuss the work you did during your internship. So be prepared for that.
  2. Usually, students have up to 2 internships on their resume - one after the 2nd year and one after the 3rd year. In fact, most students only have 1 internship which is after the 3rd year. So, I did 5 internships to differentiate myself from other resumes. Anyone looking at 5 internships in the resume of a 4th-year college student would be curious to understand more.
  3. My internship experience is a mix of research + industry and on-site + remote. So, that shows the flexibility of the candidate.

Projects

This is another important section. As you can see, I have done a few smart things:

  1. I did a lot of projects - this shows the interviewer that the candidate is committed in nature. Many candidates don’t write small projects on their resumes. The recruiters are wise enough to understand that as a college student, all your projects would anyway be small. I think the purpose of the projects section is to see whether the candidate takes up initiatives or not, rather than to see if they can take big initiatives. Understand the difference.
  2. I have categorized the projects as per courses. So, for the interviewer, it becomes easier to read and understand.
  3. I have done projects across multiple domains. Startups hiring for Machine Learning/Artificial Intelligence would find my resume interesting. Rubrik like companies working on Operating Systems would find my resume interesting. e-commerce companies driven by websites would find my resume interesting. By doing a lot of projects, I was able to expand my “net” quite wide so as to target more companies.
  4. I have highlighted the keyword that talks about the technology I have used. Many companies hire for specific technology experience. At the college level, experience doesn’t really matter. But having some knowledge of a specific technology stack helps you look more attractive than your peers.

I would like to reiterate that the depth of the project really doesn’t matter at the fresher level because most companies anyway find all such projects quite basic. So, it is best to do multiple projects and write down at least the top 5 - 10 on your resume. Do a basic project. Do a project on your own without guidance from any professor. Do a project on a Coursera/Udacity course. Do anything. Just do it and write it down on your resume. Do it to an extent that you understand the concept clearly and are able to explain it to the interviewer in case they ask questions.

Remember, if you do a project for the sake of doing it and you get caught in the interviews, you'd almost certainly be rejected. Don’t do anything unethical and don’t write any false information on your resume.

Skills and Interests

While I have already highlighted the tools and languages that I know under the Projects section, this section help reiterate and summarize the same so that someone who is not interested in reading the entire projects section, can save time and still get to know my skills. This drastically helps increase the chances of selection.

I have deliberately tried to make my resume look diverse because, at the fresher level, companies anyway know that the candidate is not an expert in a specific area. They just want to see if you’re curious or not. Doing a bunch of stuff helps you showcase that.

Other Academic Achievements

This section is really optional. I wrote it because I had space on my resume. Frankly, this is just an extension of the Scholastic Achievements Section.

Positions of Responsibility

I think that for a Software Engineering job, this section is also optional. Some companies might feel happy knowing that you do stuff outside writing code, but I am not sure how much will it impact your chances of getting hired. I think if you know how to code well and if you can prove it during the interviews, this section is totally optional.

Summary:

  1. Work hard during the college days to do well in academics.
  2. Take up a lot of projects from various domains, small or big - doesn’t matter.
  3. Highlight the tools, frameworks, and programming languages that you know and make sure to convey that well.
  4. Don’t sweat too much about the non-technical stuff, it won’t materially hamper your chances of getting selected.
  5. Don’t write any false or shallow information. Only write those things that you know well.

All the best!

Some of my other posts:

Wednesday, 18 May 2022

What is the best way to look for off campus placements for IIT students?

Disclaimer: you might get banned from your college placement procedure if you apply for off-campus. So, do this at your own risk.

I got some of the best job offers when I graduated from IIT Bombay in 2017.

  • Rubrik US: $150,000 per annum
  • Hedvig US: $120,000 per annum + stocks
  • Tower Research Capital: Rs. 38 lakhs per annum (may go up to Rs. 42 lakhs per annum, depending on performance during the first year)
  • Rubrik India: Rs. 30 lakhs per annum + stocks
  • APT Portfolio: Rs. 28.8 lakhs per annum
  • Directi: Rs. 27 lakhs per annum (the package breakdown is quite complex here though).

These figures are for 2017. Since then, salaries at each company above have considerably gone up. All the above offers are off-campus offers because I didn’t sit for placements.

Let me first talk about how I got an off-campus internship in the US and then I will talk about all the above off-campus placements.

Back in 2015 during my 5th semester (July 2015 - November 2015), our internship season had begun. Many companies came to campus to hire students for an internship during the summer of 2016. At that time, I had a CGPA of some 9.4, which by IIT Bombay standards was quite good. So, my resume looked attractive to quite a few companies.

I had applied to two of the companies via the campus internship process:

  1. Samsung (Korea): Who doesn’t want to go outside India?
  2. Tower Research Capital: They paid the highest stipend in India. Back then they paid Rs. 75,000 per month. I have heard that in the subsequent years, they increased to Rs. 2 lakhs per month.

I wanted to go outside India and so, my first preference was Samsung. Tower Research was mostly a backup. I appeared for Samsung’s coding test. If I remember correctly, some 40 people appeared for the test. I had scored full and was ranked 2nd overall. I had a great CGPA. Samsung also focuses a lot on JEE rank and so, I was in a sweet spot. I had prepared quite well and so, I was fairly confident to do well in the interviews too.

One day before the Samsung interviews, I was shortlisted for Tower Research interviews as well. It was a difficult situation for me because as per campus rules if a student gets an internship offer from one company, they will have to step out of the internship process and join that company. Tower Research interviews were scheduled for the evening and it was known that they declare results on the same day. I was a little worried because if Tower selects me, I won’t be able to go for Samsung. But at the same time, I didn’t want to take the risk of skipping Tower interviews and risking for the only other option of Samsung.

I spoke with a senior of mine to get an idea of what to do. He suggested that I should do well in the Tower interviews and then politely convey to the hiring manager my intent of joining another company. This way, if in the worst case, I do not get selected for Samsung, I would have made a good impression on the Tower team and so, I might be able to go back to them to see if they can reconsider me basis the interview performance.

I did exactly that. Tower interviews went fantastic - I was able to answer nearly all the questions pretty quickly. They made me solve a few complex data structures and algorithms problems and threw a bunch of system design questions. During the final interviews, I told the interviewer about my intent to join another company. He told me that I should speak with HR about that. Students do not have access to the contact details of HR. So, I was perplexed as to how can I speak with them. After some 30 minutes or so, I got a call from their HR telling me that I have done quite well in the interviews and they’d like to make an offer. I got shit scared and I could see my foreign intern dream vanishing.

Puzzled, I told him that I am not interested and would want to explore other options. He told me to take 15 minutes and think about it and call him back with my conclusion. I was talking to my senior and my parents to figure out what to do. 5 minutes later I started getting calls from my friends congratulating me for getting selected at Tower Research. Tower Research had selected some 3 students of which I was one of them. I didn’t know whether to feel happy about getting the best-known domestic internship across all IITs or to cry for missing out on a foreign internship. I had no option but to settle for what I had got. As per the institute procedure, I could no more continue with my process for Samsung.

If I am not wrong, this all happened during July/August 2015, during my 5th semester. While at the moment I had settled for Tower, my mind was in continuous search for other options, most importantly an internship outside India. Sometime in September, a friend of mine told me that he had been selected for an internship at Rubrik via his brother’s referral. His brother was working at a US-based company in the San Francisco Bay Area and he had friends at Rubrik so they referred him. I searched about Rubrik right then and got pretty excited. Rubrik was based in Palo Alto - the heart of Silicon Valley. Without a second thought, I mailed them my resume.

I had mailed at 3.42 AM in the night. Within a few hours I got a response:

It took 3 rounds of intense interviews around data structures, algorithms, and systems design to finally get selected.

Soon I received the offer letter:

Over and above the offer letter, they paid $1000 per month for accommodation and also reimbursed the Air-fare from India to the US and back. The total compensation went to $8000 per month. By all standards in 2016, it was quite good.

Soon after that, I stepped out of the campus internship process and wrote to Tower Research that I won’t be joining. As per the institute processes, this was unprofessional behavior and so, in the placement process, my resume would have a line at the top saying - “Unprofessional Behavior During the Internship Season”.

I was quite confident that I’d be able to do well at Rubrik and get a return offer and so, I wasn’t worried about the placements. Fast forward 1 year, I received this email confirming my return offer at Rubrik:

Soon I got my full-time offer letter at Rubrik’s US office.

So that's how I got my first off-campus placement.

My 7th semester (July 2016 - November 2016) was quite a random period of my life. I had spent 3 months during the summer of 2016 in Palo Alto and so, the startup bug had gotten into my head. I wanted to start something of my own rather than going for a job. However, coming from a middle-class family, these job offers were extremely lucrative. While a lot of people can provide guidance for job A vs job B, few had started up during the college itself and so, I had no one to guide me on a job vs a startup. It was quite a difficult situation for me. The job vs startup decision became further difficult given that I didn’t have any idea of what to do:

  1. I didn’t have a co-founder.
  2. I didn’t have a startup idea (or rather a problem statement) to work on.
  3. I had no prior startup experience.
  4. I didn’t know how to recruit, how to sell, etc.

While I was battling with my thoughts between a job and a startup, a recruiter reached out to me on LinkedIn. At that time, a lot of these high-frequency trading firms were hiring aggressively CS grads from across the IITs. I definitely had a lucrative resume with a US internship and a 9-pointer CGPA along with the IIT Bombay CSE tag and a JEE rank of 33. I spoke with her on call and she seemed to have a lot of connects in a lot of high-frequency trading firms. These trading firms hired Software Engineers for the role of Core Infrastructure Developer. The idea was to build the trading platform for strategists to trade on. I had some idea of the role from my Tower Research interviews. And from the recruiter, I got to know that these companies were paying quite well - better than the Software firms.

Confused as I already was, I got an idea - “If I have to join Rubrik US by the end of my college, I will have to go through the Visa process which will require Rubrik to spend a considerable amount of money on me. If I later turn them down after they spend more money on me, it would be quite unethical. So, if I can get a job offer from one of the domestic companies via the recruiter, I will be able to politely inform Rubrik that I won’t be joining. As a gesture, I can help them hire my friends from IIT Bombay, Delhi, and Kanpur”.

I thought about the idea and I realized that I would go for it. The recruiter lined me up with Tower Research Capital and APT Portfolio and Alphagrep Securities. All 3 of these firms also did on-campus recruitment. However, at that time, there was so much demand for IIT CS grads in these firms, that all of them agreed to consider my profile off-campus. I cleared Tower Research and APT Portfolio interviews. Since I already had these 2 offers, I told the recruiter that we can skip Alphagrep Securities.

Before I could accept any of the above offers, I got reached out by recruiters from Directi and Hedvig US. For Hedvig, I told them that I am not really interested, but they insisted on me appearing for the interviews. Needless to say, I got through both Directi and Hedvig. Now, I had a bunch of offers and it was a messy situation for me. I had hit my own leg with my own axe by increasing my choices. Previously, the confusion was between job vs startup. Now the confusion was between Job A vs Job B vs Job C vs startup.

To make matters worse, I got an email from Rubrik saying that they plan to open their India office in March 2017 and would like to extend me an offer there as the first Software Engineer. I was already inclined towards Rubrik due to my fantastic internship experience and now, they had offered me a job at their India office.

I thought about it and realized that this rather solves all my problems - I can accept Rubrik India’s offer, and start working on my startup in the 8th semester. If something works out in the startup, I will continue that, else I will join Rubrik. So, I turned down all other job offers and accepted Rubrik India’s offer. In the back of my mind, I knew that in the remotest case, if my startup works out and I have to skip joining Rubrik, it would be extremely unethical on my part to have wasted their time. So, started to think of ways to compensate for that before that situation comes.

Accordingly, I helped them hire some 9 odd people from IIT Bombay, Delhi, and Kanpur. They were extremely happy with my referrals because they helped them build their early team in India. The trust was so much that they even went to the extent of discussing salaries with me because they were new to India.

After all the confusion and chaos and my efforts in the interviews, I ended up starting Cogno AI, my own startup. Now that I am on the other side of the table as an employer, I realize that I shouldn’t have applied for so many companies and wasted the time of so many people. I should have fixated on a decision and then gone for that rather than fishing around for offer letters. Nevertheless, I tried my best to ensure to give back to the people involved as much as possible, so that I can try and compensate for the time that I wasted for them. For instance, apart from helping Rubrik hire so many people, I also helped the recruiter who connected me with the trading firms get a lot of resumes from IITs so she also ended up hiring some great people.

Finally, when I turned down Rubrik’s offer to start Cogno, here is the email I received from Mr. Ashish Gupta, the Head of Rubrik India:

Ashish’s email turned out to be extremely useful for me. My parents were totally against me starting up because they felt that I was being over-confident leaving such high-paying job offers. But as you can see from the above email, Ashish wrote “Our doors are and will always be open to you”. I showed this to my parents and they became quite happy that I have a backup option now in case the startup doesn’t work.

I would like to reiterate that it was extremely naive on my part to consume so much time of so many people in the recruitment process. I was also worried and felt extremely guilty that I have possibly wasted a job that someone else could have got. However, I think I compensated for both of these points by referring a lot of people at these companies who ended up joining. And today, my startup Cogno employs about 150 people and so, I am glad that by not going for the jobs, I have created more value for the country in the form of employment, taxes, etc.

To sum it up, the best way to apply for off-campus is:

  1. Find out the best companies, and reach out to them via their careers portal/email.
  2. Connect with the relevant recruiters who you can easily find on LinkedIn.
  3. Be extremely well prepared for the interviews.

Some of my other posts: