Heavy usage of Python at Google
Question: Google's heavy usage of Python, is it just a matter of taste or does it give
them a competitive advantage?


Answer: I can't really give a definitive answer, because by the time I interviewed at
Google in 2004 Python was already prominent at Google.

Indeed, there's one apparently attractive explanation that I can definitely
deny: it's not that Google uses Python because it employs so many prominent
Pythonistas -- rather, most "prominent Pythonista" googlers joined Google, at
least in part, because we knew about Python's prominence there (possible
exceptions include Peter Norvig and Jeremy Hylton, but historically Google's
choice of Python predated even them).

That's definitely why I first got interested (my publisher let me know about
the large amount of copies of my book that Google was purchasing -- at first,
I thought of it as a good opportunity to sell my freelance consulting
service...;-), how I was later able to convince Guido to join us, and, I
believe, part of the motivation for such Pythonistas as Greg Stein, Wesley
Chun, Fredrik Lundh, Thomas Wouters, Collin Winters, Jeffrey Yasskin, ...

It all got started, I believe, because the very earliest Googlers (Sergey,
Larry, Craig, ...) made a good engineering decision: "Python where we can, C++
where we must" -- they used (a subset of) C++ for the parts of the software
stack where very low latency and/or tight control of memory were crucial, and
Python, allowing more rapid delivery and maintenance of programs, for other
parts. At the time, late '90s, the choice for the latter role was essentially
between Python and Perl: other scripting languages were either unripe (I don't
think Ruby was around yet, for example) or had other issues and limitations.
Perl was more mature (especially in terms of its ecosystem of available add-
ons via CPAN), but Python was deemed to be more readable and maintainable, and
interfacing to C++ libraries (via SWIG) was easier.

Java came in later, covering an intermediate niche -- and more recently of
course Go was developed (though I don't believe there's much production work
in it yet, as it's still evolving and maturing). Some specialized languages
such as
[sawzall](http://web.archive.org/web/20091222094118/http://labs.google.com/papers/sawzall.html)
are also in the mix for very specific tasks, and of course Javascript is very
important for browser-side work.

Other languages, including the ones that Greg mentioned back in '06, are
either "kind of accidental" or used for other specific tasks (e.g., Objective
C for clients on iPhones or Macs) -- e.g., when Google hired its first system
administrators, those employees inevitably came with very strong mastery of
Perl and Bash, and often used either of those languages to develop some
complex internal system; recoding those in Python (for easier deployment and
maintainability) has often happened. Others (such as C#) may have been in the
mix temporarily due to acquisitions, but, again, recoding in one of the "main
Google languages" is always a pretty high priority (in C#'s case, recoding
would typically be mostly in Java, as the two languages address similar areas
in terms of levels of abstraction).

