tests were broken, and the team was broken! I knew what it meant to be
buried under quality and technical debt where every innovative idea was
squashed lest it risk breaking the fragile product it depended on. If my
experience taught me anything, it was how not to do testing.
In all my interactions up to this point, one thing about Google was
clear. It respected computer science and coding skill. Ultimately, if testers
were to join this club, they would have to have good computer
science fundamentals and some coding prowess. First-class citizenship
demanded it.
If I was going to change testing at Google, I needed to change what it
meant to be a tester. I used to try to imagine the perfect team and how such
a team would shoulder the quality debt and I kept coming back to the
same premise: The only way a team can write quality software is when the
entire team is responsible for quality. That meant product managers, devel-
opers, testers…everyone. From my perspective, the best way to do this was
to have testers capable of making testing an actual feature of the code base.
The testing feature should be equal to any feature an actual customer
might see. The skill set I needed to build features was that of a developer.
Hiring testers who can code features is difficult; finding feature devel-
opers who can test is even more difficult. But the status quo was worse
than either so I forged ahead. I wanted testers who could do more for their
products and at the same time, I wanted to evolve the nature and owner-
ship of the testing work, which meant asking for far larger investment
from the development teams. This is the one organizational structure I had
yet to see implemented in all my time in the industry and I was convinced
it was right for Google, and I thought that as a company, we were ready
for it.
Unfortunately, few others in the company shared my passion for such
profound and fundamental change. As I began the process of socializing
my equal-but-different vision for the software testing role, I eventually
found it difficult to find a lunch partner! Engineers seemed threatened by
the very notion that they would have to play a bigger role in testing, point-
ing out “that’s what test is for.” Among testers, the attitude was equally
unsavory as many had become comfortable in their roles and the status
quo had such momentum that change was becoming a very hard problem.
I kept pressing the matter mostly out of fear that Google’s engineering
processes would become so bogged down in technical and quality debt
that I’d be back to the same five-year ship cycles I had so happily left
behind in the old client-server world. Google is a company of geniuses
focused on innovation and that entrepreneurial makeup is simply incom-
patible with long product ship cycles. This was a battle worth fighting and
I convinced myself that once these geniuses understood the idea of devel-
opment and testing practices for a streamlined and repeatable “technology
factory,” they would come around. They would see that we were not a
startup anymore and with our rapidly growing user base and increasing
technical debt of bugs and poorly structured code would mean the end of
their coder’s playground.
xviii Foreword by Patrick Copeland