Final Report Placement
Final Report Placement
Final Report Placement
Department of Computing
MEng Joint Mathematics and Computing
Author: Managers:
Andrei-Bogdan Puiu Manuel Ferreria,
ap8415 Agnieszka Pachuta
CID: Imperial College Tutor:
01063065 Dr. Fariba Sadri
Contents
1 Company Overview 2
2 Team Overview 3
2.1 Google Ads . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
2.2 My team - AdWords for Video EngProd . . . . . . . . . . . . 3
3 Project Description 4
3.1 Background . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
3.1.1 Dapper . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
3.1.2 Our product . . . . . . . . . . . . . . . . . . . . . . . . 4
3.2 Motivation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
3.3 Solution . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
4 Project Management 6
4.1 My Work and Contribution . . . . . . . . . . . . . . . . . . . 6
4.2 Project timeline . . . . . . . . . . . . . . . . . . . . . . . . . . 6
5 DoC Courses 8
5.1 Software Engineering Design . . . . . . . . . . . . . . . . . . . 8
5.2 Pintos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
5.3 Object Oriented Programming . . . . . . . . . . . . . . . . . . 8
6 Placement Benefits 9
8 Conclusion 11
References 12
Appendices 13
A Manager approval 13
1
1 Company Overview
Google is an American multinational technology company which focuses on
Internet-related services and products. It is one of the most well-known com-
panies in the world. Its core, and most ubiquitous, product is Google Search,
but the company also has market-leading offerings in many domains. It is
almost impossible nowadays to go one day without using a Google product,
such is the impressively vast array of areas in which Google has interest.
Google began in January 1996 as a research project by Larry Page and Sergey
Brin, back when they were both PhD students at Stanford University in Stan-
ford, California. They developed a new system for analyzing relationships
between websites, called PageRank, and used it to create a new search en-
gine. Initially called ”BackRub”, because the system checked backlinks to
estimate the importance of a site, it was eventually changed to Google. The
company itself was incorporated a bit over 20 years ago, on 4 September 1998.
The company’s rapid growth since its incorporation in 2004, driven by its
highly successful advertising model, has led to the development of a large
suite of products, as well as a number of technological acquisitions. Nowa-
days, Google offers solutions in domains such as video sharing (YouTube),
cloud storage (Google Drive), mobile operating systems (Android), Internet
browsers (Chrome), language translation (Google Translate) and many more.
2
2 Team Overview
2.1 Google Ads
Google Ads (previously Google AdWords) is an
online advertising platform developed by Google,
where advertisers pay to display brief
advertisements, service offerings, product listings,
video content and generate mobile application
installs within the Google ad network to web users.
3
3 Project Description
3.1 Background
3.1.1 Dapper
Google services are mostly implemented as complex, large-scale distributed
systems. These applications are constructed from collections of software
modules that are developed by different teams, perhaps in different program-
ming languages, and could span many thousands of machines across multiple
physical facilities, all interacting with each other.
The proxy uses the trace ID of a request to determine the backend to which
to redirect it. A team which wishes to test a new release of its product can,
as part of its integration test, instruct the proxy to re-direct traffic from a
4
particular trace ID from its production system to its system under test, and
then associate that trace ID to the artificially-generated requests of that test.
3.2 Motivation
Our product was adopted by a lot of teams inside Google. This created
concerns in terms of scalability and extension:
3.3 Solution
This led to a need for creation of a system which could gather data about
the proxies, and monitor what was happening. My project was to design and
build such a system.
The system has two major components: data gathering and data vi-
sualization.
To gather the data, the proxies were made to record the requests going
through them, and generate several data points which were considered use-
ful, namely for data per-proxy and per-test (with each test identified by a
trace ID).
This data was then stored to an internal database, and various charts and
tables were generated from it and displayed in a dashboard.
Since each team wants to know about its own proxies, the project was de-
signed to be able to produce systems which work independently from one
another, for each team’s proxies.
5
4 Project Management
4.1 My Work and Contribution
For the 4 months of my internship, I worked solely on this project, under my
two managers. I was given full ownership of the project, along with a set of
objectives I was expected to achieve during the internship.
All the changes to the Google codebase related to the project were made
by myself. Every contribution was then subjected to a code review process,
where usually at least 2 other engineers ensured my code met quality stan-
dards. One of them was usually my manager, while another ensured that the
code adhered to language-specific standards (known as a readability reviewer.
In the design process, all the main choices were made by me. I also drew
upon the initial project proposal from Agnieszka for ideas, and consulted
with my managers for feedback, either directly or in our weekly scheduled
one-on-one meetings, to ensure product quality and that no bad choices were
made, or good options overlooked.
I analyzed the main design choices for the project, analyzing the pros
and cons of each possible approach. I discussed these with the engineers
close to the project, and decided on the most appropriate solutions.
6
I had 4 main high-level goals to achieve: data for proxies, data for
tests, infrastructure, and integration with Google’s testing systems.
For each feature, there were also extensive unit tests added to ensure
the stability and correctness of the code.
All the work was carefully documented, so that the design and im-
plementation were easy to decipher for any engineers who wanted to
maintain or extend my project, or simply to understand it.
7
5 DoC Courses
In my three years of undergraduate education at Imperial College, I became
a very capable engineer capable of working at the same level as my more
experienced work colleagues. I felt that the DoC courses and projects had
a big impact on my development and skill set. I mention a few of the most
important ones to me that helped me throughout my internship.
For me, all of these things made this course extremely valuable, and helped
bridge the gap from programmer to software engineer.
5.2 Pintos
Pintos was the first project I worked on in which I didn’t start from scratch.
As a result, I developed the ability to quickly understand large codebases,
which helped me navigate through the immense amount of code at Google.
Another aspect in which Pintos was valuable to me was the low-level as-
pects of it, which improved my understanding of programming as a whole.
Finally, the difficulty and tight time frames helped me improve my speed
of coming up with, and coding, solutions to intricate problems.
8
paradigm, it’s an invaluable skill to have. In addition, its focus on Java made
it one of the languages I am most proficient in.
6 Placement Benefits
When I applied to Imperial’s JMC program back in 2014, one of the main
points of attraction for me was the industrial placement experience. I felt
that working for 4 months in my field before graduation would be extremely
beneficial for me, and aid me substantially in my progress towards becoming
a software engineer. Having now finished my placement, my belief has only
strengthened that the experience is one of the most valuable in the degree.
• There are standards for each programming language used, and some-
times team-specific standards too
I also gained a sense of how to work as part of a large team, and collaborating
with an even larger set of people. While at Imperial the projects were geared
towards working on the same project in a small team, in the workplace the
situation was different. The role of my teammates wasn’t necessarily to in-
tervene in my work, but rather to help me build my understanding of things,
and make sure that my project was of a high quality.
In the end, this also meant that ownership of what I built, both in suc-
cess and failure, was mine, which gave me a sense of responsibility in which
I thrived. I was able to take control of the design process, and build all of
the features myself from the ground up.
9
I also learned how to deal with the 5-day working schedule; as while in
university one can usually pick and choose when to be more involved and
when not to be, at Google I needed to fulfill my work obligations, and spend
at least 8 hours every day working. Unlike most companies though, Google
was quite flexible about how those hours were worked, which allowed me to
tailor my schedule to create a balance between my work obligations and my
personal life.
7.2 Competence
In the first few weeks of being employed at Google, there are many talks that
introduce the newly-employed into company culture and practices. Also, sev-
eral trainings on issues such as privacy and confidentiality are compulsory.
At team-level, the manager instructs a new employee in order to familiarize
with the project, the team and the codebase.
7.3 Integrity
At Google, honesty and integrity are highly-prized values. Everyone is open
to receiving feedback, even if negative, as long as it’s delivered with positive
intentions; employees are encouraged to speak up, including to higher-ups,
10
without any fear of retribution. It’s also common practice to credit all the
people who aided in developing a project. In my case, I made heavy use
of the work of another engineer, and also contributed to his work myself; I
made sure to give him the appropiate credit.
7.4 Environmental
Google highly values being eco-friendly. Recycling containers for all the main
types of waste are placed all over the workplace (at least 2-3 of each per floor),
and all of us are encouraged to try and recycle all our waste. Google min-
imises paper waste, by having a fully paperless system for administrative
issues, and not using any sort of paper containers. Most of the rooms have
motion detectors so that the lights are only when needed, and a similar sys-
tem is used in the bathrooms to save water.
8 Conclusion
The placement at Google Zürich was an immensely valuable experience. It
gave me the sense of what it is like to work in industry, and I can say it has
prepared me for making the step to full-time employment.
11
References
[1] Google Wikipedia
https://en.wikipedia.org/wiki/AdWords
12
Appendices
A Manager approval
13