Saturday, November 25, 2023

Google Engineering Productivity Department - Activities and Accomplishments



Google Engineering Productivity

Engineering Productivity : Delivering frictionless engineering and excellent products

What is Engineering Productivity?


We are a data-driven engineering discipline focused on optimizing the engineering process so that Google can deliver amazing experiences to our users, faster.

Philosophy
Qualities that humanize Engineering Productivity

Evolution of the Department through Automation of Testing. Emergence of Software Engineering Productivity Engineer & Specialist.


Initial attempts  to automate testing  focused on the frontends, which worked, because Google was small and products had fewer integrations.  However, as Google grew, longer and longer manual test cycles  delayed feature launches.  Since bugs were identified late in testing, it took longer time  to fix them.  Making possible testing upstream in the development cycle via automation was thought to help  address the issues and reduce development time. 

Testing was transitioned to automated processes and operations. Two separate roles began to emerge to develop automated testing software at Google:

Test Engineers (TEs) having deep product knowledge,  and ability to develop testing/quality control check specifications.  TEs focused on what should be tested and the manual process of testing.

Software Engineers in Test Automation Development (SETs) -- Software engineers with deep development expertise and experience in automating manual testing processes.  SETs built the frameworks and packages required to implement automation of testing procedures.


The impact of this section and its expertise was significant:

Automated tests became more efficient  by improving runtimes.  
Automated testing led to higher quality products.

TEs developed extreme depth of knowledge for the testing of products.   They became go-to engineers for product teams that needed expertise in test automation and integration. Their role evolved into a broad spectrum of responsibilities: writing scripts to facilitate automated testing,  and constantly designing better and more creative ways to identify weak spots and break software.

SETs  built a wide array of test automation tools and developed best practices that were applicable across many products. Release velocity accelerated for products.  All was good, and there was much rejoicing!

SETs initially focused on building tools for reducing the testing cycle time, since that was the most manually intensive and time consuming phase of getting product code into production.  Some of these tools were made available to the software development community: webdriver improvements, protractor, espresso, EarlGrey, martian proxy, karma, and GoogleTest. SETs were interested in sharing and collaborating with others in the industry and established conferences. The industry has also embraced the Test Engineering discipline, as other companies hired software engineers into similar roles, published articles, and drove  AutomatedTest-Driven Development into mainstream practices.

Through these efforts, the testing cycle time decreased dramatically.  Other phases in the development cycle now became the bottleneck.  SETs started building tools to accelerate all other aspects of product development, including:

Extending IDEs to make writing and reviewing code easier, shortening the “write code” cycle
Automating release verification, shortening the “release code” cycle.

Automating real time production system log verification and anomaly detection, helping automate production monitoring.

Automating measurement of developer productivity, helping understand what’s working and what isn’t.

In summary, the work done by the SETs naturally progressed from supporting only product testing efforts to include supporting product development efforts as well. Their role now developed into  a much broader Software Engineering Productivity Engineer & Specialist.

From Automated Testing to Engineering Productivity
March 22, 2016 By Ari Shamash
https://testing.googleblog.com/2016/03/from-qa-to-engineering-productivity.html


Department's  System Level View

With a system-level view and a user-centric view, we work hard to identify gaps and inefficiencies in our engineering process so that we can build solutions to improve engineering excellence and velocity.

Instrumentation

We believe that you can’t improve what you can’t measure. Google is a data-driven company and we are a data-driven discipline. We obsess over metrics and work hard to move them in the right direction.

Tools and Infrastructure

Much like a bustling metropolis needs great infrastructure to enable happy and productive residents, Google engineers working on complex systems need the right tools and infrastructure to be productive.

Focus on the user
We embed in product engineering teams where we champion polished products for Google’s users and fast, scalable engineering for our users, Google’s engineers.

Interested in joining Engineering Productivity?
We are looking for world class engineers that bring a quantitative mindset, execution velocity, leadership skills, and a passion to change the way engineering is done at Google and beyond.

Google strives to cultivate an inclusive workplace. We believe diversity of perspectives and ideas leads to better discussions, decisions, and outcomes for everyone.

Reasoning about the correctness of Engineering and Engineering Change 


Reasoning about the correctness of your change is now much more difficult.

Some questions come up, including: How do you make sure your change works? How do you make sure your change didn’t break an obscure use case for a user in a different geography? How do you prepare your change such that the next 100 engineers that modify the system don’t break the feature you just added?

These are complex problems that require tooling and infrastructure to help engineers reason about the correctness of their change. EngProd’s purpose is to make engineering easier and better, so we spend a lot of time on the hardest part of the process: building tools and infrastructure to make testing and debugging simpler.


Careers

Software Engineer, Tools and Infrastructure (SETI)
SETI at Google is a Software Engineering role that focuses on building software, infrastructure, harnesses, tooling to help improve engineering velocity and product excellence.

You might love this role if:

You love developing tools that make the engineering process better - be it command line tools, web services, debugging tools, test data factories, etc.
You are passionate about high-quality software and unhappy about shortcuts and hacks in the code.
You have worked to automate and remove repetitive and manual tasks because inefficiency drives you crazy.
You believe that unless you can quantify or measure something, you probably can’t improve it.

Test Engineer (TE)
TE at Google is a technical role that focuses on advancing product excellence and engineering productivity.

You might love this role if:

You have an unwavering passion for, and focus on, polished products, engineering excellence, and productivity.
You love thinking through complex product and system interactions to find gaps, failure modes, and edge cases.
You have worked to automate and remove repetitive and manual tasks because inefficiency drives you crazy.
You love to design, implement, and improve tools, frameworks, metrics, and processes.
You love to work, collaborate, and lead cross-functionally.


Google Research - A Human Centered Approach to Developer Productivity
Ciera Jaspan & Collin Green


How Google Measures Developer Productivity
Abi Noda
Co-Founder at DX, Developer Insights Platform
August 4, 2023


Real insights.
Real improvement.
From startups to the Fortune 500, DX is the trusted platform for measuring and improving developer productivity.

An Engineering Perspective on Writing Assistants for Productivity and Creative Code
Ambar Murillo Sarah D'Angelo
(2023) (to appear)
https://research.google/pubs/pub52295/


Large sequence models for software development activities - ML based assistants for developers/programmers

Resolving code review comments with ML
TUESDAY, MAY 23, 2023
Posted by Alexander Frömmgen, Staff Software Engineer, and Lera Kharatyan, Senior Software Engineer, Core Systems & Experiences

ML-Enhanced Code Completion Improves Developer Productivity
TUESDAY, JULY 26, 2022
Posted by Maxim Tabachnyk, Staff Software Engineer and Stoyan Nikolov, Senior Engineering Manager, Google Research

Google Research 2023

Google Research - What Predicts Software Developers’ Productivity?

Emerson Murphy-Hill,  Ciera Jaspan, Caitlin Sadowski, David C. Shepherd, Michael Phillips, Collin Winter, Andrea Knight, Dolan Edward K. Smith, Matthew A. Jorde
Transactions on Software Engineering (2019)
https://research.google/pubs/pub47853/

From QA to Engineering Productivity
Tuesday, March 22, 2016
By Ari Shamash
https://testing.googleblog.com/2016/03/from-qa-to-engineering-productivity.html

2020 August Advertisement for Software Engineer, Engineering Productivity


Note: By applying to this position your application is automatically submitted to the following locations: Mountain View, CA, USA; Palo Alto, CA, USA; San Bruno, CA, USA; San Francisco, CA, USA; Sunnyvale, CA, USA

Minimum qualifications:

Bachelor's degree in Computer Science or related technical field or equivalent practical experience.
Software development experience in one or more general purpose programming languages.
Experience in one or more of the following: test automation, refactoring code, test-driven development, build infrastructure, optimizing software, debugging, building tools and testing frameworks.
Preferred qualifications:

Master's or PhD degree in Computer Science or related technical field.
Experience with one or more general purpose programming languages including but not limited to: Java, C/C++, C#, Objective-C, Python, JavaScript, or Go.
Scripting skills in Python, Perl, Shell or another common language.
About the job
Google's software engineers develop the next-generation technologies that change how billions of users connect, explore, and interact with information and one another. Our products need to handle information at massive scale, and extend well beyond web search. We're looking for engineers who bring fresh ideas from all areas, including information retrieval, distributed computing, large-scale system design, networking and data storage, security, artificial intelligence, natural language processing, UI design and mobile; the list goes on and is growing every day. As a software engineer, you will work on a specific project critical to Google’s needs with opportunities to switch teams and projects as you and our fast-paced business grow and evolve. We need our engineers to be versatile, display leadership qualities and be enthusiastic to take on new problems across the full-stack as we continue to push technology forward.

Google aspires to be an organization that reflects the globally diverse audience that our products and technology serve. We believe that in addition to hiring the best talent, a diversity of perspectives, ideas and cultures leads to the creation of better products and services.

Google is and always will be an engineering company. We hire people with a broad set of technical skills who are ready to take on some of technology's greatest challenges and make an impact on millions, if not billions, of users. At Google, engineers not only revolutionize search, they routinely work on massive scalability and storage solutions, large-scale applications and entirely new platforms for developers around the world. From Google Ads to Chrome, Android to YouTube, Social to Local, Google engineers are changing the world one technological achievement after another.

Responsibilities
Lead/contribute to engineering efforts from design to implementation, solving complex technical challenges around developer and engineering productivity and velocity.
Design and build advanced automated build, test, and release infrastructure.
Drive adoption of best practices in code health, testing, and maintainability.
Analyze and decompose complex software systems and collaborate with cross-functional teams to influence design for testability.
https://careers.google.com/jobs/results/72445869200155334-software-engineer-engineering-productivity/


______________


https://www.youtube.com/watch?v=ETtRxDEYeF4
Uploaded by Productivity Engineering Silicon Valley
_______________


Engineering Productivity at Google; Increasing Developer Productivity and Code Health - Google Event


July 19, 2018
Sunnyvale, CA
About

At Google, we have over 2,000 engineers who contribute to Engineering Productivity. They work hard to help make developer tools and processes more efficient by building test automation tools, accelerating release processes and discovering new ways to optimize workflows.


There are multiple teams in which Engineering Productivity plays a key role. Please join us for an evening to hear from Googlers whose work directly impacts thousands of Google engineers and billions of users.


The evening will kickoff with a welcome by Jennifer Bevan, Software Engineering Lead, whose team works toward helping Google products have easy, stable, and testable integrations for all user scenarios. Following this, we’ll hear from other Engineering Productivity teams, including Google Photos, Hardware, Cloud, and Google Ads. We’ll learn how these various teams work toward providing tools for efficiency across Google. Lastly, we’ll dive into a Q&A panel for your chance to ask questions.


After the Q&A panel, we invite you to stick around, chat with speakers and their teammates, make connections and enjoy the reception! Also be sure to check out our Nest corner to get hands on experience with Nest products and mingle with Engineering Productivity teams from Nest.


The event will be hosted on Thursday, July 19th from 5:30PM - 8:30PM  at Google in Sunnyvale. Dress is business casual. Check-in at 111 W Java Dr., Sunnyvale at 5:30PM for registration.



Featured Speakers

Jennifer Bevan

Lead, Software Engineer, Tools and Infrastructure

User Test & Productivity for Google Products

Jennifer Bevan started working at Google in 2006 working on core Google-wide test infrastructure. She then worked on Privacy, Policy, and Accessibility testing with Photos, G+, and Counter-Abuse Technologies, and now leads Google Product Infrastructure's User EngProd team. Prior to Google, Jennifer got her B.S. in Electrical Engineering / Computer Science from UC Berkeley, worked at the Jet Propulsion Laboratory building control and data verification systems, and got her Ph.D. from UC Santa Cruz in Software Evolution and Maintenance.



Jonathan Velasquez

Lead, Software Engineer, Tools and Infrastructure

Test Infrastructure for Google Home, Google WiFi, and Cast

I was born in Peru and went to school in SUNY Binghamton where I graduated in Computer Engineering in 2007. I have been working as a SETI at Google since 2011 and have been part of several major launches including Google+, Project Fi and the Google Home Max. Today I manage the Home Platform infrastructure team supporting Chromecast, Google Home and Google WiFi. In my spare time I enjoy playing classical piano and practicing tennis.



Amod Kulkarni

Senior Engineering Manager

Engineering Productivity for Google Ads

 Amod earned a Masters degree in CS from the Indian Institute of Science, India. He has been working in Google as SETI over twelve years. For last 3 years he is Tech Lead / Manager for Shopping Engineering Productivity team focusing on building tools and infrastructure to enable Shopping engineers build and launch high quality shopping features quickly.


His favorite part of being SETI is an entrepreneurial nature of this role. You get lot of freedom to come up with new ideas, prototype and solve challenging problems.



Abhi Vaidya

Senior Staff Software Engineer, Tools & Infrastructure

Test Infrastructure for Google Cloud Platform

Abhi has been working at Google for over 13 years now. He started at Google in 2005 and has worked mainly on developer productivity tools across ads, core infrastructure and most recently on Google Cloud Platform. His area of work spans storage systems used within Google (GFS for those of you who are familiar with it) and its replacement, software that runs in Google data centers and building large scale productivity improvement tooling. He is currently managing a team of 20 Software Engineers and the products built by his teams over the year are used by close to 800 engineers within Google Cloud Platform.

Victor Tse

Engineering Productivity Manager

Engineering Productivity for YouTube

Victor Tse is an Engineering Manager at Youtube. He is part of the Youtube Engineering Productivity team that focuses on transforming the way products are architected, developed and tested. Previously, he built enterprise software applications and held engineering leadership positions at Siebel Systems, Oracle and Marin Software.

Stephanie Tsao

Software Engineer

Photos Engineering Productivity and Test for Photos

Stephanie worked at Microsoft for 5 years as a Hotmail backend software engineer. She switched to Google and the engprod world early 2014 and is now leading the Photos engprod team to help better scale Photos to be the next 1B user app.
https://engineeringproductivity.splashthat.com/


Software Engineering at Google by Titus Winters, Tom Manshreck, Hyrum Wright
Chapter 7. Measuring Engineering Productivity
Written by Ciera Jaspen
https://www.oreilly.com/library/view/software-engineering-at/9781492082781/ch07.html

Sunday, July 30, 2017
TestOps #5 - Engineering Productivity
https://www.awesome-testing.com/2017/07/testops-5-engineering-productivity.html


Updated on 26.11.2023,  9 August 2021,  5 August 2020
16 March 2019



1 comment:

  1. Nice post and thanks to the aware from this software. If any one looking for more business management software, this blog post is useful.

    ReplyDelete