Welcome back to Episode 2 of Beyond The Semesters, an initiative by Coding Club, IITG in collaboration with Student Alumni Interaction Linkage(SAIL), IITG where we interview and try to get a peek into the life and work of IIT Guwahati graduates currently working in fields of research, development and others.
This time we have with us Shreyas Basarge from the class of 2015. He is a Computer Science graduate and currently works as a senior software engineer at Facebook. He also has experience working in Google as a software engineer and as an intern at Facebook.
We interviewed him regarding his experiences as a software developer at different firms in the US. He shared with us many insights into the industry and gave valuable pieces of advice for all the students who wish to excel in the software industry.
The following is what beholds beyond the semesters !!
Q1 You presently work as a senior software engineer at Facebook. Can you tell us more about your work in general?
At Facebook, I used to work with operating systems. But recently, I have switched fields to work in Machine learning infrastructure.
Q2 Since you just mentioned that you had switched fields? Can you tell us about the difficulties you faced? Did you have any prior knowledge of the field you switched into?
A few courses at IIT Guwahati had given me a theoretical insight into machine learning. So, I didn’t face much of an issue. But with more exposure; I realised that it boils down to general software engineering, logical thinking and the ability to identify problems. Basic computer science fundamentals are always helpful. Although the courses we studied in college seem different but on taking a closer look we realise that they all are similar on a fundamental level. If you can identify what is important and what has a business impact, you can easily switch domains. I have switched teams almost every year in my career, as I was excited to try out different areas and I didn’t feel that it hindered me. But yes, there is a definite advantage in staying in one field for a long time as you gain a lot of experience and become the go-to person in that area. But there are pros and cons to both.
“If you can identify what is important and what has a business impact, you can easily switch domains.”
Q3 You have worked in the industry for quite a long time now. How does your workload now compare to the workload when you were just starting out? What advice would you give to engineers who are just starting out their careers?
I think the workload becomes less hectic as you become more experienced. Obviously, in the beginning, you have to work a lot as you have to learn more. Even I used to work a lot when I started out in Google, but with time you realise that not all work has equal value. Initially, we try to resolve the problem entirely on our own, spending a lot of time in the process. However, with time you realise that sometimes it is better to ask someone for help. But if you are debugging a complex entity yourself, you gain a much more significant idea of the code-base. Although you could have done much more valuable things in that time, that time is not wasted. Both these approaches are not wrong but as you gain experience you learn to manage your time better and hence you are able to make the appropriate choice depending on the situation.
The type of challenges changes over time, but the amount of raw work you do decreases. It becomes more and more managerial and requires strategic thinking from a key business point of view. Now you have to think more on the architectural level of the software than on a single component level which you used to do earlier. The input and output of your work don’t always have a linear relationship. Identifying the crunch time, in which you build a foundation of hard work, is very important as it sets you up for the future. Try to grow with people around you. I mean, invest in your junior developers so that they will take a lot of responsibility into their hands when the time comes, so you are freer to think on long-term strategy.
Q4 How was your switch to corporate life after college?
I was very happy when I was placed in Google. But then I realised that people were also applying off-campus and negotiating salaries, team and their locations as well. I did not have much of an idea about how many choices I have. I happily went to the team that I was allotted to. I was given the backup and restore team in android. I was in that team for around 1.5 years in London.
After that, I moved to the US where I liked a team working on Google Assistant, but after joining the team, I realised that they were working on the UI, so I left the team within two weeks. Then for a year, I was in a team developing google assistant for a new device but soon we ran out of product vision. I wasn’t mature enough to create my own product vision. For three months we were sitting idle and then I got frustrated. At that time, Facebook approached me, and I decided to leave Google and join Facebook.
Before leaving I discussed all my issues to my manager to which he agreed and said that I should’ve informed him before. He would have given me a better team under him. It was then that I realised the importance of communicating our problems. People do try to fix your problems.
My job at Facebook was technically challenging, and I didn’t have much expertise in it either. I got the freedom and opportunity to do interesting things there. I worked on operating systems there as well and also filed for two patents. Then later, I switched to the ML team and immediately got a chance to work on: on-device ml, federated learning etc.
Q5. How was your experience working in Googleplex, the headquarters of Google? What differences do you see in the working environment of Google and Facebook?
It was a fantastic experience at Googleplex. I hardly used to stay at home at that time as the office had all the facilities you could ask for. You could even do your laundry over there. It had everything, in summation an excellent environment for working. It would be best if you balanced out your time correctly. Otherwise, it won’t set a good vibe for others, and you will end up with a not-so-good reputation. Then after some time, you will realise that you are behind and clueless on new stuff that you could have contributed to.
Then to answer your second question, I would say there is quite a lot of difference between the two. Google values that you do technically complex stuff, whereas Facebook values that your work generates business value. Facebook focuses more on expanding the business; they value technical skills too, but they have more of a commercial approach, whereas Google focuses on solving complex problems. In Facebook, the culture is such that the tech is considered as only a means to an end. The quality of code in Facebook might not be that good but would deliver speedy results. Differences are also there in the teams of both firms. For example, the technical skills of the infrastructure team of Facebook are quite above that of the Product team of Google. But overall, the code-base is better in Google, whereas the speed of iteration and freedom to work and experiment is more in Facebook.
Q6 You may have friends working in India. How does your experience of working in the US compare with those who are working in India?
Honestly, there is not much difference in Big companies like Google, Facebook; it is more or less the same. In my opinion, The only difference will be that as the offices in India are smaller than in the US, hence the choice of projects is limited. But both India and the US have great engineers who are doing good work on various projects. When in India, I would recommend one should explore startups or start something of their own. It is not possible to do all this in the US due to visa limitations.
Q7. If somebody is looking to work abroad, what would be your advice for them?
I think the surest way to go abroad if you really want to is to join Amazon or Google and work there for a year or two. These things happen primarily through connections, that is, you know someone who works there so that they can refer you. But I don’t think that matters a lot. It’s important that wherever you are, you work hard and work on impactful things.
Some excellent startups are working very brilliantly in many new and innovative fields. I would suggest growing with these startups, as it provides great learning in terms of problem-solving skills.
Q8. Many of our colleagues think that life is all sorted after getting a job in the FAANG companies. Still, when we go through LinkedIn, we realise most of them work in such companies for 2–3 years and then shift to smaller startups or leave it for other companies. So why do they do it?
So what happens is how do you compare yourself? You compare yourself with the people around you, right? So once you get into Google, you realise everyone is in Google, so you try to do something different, so you either fight for promotion or go to another company where you are getting a more significant role. So you always try to differentiate yourself. So you will never get this sorted feeling, but if you are content with wherever you are, you are obviously sorted. You remain in a single company. In general, there is a human tendency wherein he wants to be above average or in the top ’n’ percentile. So they work even harder. But you have to realise that the size of the pie is not fixed; that is, you can grow the size of the pie and benefit everyone. If you are in a team where there is a lot of competition to get a promotion, then that is not the ideal place to be in. You should always try to be a part of a rising tide that is to be in a position where if you are growing, then your subordinates and your supervisors are also growing. Like everyone is getting uplifted, and this generally happens when there is good business taking place.
“You should always try to be a part of a rising tide that is to be in a position where if you are growing, then your subordinates and your supervisors are also growing.”
Q9 You got a high CPI of 9.81. How did you manage that along with other activities? What advice would you like to give to juniors?
Attending classes helped me a lot, trying to understand the concepts rather than just doing it for its sake. Sometimes, a professor won’t teach the idea to the best level but still try to read books about it and understand. Make great use of peers, discuss topics. I primarily relied on my classes, and I attended almost all of them. Some days before the exam, we also used to study in groups which helped me a lot.
Q10. You came 12th in ICPC regionals. How was your journey? Did CP help you in your job? Any advice for juniors?
The journey was quite good, I must say. My team was good, but we were not competitive programmers. We just used to understand the algorithms theoretically. But yeah, the practice I did after the second year helped me understand the concepts and implement my ideas in code very quickly. I believe it is vital to implement the algorithm in your brain very quickly in a bug-free manner.
To juniors, I would say practice as much as possible, give contests on codeforces, leetcode etc. Leetcode is an excellent tool and is used very widely in the industry. It is like the go-to place if you want to switch jobs or prepare for interviews. The ability to reason out why your code is correct is very vital.
For interviews (intern level), I would say yes, DSA will help a lot. You should have the ability to convert ideas into code, work on corner cases.
But I would say CP wouldn’t have much of an impact on your job. Yes, it benefits in interviews, but nobody asks questions that are as difficult as those asked in competitive programming. They usually ask simple questions about DFS, BFS, convert linked lists to a tree etc. I also think the fundamentals of computer science are much more helpful. Fundamental courses like the theory of computation are much more important. In those courses, you learn stuff like identifying which problems are solvable and which problems are not, systematically reducing big stuff into smaller ones and other fundamental skills.
Q11 Is there any kind of office politics in terms of promotion?
Of course, to some extent, there is. At the end of the day, if two people are supposed to be promoted, it always helps that you are likeable. Likeable in the sense that the person who is selecting you should feel that you can be trusted and that you can deliver on work and are able to find new opportunities. You need to go the extra mile. You must also communicate why your work is important because at the end of the day, what you tell your manager is what the manager tells his manager in a shorter form. Try to make their life easier; for example, if someone in the team is struggling, if you can mentor him and help him improve, this would make the manager’s life simple. There are multiple ways to be likeable. Try to think and do what is beneficial for the team, and then generally, your status will also improve.
Q12 We talked to some of the alumni, and they advised us to keep a good connection with our peer group and get to know your seniors because it might not seem important right now, but later on, these connections will help you a lot. So what do you think about this?
Yeah, I think it is true. Not just for college seniors but everywhere you go in life, you should make deep personal connections. You are in college right now, so make deep connections with your peers and your seniors right now, but when you start to work, you must make it essential that you make such connections in your workplace. Be genuinely interested in people and try to help them. When you do that, they will reciprocate by helping you. I think maintaining good connections is super helpful.
-Written by Harsh Agrawal, Aditya Pandey and Vighnesh Deshpande