Inside The Internships: Google
Welcome to Inside the Internships, a series brought to you by matrix IIT Guwahati, where we talk to you about internship experiences, the inside outs and some preparation tips and tricks to set you up for your upcoming internships.
Today, we have Kartikey Singh, a final year mathematics major at IIT Guwahati. He completed his internship this past summer with Google and also grabbed the pre-placement offer.
1. How was your first day at the internship? How were your teams assigned?
So let me just start by discussing how my teams were assigned. During the month of February or March, we received a form in which we were asked to fill in our past experiences, what are projects we have worked on, what are languages which we are skilled in and what are languages and projects we would like to work upon? What are the things you know at google and so on? So we were allotted the projects on the basis of the responses to these forms. Let me just clarify that although they ask for your preferences, it may not be necessary that you would get the preferred project because they might not be available. In my case, I wrote that I am very skilled in C++ and I have worked in C++ in the past, so my project also involved a lot of C++, so yeah, I got lucky. We got to know about our teams on the first day of our internship when we met our hosts and co-hosts and they discussed our projects and what would be doing for the next 12 weeks.
2. So how many co-interns had you had in your team? And like what was your team? Tell us something about your team.
My team was the data insights and core engineering team in the Google Cloud division so I had 4 interns in my team, but all four interns worked on separate projects. So despite being 4 interns, we worked on separate projects with our separate hosts and co-hosts. Hosts and co-hosts are basically like mentors.
3. Tell us something about your project. What are your initial thoughts when you were introduced to the problem statement, considering that it’s a problem statement provided by the Google team?
My problem statement might sound a bit scary. So my problem statement involved writing a static analysis tool that would be used to analyse SQL source code. Static analysis is a method in which we analyze source code. So my project was to write a static analysis tool that would analyse SQL source code to enforce a tiered architecture in a data pipeline. Basically, I had to construct the abstract syntax tree representation of SQL source code and use this abstract syntax tree to perform certain analyses. I was really scared for the first couple of weeks. It took me around one and a half to two weeks to grasp what I had to do with my project. So my project basically wants some knowledge of compilers because as I mentioned abstract syntax tree, which is the topic that is covered in compilers courses but as a student of mathematics and computing, we didn’t have a compiler course. That was a bit challenging for me as well.
4. How did it turn out to be later, initially, as you said you took around 1 to 1.5 weeks to digest what you had to do and get acquainted with the problem statement itself. Over the period how was the problem statement and how did it come out?
There are a lot of resources that we can use to learn at Google. So my hosts and co-host helped me a lot during the first 2 or three weeks after which I was able to understand what I have to do and after I understood my project it was mainly smooth sailing. I was able to complete my project well before the time that I did some additional work as well on my project.
5. How was the workload? How many hours did you work on average in a day considering initially you didn’t know anything about the problem statement, right?
My work was pretty flexible, there are no fixed working hours at Google. So for the starting couple of weeks, I was really scared, so I used to work a lot. During the first two or three weeks more than 10 to 12 hours a day. But after that, it chilled out a bit and it was mainly around 7 to 8 hours a day. I did not work on weekends so I don’t recommend it to anyone. They should not work on weekends.
6. Pressing more on the initial weeks like that was more of a learning phase or that was like the week in which you actually started the work also?
So yeah, the first three or four weeks I remember, I didn’t write a single line of code for the first few weeks of my project. My project also didn’t involve writing a lot of code. fairly small project, but it was complicated in nature as I mentioned earlier. Yeah, so I started writing code around the end of the third or start of the 4th week, and I was able to complete the coding part in around five to six weeks.
7. How long was the internship actually?
So as I mentioned in the beginning, we were asked about the form in which we were asked to fill out our preferences. In that same form, you were asked about what is your preferred duration of the internship? So we were given options for 8 weeks, 10 weeks or 12 weeks. The work of the internship was proportional to its duration. So I chose the 12-weeks internship and based on that response only it was decided that I will work for 12-weeks.
8. Which tech stack did you work on and what are the most common technologies used by Google?
Google usually uses a lot of languages. So mainly the languages used would be, C++, Java, Python and Go. In my case, my project was entirely in C++ and I used certain other tools and technologies which were internal to Google and are not publicly available. I can’t mention them.
9. What concepts of C++ you knew before and what concepts you basically learned through the internship?
So I learned a lot of concepts regarding C++ in my internship. The two or three things I would like to mention are smart pointers, not a lot of people know about smart pointers in C++ which I had to use a lot. So that is one thing and another thing is object-oriented programming. This is not specific to C++, but during software engineering in general, while working at such companies, object-oriented programming is really important. Before working at Google I didn’t really write code in an object-oriented fashion, but during my internship, I had to write very clean, maintainable and extensible code. That’s actually a really important thing.
10. And what suggestions would you like to give to reduce the ramp up time? Like if in your case, what would have been the prerequisite knowledge that would have provided you with a head start?
So as I mentioned, a lot of technologies that are used at Google are internal, so most of the things you won’t be able to learn even if you wanted to. But basically, if you want to get a head start, you can learn about basic software engineering principles like version control, and how to do version control effectively, and as I mentioned before, object-oriented programming is really important in companies like Google. Also, one other thing which is really important is writing code that is clean and maintainable.
11. Can you please elaborate on the meaning of maintainable code? Like clean, we can quite understand. But what is a maintainable code?
I think we can use it terms clean and maintainable interchangeably. So maintainable is basically, for example, after you leave the company someone else would have to look after it. So the code has to be maintainable, and another thing that would be important is writing code that is extensible in nature. By extensible I mean so it is a feature of generally object-oriented programming. Like if you want to add new features to your code it should be really easy to do so without changing much of your existing code. So that is a technique which you must learn. That you can get from practice.
12. Just asking this because since we are discussing on those lines, supposing a person or an intern doesn’t have good knowledge about object-oriented programming then how is the system of the code reviews and what suggestions do you get from your hosts and co-hosts?
So there are very strict and specific style guidelines that are maintained in Google which you have to follow while writing code. You would have access to the style guides and you would have to read this style guide to know how you need to write the code and they’re pretty extensive in nature. And when you submit the code, the code review process is done, so during that code reviewing process people can point out the mistakes you have done, so it’s not really difficult.
13. Describe the hierarchy, like what role does a manager and mentor have in general? In your case, host and co-host, I would also like you to describe what is a host and cohost and what role do they play? What was it like in your case?
So basically each intern is allotted 2 people, a host and a co-host. So the purpose of the host is to work with the intern very closely and they would be guiding the intern and doing code reviews and stuff like that so the host is basically a mentor for you and the co-host is basically another mentor, but they would be a bit less involved. They just act as a supporting host. It generally depends on the interns as well. So for some interns, they were working more closely with the co-host, whereas in some cases the co-host was not involved at all. But in my case, both were pretty involved in the case.
14. So what is the hierarchy in Google? Right from the interns up to where you actually remember; Describe the hierarchy that Google follows?
So that is similar to most companies. So for interns, you would have a host and co-host. So the host or co-host is generally software engineers, so Google has levels such as L3, L4, L5, different various levels of software engineers, and so these software engineers would have managers, engineering managers, engineering directors and so on. This is generally similar to all the big tech companies.
15. How were the meetings coordinated between you and your host and co-hosts? What steps you had to take out to take to reach out to your host or co-host in case you face difficulties or were they proactive to ask?
So during my first week of the internship we, my host and co-host, decided to meet on alternate days. So the schedule was that we would meet on every alternate date till the end of the internship. Hence, it was pretty systematic for me. Also, we can ping the host at any time to call for a meeting. So they were generally very helpful. It was not a big issue for me. In my case, I was the one who reached out to my host and host whenever I had a problem and I would recommend every intern to do so. You should not be shy to ask about your doubts. Whenever you have a doubt, you should contact your host and co-host which would be good in the long run.
16. So it is a saying that at least in India, Google is the only company where you will find the smartest peers. And considering that the host and the co-host would also be smart persons and not doubting the interns, they are also quite smart persons. But in case they face some difficulty or say they think that a particular doubt is stupid or asking that particular doubt might reduce their value points in front of their hosts. How should they reach out? Should they feel this way and what is the interaction between the host and co-host?
Yeah, generally the host and co-hosts are really friendly and they would answer even the stupidest of doubts. So let me just give an anecdote. During the last couple of weeks of my internship, I look back at the chats which I had with my host in the first couple of weeks and I saw some really stupid questions which I asked and it didn’t hurt my PPO chances at all because I got a PPO at the end. So I would recommend not to hesitate to ask even the stupidest questions.
17. How was it like working with Google, describe the company culture?
So Google is generally a company that is known for its good culture. And yeah, I would second that. My team was really amazing. I interacted with a lot of people in my team and apart from my host and co-host and they were really friendly. I just ping them and ask them for meeting them for informal chats as well, and they were really accommodating in every case. So it is really good at Google when it comes to interaction.
Also, Google would also give you a lot of opportunities to present. So for example, our team had weekly ted talks in which people from our team used to talk about any topic which they had an interest in, any technical topic which they had interested in for an hour and it was a very informal session. And the interns of our team also got a chance to present our projects during that ted talk twice.
We got a chance to present our projects at weekly tech meets as well, so Google would give you a platform to showcase your work and that is a great thing I think.
18. Yes, yes it is indeed. So did you also present anything that you did in that ted talk?
Yeah, so during the two tech meets which we did, we explained the projects, what we’re doing, what we’re trying to achieve, and how it would affect our team's work. So this was other than our final presentation and this also helped us during our internship final presentation because we already had the experience of presenting in front of a lot of people.
19. Tell us about two things you like the most in terms of values or moto and two things if they exist in the case of Google that you disliked about it.
So as I mentioned before, the people at Google are really helpful and they would help you anytime they can. So I was able to reach out to a lot of people and they helped me. And no one would refuse to help you that is one thing I learned a lot about Google. Yep, I don’t think I can say anything I disliked about Google. Apart from one thing, the process at Google can be a bit slow. It can be a bit painfully slow. For example, my PPO was delayed by around four to five weeks and that can be really frustrating. that is the only thing I can say bad about Google that I dislike right now I think.
20. But since you got the PPO anyway, so let’s not talk about that stuff. Yeah, So what were the significant things you learned through your internship at Google? That changed you as a person basically before the internship and after the internship at Google.
The most important thing I learned is that it is really important to ask your doubts, no matter how silly they are. Because if you are stuck with your doubts, it would just waste your time. It is better to ask your doubts immediately rather than thinking about them for days and weeks. It would not cause you any good. That is one thing I’ve done. Another thing is collaboration is very important, so I collaborated with members of various other teams as well during my project and that was really a good experience for me. And another thing that is a bit technical, as I mentioned, so before joining Google I used to dread reading documentation. I used to just watch YouTube videos and copy-paste the code from Stackoverflow. And this changed when I was working at Google.
21. So tell us more on this particular last point, reading documentation. As we all know that as college students, we are in a rush, in a hurry to complete let’s say three to four projects of decent level so that we can present them in our CV. But in that process, as you said that you end up copying many of the snippets from Stackoverflow or just watching through or bingeing through some of the YouTube tutorials. How was your experience of reading the documentation?
So the documentation in Google is generally very extensive and helpful. So there are things called codelabs at Google that you can run through, which basically help you to understand the tools and technologies by using real-world examples. So those codelabs were really helpful for us and after that, the documentation is fairly extensive and reading the documentation is a very important skill that I learned there.
22. Would you like to give some advice to the incoming interns at Google? What things should they keep in mind to have a successful internship at Google?
The advice I would give to Incoming interns would be: Internships are about learning, so you can learn a lot of things while you are at Google or any other company for that matter and don’t shy away from learning new things. I can definitely say that during those 12 weeks of my internship, I learned about software engineering more than I have learned in the past three years of my college. So don’t shy away from learning and another thing would be, I’ve mentioned it quite a few times already, don’t shy away from asking your doubts.
Thanks a lot, Kartikeya for sharing your experiences as a software engineer intern at Google. I seriously feel this would help the juniors and the incoming interns at Google. We’ll meet again with another internship experience.
Thanks a lot for reading. Brought to you by Matrix IITG, stay tuned for more incredible and informative stuff.