QnA

Varun Gupta: It's about designing systems. Everybody can code, right? You can just use stack Overflow if you know what you need to do. But to build systems, you need a good amount of knowledge on computer fundamentals, a good amount of brainstorming and you need to know how to develop highly scalable and extensible systems. Engineering is different from just writing code. So working on a project is a must to understand what software development or software engineering actually is. Similarly, for the machine learning domain, it’s about the entire pipeline from data processing to making your models work well for the problem along with the feasibility of running it on-device or on the web. It's not that you have to get an internship to explore IT. You can also explore it through open source. There are so many organizations like elasticsearch and tensorflow and all that are open source, so you can probably contribute to them and see if they work out well for you or not.

Read about Varun Gupta's journey here

Varun Gupta: As an intern, there are no design roles as such. The Intern is just given specific tasks. You'll probably be working under a mentor who has divided the project into multiple small tasks for the interns. The idea is to 'let the intern know a well-defined task and then gauge his/her performance on that task'. So if you're able to do well in that task, more abstract tasks are given to check the person’s analytical and problem-solving skills. And after sufficient time, the level or complexity can be increased and the interns might get some tasks where they'll have to figure out their own way into providing the solution for that particular problem. The expectation for an intern is to basically just write good quality code, do the assigned tasks and just keep pushing up the bar so that you are being recognised in the team. It’s a bonus for you if you can indulge in some team conversations on design and contribute to reviewing other’s code. The expectation for an intern is to basically just write good quality code, do the assigned tasks and just keep pulling up the bar so that you are being recognised in the team.

Read about Varun Gupta's journey here.

Harpinder Jot Singh: Software development life cycle is mainly started by planning a specific project, then team discussions, followed by architecture layout, and all of this is divided into subparts and sub-tasks, and milestones. In sub-tasks, designs are laid out and approved via seniors. Implementation and testing are done after this. If there are any bugs then remodeling is done. So main roles under SDE intern are- System engineer, UI/UX, Automation engineer, bug fixer, testing engineer.

Read about Harpinder Jot Singh's journey here.

Varun Gupta: 1) Building a specific functionality, or Integrate some particular logic- The Mentor would transfer knowledge to the intern about the task and the intern would just be expected to write code for that particular thing. In case of an abstract task, the intern would have to figure out different ways to approach the problem statement and conclude on the best one. They would generally need to align the team on why some approach is better than the others. 2) Infrastructure based: Setting up some well-defined infrastructure for the service or the application.

Read about Varun Gupta's journey here

Varun Gupta: For someone who's new to coding, you just have to choose a language you feel comfortable in. The major languages that people choose are C++ and Java. Both of them are good enough for competitive coding. You can solve problems from different platforms in your specific language like C++ or Java and then you can look at its documentation or go through answers on Stack Overflow to get a better hold of the language. That is the best way to learn coding.

Read about Varun Gupta's journey here.

Harpinder Jot Singh: Take up projects which fascinate you. This will prevent you from getting bored. Keep yourself updated and try to apply and solve problems in daily life. This will give you a motive to solve problems.

Read about Harpinder Jot Singh's journey here.

Varun Gupta: In the first year, I would encourage people to focus more on the CGPA firstly, because that is a time when you can actually improve it a lot and it becomes difficult to improve it later on. Enjoy college life and build connections. But at the end of the first year, you should be able to write good and acceptable code in a particular language. The next thing is to learn data structures. At the start of 2-1, you should probably start exploring what data structures are and what their applications are, the time complexity calculations etc. So in 2-1, unless you're very keen on doing competitive coding, you can just do proper research into what all data structures, algorithms are there and just try and improve yourself on those. By 2-2, start exploring websites doing Competitive Coding questions on multiple topics including dynamic programming, graphs, and all of those complex data structures.

Read about Varun Gupta's journey here

Varun Gupta: Arrays, strings, linked lists and trees are a must. Dynamic programming, graphs and binary search are very important topics. These are asked in the interviews for every high-paying company. Topics like two pointers, sliding windows have a lot of thought-provoking questions. For company wise questions, I think GFG provides Archives for every company and you can probably go through them for the specific company you are interviewing for, but ideally questions won't be repeated unless you're very lucky enough. Begin with arrays, strings, linked lists, sliding windows, two pointers, and then go for complex algorithms or complexity structures like DP and graphs because they are the ones which will require extensive thinking and a good amount of understanding. If you pick them up at the beginning, you probably will end up losing motivation.

Read about Varun Gupta's journey here

Varun Gupta: Solve the right complexity questions. While starting out, you should solve beginner questions and get them accepted. That “accepted” feeling is what keeps you motivated. Then the other motivation is that one day you might get an intern!

Read about Varun Gupta's journey here.

Harpinder Jot Singh: Keep yourself updated and try to apply and solve problems in daily life. This will give you a motive to solve problems.

Read about Harpinder Jot Singh's journey here.

Harpinder Jot Singh: It helps in giving you a push and connects you with the people who can guide you properly and you can actually learn a lot from them. You tend to bond with like minded people and who further aspire to work in the same industry as yours. Thus, the environment is definitely useful to help you grow professionally and personally.

Read about Harpinder Jot Singh's journey here

Varun Gupta: Hackerearth and CodeChef have a good number of resources. They explain the data structure in detail, and then they have a lot of questions on them. These platforms are ideal for a person to learn and get a good grip on the various data structures and algorithms. When you're just starting, you can just practice easy questions. Doing questions accurately will improve your confidence. That is where you will not lose motivation where a lot of people do lose it. When you are confident about writing code given the algorithm, you should take a further step and start participating in contests on Codeforces. That will help you get a stronger command and enable you to work through solutions in competitive situations and as fast as possible.

Read about Varun Gupta's journey here.

Mohit Kurani: Hackerrank (beginner) -> CodeChef (intermediate)-> CodeForces (advanced)

Read about Mohit Kurani's journey here.

Varun Gupta: That actually depends on your interviewer. The company doesn't give the interviewers a specific list of questions that “hey, you have to ask these”. So the interviewer selects a specific set of problems that he/she wants to ask. So it could be a Leetcode hard question too. But that ideally should not be the case because Leetcode hards are not doable if you're seeing the problem for the first time. So being asked that in an interview would just be bad luck. I would say focus more on the mediums and a little bit on hard.

Read about Varun Gupta's journey here

Varun Gupta: Hackathons don't help you at all but timing is definitely important. So like when you get good at CC i.e- you can write code cleanly and get it accepted in the first go, that is the time when you should start timing. Or when the internships are just two months away, whatever is earlier. Do problems on InterviewBit. It has a timer inbuilt for every problem. You can see how much time you're taking to solve that particular problem. I was initially, just focusing more on learning algorithms and practicing on CodeForces. But then, when the internship season started coming I started doing more InterviewBit to get a sense of where I am on everything.

Read about Varun Gupta's journey here

Harpinder Jot Singh: Yeah, watch a day in the life of engineers on YouTube. Explore open source by selecting any project on GitHub which are real world projects. Interact with people on GitHub Then you’ll get some idea about what all of this is really about and if you are interested in it or not.

Read about Harpinder Jot Singh's journey here

Varun Gupta: From SDE intern to Research intern, no. As an SDE intern, you are expected to work as an SD intern in that role only for the next six months. You cannot switch to a research intern. But when you're considering a full-time role, then you probably can tell the manager that you're interested in a research engineer role, and he might schedule interviews for you for the same. For that role, it's not a direct conversion based on the internship performance.

Read about Varun Gupta's journey here

Varun Gupta: The profile really does not matter for most of the companies because they usually have these coding rounds so they don't look at your profile at all. All that matters is just the performance in the coding rounds and if it's in the top X number students that they want to shortlist, then you'll be shortlisted. For some companies like Google. (If I don't know if Google comes for the internships now it used to a year ago), they do a pure resume based shortlisting process. So there your profile would definitely matter because they kind of see a mix of CGPA, your projects, And a lot of things. (You don't know what they see, but they see a lot of things. :p)

Read about Varun Gupta's journey here

Harpinder Jot Singh: Develop a GitHub profile and update your work regularly. Apply to as many companies as you can for internships. Keep your basics clear. Apply on LinkedIn job search posts for application. Ask for referrals from your alumni in the same company and also ask HRs and recruiters on Linkedin telling them your interests and if they have some suitable positions for you. Checkout the Github repository named ‘Hiring without white boards’ - which lists companies having different procedures for recruitments than the normal DSA rounds. Regularly keep a watch on job postings of the targeted companies. Keep changing your resume according to the job requirements. Take help from your seniors for reviewing your resumes.

Read about Harpinder Jot Singh's journey here

Harpinder Jot Singh: Courses like DSA and OOP are mandatory. In my opinion, DBMS isn't that necessary. Network Programming gives you a fair understanding of the Unix OS and thus is useful. Cloud computing, NNFL, Information Retrieval, etc. courses provide projects which can also be put on your GitHub repos. So take DELs which have good projects in their coursework and will further help you to improvise your Github profile.

Read about Harpinder Jot Singh's journey here.

Varun Gupta: For internship, OS, networks are not important because they are done after the Internship season is over. For the internship season, the most important courses would be DBS and OOP. However, they usually don't ask SQL unless the company is very dependent on it. For placements, OS is probably important because they might just ask you about caching and memory management, “How does the in-memory cache really take place and all of those things?” Only Cisco is the company which will ask you networking questions. Apart from that, no other company is asking networking questions.

Read about Varun Gupta's journey here.

Mohit Kurani: I was lucky as I applied for these two companies (Google and Uber) which only focused on DSA. There are other companies that see OOP, Networking etc so it is better to prepare for them too. But apart from whatever your professor or course teaches you, ultimately you have to prepare yourself.

Read about Mohit Kurani's journey here.

Varun Gupta: CG definitely would play a good role. There are companies which shortlist people based on the CGPA. And there are companies which do not take in CGPA into consideration, but you should prepare for the worst. I would say, maintaining it above 8.5 would be a good thing. Some companies have particular thresholds. People below. 7 cannot apply 7.5. If not, then put more impact on your profile.

Read about Varun Gupta's journey here.

Harpinder Jot Singh: CG’s main role in this sector is only to clear cutoffs. Some companies choose students based on CG. Maintain a CG of 8 to get a decent internship. Students with high CG sit in 4-1 for placements whereas with low CG sit in 4-2 after improving their CG by going on PS2 in their 4-1. Having a good CG would always benefit you in one way or the other, but not having one would not close the doors, it is just that you would have to work on average harder than the person with higher CG which you can do so by having outstanding projects, internships, research-related work, etc.

Read about Harpinder Jot Singh's journey here.

Varun Gupta: It's completely based on CGPA. If you are applying in the first semester, it is usually low and 8-8.5 because most of the people, especially CS people, stay on campus and sit for placements. But if you are planning PS in the second sem, then you would probably want to have somewhere in the range of 8.5 to 9 to have a very good PS. We don't know the team we will be joining. There are a lot of teams so we only get to know the teams once we join. It's not even mentioned in the offer letter, so you don't know the role beforehand. It is not possible to switch for the internship because you cannot just say that. “I don't like this team in one month of working here”, right? You need some good amount of work experience to say so. But if you are getting converted to a full-time employee at the same company, you could talk to the recruiter and they might help you join a different team.

Read about Varun Gupta's journey here

Varun Gupta: It is not fixed because every company has a different number of slots available and even for a company, it depends on how good you're doing there and if they feel you're a strong fit to their team or not. If they feel everybody is a strong fit and they have those many slots available, then everybody would get a PPO. There's no bar for that. Things to keep in mind while aiming for a PPO: From the very beginning, start communicating with your manager. I was able to kind of build trust with my manager. I used to say “I don't have work, give me work.” That's why over time, I was able to gain his trust and received good projects over time. Secondly, you should focus on writing production level code so that when you give your code for review, it should probably go through in one or two attempts. The third thing is that you should always participate in discussions on design and other projects that are going on within the team. That way you get the limelight and recognition within the team. This gives you a good point to probably present to your PPO conversion person in charge. And one thing that I probably did out of the way was to do some code reviews for the engineers who were in my team. I looked into them time and again. In this way, I was able to learn from their code. Moreover, if you are able to provide some comments on how they could improve their code quality, that counts as well.

Read about Varun Gupta's journey here

Varun Gupta: For the conversion process, there are some conditions here at Amazon. Firstly, there is an internal team review, like if your mentor likes you then they have a word with the manager that “we want to have this person”. If the manager and mentor have voted yes, then you'll have a debrief conversation with a third person (called a bar-raiser at Amazon) who is not involved with any of the activities that you have done during an internship. He's the person you review your entire work with. You write documents highlighting what all work you've done, what all code reviews you have done, what all codes you have written. This doc is provided to the body comprising the manager, mentor and the bar-raiser. If the bar-raiser approves you then you get the offer. If he feels a little skeptical about your performance, there might be some interviews. They might conduct a couple of interviews to test your data structures and algorithm skills. This is the conversion process for a six-month intern. For people involved in a two months internship, the conversion doc doesn't play a huge role. It's just the interviews that take place.

Read about Varun Gupta's journey here

Varun Gupta: For off campus internships, you should just keep on looking at the career site of every company you are aiming for. They put up some openings regarding the internships for the summer. You can also contact people working in those companies. The better way would be to apply through a reference because your application would be escalated quickly. You might have an online interview. The complexity, or the hardness of securing an off-campus internship would be a little more than on campus sounds. Because on campus they have a particular limit- they probably want to hire five people but off campus they'll hire you only if you're good enough.

Read about Varun Gupta's journey here

Varun Gupta: Most corporate firms don't actually hire for research roles because they obviously prefer people who have done Masters and phds. But some companies like Amazon ML, Microsoft Research and American Express have people working under the research engineer profile. For Amazon ML, you can probably apply through PS2. I've seen people at Bits specially doing the thesis at Microsoft research. So if you really want to get into it, you can let go of your PS2 and take a thesis over there. But I haven't really heard of anyone getting a full conversion there. For American Express again, you can apply through PS2 for the research role. I think PPOs there are easy. So if you get American Express, you can definitely continue working there as a research engineer. For the first semester, the CG cutoff is quite low I think around 8.4-8.5 would do. For the second semester around 9-9.2, something like that because a lot of people are interested in research.

Read about Varun Gupta's journey here

Varun Gupta: You can probably pursue an MBA and go to a business role (like a leadership role or into consulting). The other option is that some people just quit their jobs and continue freelancing. Third thing would be to join an ed-tech startup and continue in a teaching role that is also a high paying job. People are releasing competitive coding videos or videos on system design and gaining popularity. So that is one area which is booming. If you're interested in entrepreneurship, you could probably start your own business or startup.

Read about Varun Gupta's journey here

Harpinder Jot Singh: Start Competitive coding as soon as possible. Don't do it just for getting the job and try to apply it in real life, this will help you to gain interest in your work. For example, when working on websites using Javascript, visualizing the HTML structure as a tree (DOM) and thinking to optimize whatever you plan to do can give you a feeling of satisfaction and the Aha moment that you get is totally worth it. Preserve your work. Documentation on GitHub is really important. Don't take things for granted as you have to work hard to get the job and don't think too much about your CG if it isn't that good. Apply to as many places as you can without thinking much about whether the company will take you or not. Don't hesitate to apply for internships.

Read about Harpinder Jot Singh's journey here