I joined Google in mid-1999, and I'm currently a
Google Fellow in the Systems Infrastructure Group. My areas of
interest include large-scale distributed systems, performance
monitoring, compression techniques, information retrieval,
application of machine learning to search and other related
problems, microprocessor architecture, compiler optimizations,
and development of new products that organize existing
information in new and interesting ways. While at Google, I've
worked on the following projects:
I enjoy developing software with great colleagues, and I've been
fortunate to have worked with many wonderful and talented people on
all of my work here at Google. To help ensure that Google continues to
hire people with excellent technical skills, I've also been fairly
involved in our engineering hiring process.
- The design and implementation of the initial version of
Google's advertising serving system.
- The design and implementation of five generations of our
crawling, indexing, and query serving systems, covering two
and three orders of magnitude growth in number of documents
searched, number of queries handled per second, and frequency
of updates to the system. I recently gave a talk at WSDM'09 about some of the
issues involved in building large-scale retrieval systems (slides).
- The initial development of Google's AdSense for Content
product (involving both the production serving system design
and implementation as well as work on developing and improving
the quality of ad selection based on the contents of pages).
- The development of Protocol Buffers, a way of encoding
structured data in an efficient yet extensible format, and a
compiler that generates convenient wrappers for manipulating
the objects in a variety of languages. Protocol Buffers are
used extensively at Google for almost all RPC protocols, and for
storing structured information in a variety of persistent
storage systems. A version of the protocol buffer
implementation has been open-sourced and is
available at http://code.google.com/p/protobuf/.
- Some of the initial production serving system work for the
Google News product,
working with Krishna Bharat to move the prototype system he
put together into a deployed system.
- Some aspects of our search ranking algorithms, notably
improved handling for dealing with off-page signals such as
- The design and implementation of the first generation of
our automated job scheduling system for managing a cluster of
- The design and implementation of prototyping
infrastructure for rapid development and experimentation with
new ranking algorithms.
- The design and implementation of MapReduce, a system for simplifying the development of large-scale data processing applications. A paper about MapReduce appeared in OSDI'04.
- The design and implementation of BigTable, a large-scale semi-structured storage system used underneath a number of Google products. A paper about BigTable appeared in OSDI'06 (best paper award).
- The design and implementation of Spanner, a globally-distributed database system supporting consistent operations and dynamically-configurable cross-datacenter replication of data. Spanner is used as the primary storage system for Google's advertising system, among other products. A paper about Spanner appeared in OSDI'12 (best paper award).
- The design and implementation of DistBelief, a system for large-scale distributed training of deep neural network models. The system has been used for both unsupervised training and supervised training in a variety of image recognition, speech recognition, natural language modeling and other tasks. A paper about the use of DistBelief for training a large-scale image recognition model appeared in ICML'12. John Markoff of the New York Times wrote an article about this work in June, 2012.
- Some of the production system design for Google Translate, our
statistical machine translation system. In particular, I
designed and implemented a system for distributed high-speed
access to very large language models (too large to fit in
memory on a single machine).
- Some internal tools to make it easy to rapidly search our
internal source code repository. Many of the ideas from this
internal tool were incorporated into our Google Code Search
product, including the ability to use regular expressions for
searching large corpora of source code.
I received a Ph.D. in Computer Science from the University of
Washington, working with Craig Chambers
on whole-program optimization techniques for object-oriented languages
in 1996. I received a B.S., summa cum laude from the University
of Minnesota in Computer Science & Economics in 1990. From 1996 to
1999, I worked for Digital Equipment Corporation's Western Research
Lab in Palo Alto, where I worked on low-overhead profiling tools,
design of profiling hardware for out-of-order microprocessors, and
web-based information retrieval. From 1990 to 1991, I worked for the
World Health Organization's Global Programme on AIDS, developing
software to do statistical modelling, forecasting, and analysis of the
In 2009, I was elected to the National Academy of Engineering, and I was also named a Fellow of the Association for Computing Machinery (ACM). In 2012, I received the ACM SIGOPS Mark Weiser Award along with my long-time colleague Sanjay Ghemawat.
Selected Slides from Talks:
- MIT Big Data Lecture Series, September, 2012: Living with Big Data: Challenges and Opportunities (joint talk with Sanjay Ghemawat)
- Berkeley AMPLab Cloud Seminar talk, March, 2012: Achieving Rapid Response Times in Large Online Services
- Stanford Computer Science Department Distinguished Computer Scientist Lecture lecture, November, 2010: Building Software Systems at Google and Lessons Learned
- Symposium on Cloud Computing (SOCC) keynote, June, 2010: Evolution and Future Directions of Large-scale Storage and Computation Systems at Google
- Web Search and Data Mining Conference (WSDM) keynote, February, 2009: Challenges in Building Large-Scale Information Retrieval Systems
- Google Faculty Summit talk, July, 2008: Some Potential Areas for Future Research
- Stanford CS295 class lecture, Spring, 2007: Software Engineering Advice from Building Large-Scale Distributed Systems
- Spanner: Google's Globally-Distributed Database [PDF]
In Proceedings of OSDI 2012, Hollywood, CA, 2012.
James C. Corbett, Jeffrey Dean, Michael Epstein, Andrew Fikes, Christopher Frost, JJ Furman, Sanjay Ghemawat, Andrey Gubarev, Christopher Heiser, Peter Hochschild, Wilson Hsieh, Sebastian Kanthak, Eugene Kogan, Hongyi Li, Alexander Lloyd, Sergey Melnik, David Mwaura, David Nagle, Sean Quinlan, Rajesh Rao, Lindsay Rolig, Yasushi Saito, Michal Szymaniak, Christopher Taylor, Ruth Wang, and Dale Woodford
- MapReduce: Simplified Data Processing on Large Clusters,
Communications of the ACM, vol. 51, no. 1 (2008), pp. 107-113
Jeffrey Dean and Sanjay Ghemawat.
- Large Language Models in Machine Translation
In Proceedings of the 2007 Joint Conference on Empirical Methods in Natural Language Processing and Computational Natural Language Learning (EMNLP-CoNLL), pp. 858-867.
Thorsten Brants, Ashok C. Popat, Peng Xu, Franz J. Och, Jeffrey Dean.
- Bigtable: A Distributed Storage System for Structured Data [PDF]
In Proceedings of OSDI 2006, Seattle, WA, 2006.
Fay Chang, Jeffrey Dean, Sanjay Ghemawat, Wilson C. Hsieh, Deborah A. Wallach, Mike Burrows, Tushar Chandra, Andrew Fikes, and Robert E. Gruber
- MapReduce: Simplified Data Processing on Large Clusters [PDF]
In Proceedings of OSDI 2004, San Francisco, CA, 2004.
Jeffrey Dean and Sanjay Ghemawat
- Web Search for a Planet: The Google Cluster Architecture [PDF]
In IEEE Micro, Vol. 23, No. 2, pages 22-28, March, 2003.
Luiz Barroso, Jeffrey Dean, and Urs Hölzle
- A Comparison of Techniques to Find Mirrored Hosts on the WWW [HTML]
JASIS (Journal of the American Society for Information Science) 51(12):1114:1122 (2000). Also presented at 1999 ACM Digital Library Workshop on Organizing Web Space (WOWS), Berkeley, CA, August 1999.
Krishna Bharat, Andrei Broder, Jeffrey Dean, and Monika R. Henzinger
- The Swift Java Compiler: Design and Implementation
Compaq Western Research Laboratory. Research Report 2000/2, April 2000.
Daniel J. Scales, Keith H. Randall, Sanjay Ghemawat, and Jeff Dean
- Hardware Support for Out-of-Order Instruction Profiling on Alpha 21264a [PPT]
In Proceedings of 11th Hot Chips Symposium (1999), Palo Alto, CA, Aug., 1999.
Jennifer Anderson, Lance Berc, Jeffrey Dean, Sanjay Ghemawat, Shun-Tak Leung, Mitch Lichtenberg, George Vernes, Mark Vandevoorde, Carl A. Waldspurger, William Weihl, and Jon White
- Finding Related Pages in the World Wide Web [HTML]
In Proceedings of the Eighth World Wide Web Conference (WWW8), Toronto, Canada, May, 1999.
Jeffrey Dean and Monika Henzinger
- Transparent, Low-Overhead Profiling on Modern Processors [PostScript]
Invited paper in 1998 Workshop on Profile and Feedback-Directed Compilation, Paris, France, October, 1998. Also gave invited talk at the workshop.
Jennifer Anderson, Lance Berc, George Chrysos, Jeffrey Dean, Sanjay Ghemawat, Jamey Hicks, Shun-Tak Leung, Mitch Lichtenberg, Mark Vandevoorde, Carl A. Waldspurger, and William Weihl
- ProfileMe: Hardware Support for Instruction-Level Profiling on Out-of-Order Processors [HTML]
In Proceedings of the 30th Annual Symposium on Microarchitecture, Research Triangle Park, North Carolina, December, 1997.
Jeffrey Dean, Jamey Hicks, Carl Waldspurger, William Weihl, and George Chrysos
- Continuous Profiling: Where Have All the Cycles Gone?
In Proceedings of 16th Symposium on Operating Systems Principles (1997), St. Malo, France, October, 1997. Selected as one of the four best papers at SOSP. An expanded version appears in a special issue of Transactions on Computer Systems, Vol. 15, Number 4, pp. 357-390 (November, 1997).
Jennifer Anderson, Lance Berc, Jeffrey Dean, Sanjay Ghemawat, Monika Henzinger, Shun-Tak Leung, Dick Sites, Mark Vandevoorde, Carl Waldspurger, and William Weihl
- Call Graph Construction in Object-Oriented Languages [HTML]
In Proceedings of 1997 Conference Object-Oriented Programming Languages, Systems, and Applications (OOPSLA'97), Atlanta, GA, October, 1997.
David Grove, Greg DeFouw, Jeffrey Dean, and Craig Chambers
- Continuous Profiling (It's 10:43; Do You Know Where Your Cycles Are?)
In Proceedings of 9th Hot Chips Symposium (1997), Palo Alto, CA, Aug., 1997.
William Weihl, Jennifer Anderson, Lance Berc, Jeffrey Dean, Sanjay Ghemawat, Monika Henzinger, Shun-Tak Leung, Dick Sites, Mark Vandevoorde, and Carl Waldspurger
- Whole-Program Optimization of Object-Oriented Languages [HTML]
Ph.D. Dissertation, University of Washington, Dept. of Computer Science and Engineering, November, 1996.
- Vortex: An Optimizing Compiler for Object-Oriented Languages [HTML]
In Proceedings of 1996 Conference Object-Oriented Programming Languages, Systems, and Applications (OOPSLA'96), San Jose, CA, October, 1996.
Jeffrey Dean, Greg DeFouw, David Grove, Vassily Litvinov, and Craig Chambers
- Expressive, Efficient Instance Variables [HTML]
University of Washington Technical Report, February 1996.
Jeffrey Dean, David Grove, Craig Chambers, and Vassily Litvinov
- Optimization of Object-Oriented Programs Using Static Class Hierarchy Analysis [HTML]
In Proceedings of 1995 European Conference on Object-Oriented Programming (ECOOP'95), Aarhus, Denmark, August, 1995.
Jeffrey Dean, David Grove, and Craig Chambers
- A Framework for Selective Recompilation in the Presence of Complex Intermodule Dependencies [HTML]
In Proceedings of the Seventeenth International Conference on Software Engineering (ICSE 17), Seattle, WA, April, 1995.
Craig Chambers, Jeffrey Dean, and David Grove
- Profile-Guided Receiver Class Prediction [HTML]
In Proceedings of 1996 Conference of Object-Oriented Programming Languages, Systems, and Applications (OOPSLA'95), Austin, TX, October, 1995.
David Grove, Jeffrey Dean, Charlie Garrett, and Craig Chambers
- Selective Specialization for Object-Oriented Languages [HTML]
In Proceedings of 1995 Conference on Programming Language Design and Implementation (PLDI'95), June, 1995.
Jeffrey Dean, Craig Chambers, and David Grove
- Identifying Profitable Specialization in Object-Oriented Languages [HTML]
In Proceedings of the 1994 Workshop on Partial Evaluation and Semantics-based Program Manipulation (PEPM'94), Orlando, FL, June, 1994.
Jeffrey Dean, Craig Chambers, and David Grove
- Towards Better Inlining Decisions Using Inlining Trials [HTML]
In Proceedings of the 1994 Conference on Lisp and Functional Programming (L&FP'94), Orlando, FL, June, 1994.
Jeffrey Dean and Craig Chambers
- Epi Info: A General-purpose Microcomputer Program for Public Health Information Systems
In American Journal of Preventive Medicine, vol. 7, pp. 178-182, 1991.
Andrew Dean, Jeffrey Dean, Anthony Burton, and Richard Dicker
- Software for Data Management and Analysis in Epidemiology
In Journal of the World Health Forum, vol. 11, no. 1, 1990.
Anthony Burton, Jeffrey Dean, and Andrew Dean
I've lived in lots of places in my life: Honolulu, HI; Manila, The Phillipines; Boston, MA; West Nile District, Uganda; Boston (again); Little Rock, AR; Hawaii (again); Minneapolis, MN; Mogadishu, Somalia; Atlanta, GA; Minneapolis (again); Geneva, Switzerland; Seattle, WA; and (currently) Palo Alto, CA. I'm hard-pressed to pick a favorite, though: each place has its plusses and minuses.
One of my life goals is to play soccer and basketball on every continent. So far, I've done so in North America, South America, Europe, Asia, and Africa. I'm worried that Antarctica might be tough, though.