Errata

Software Engineering at Google

Errata for Software Engineering at Google

Submit your own errata for this product.

The errata list is a list of errors and their corrections that were found after the product was released. If the error was corrected in a later version or reprint the date of the correction will be displayed in the column titled "Date Corrected".

The following errata were submitted by our customers and approved as valid errors by the author or editor.

Color key: Serious technical mistake Minor technical mistake Language or formatting error Typo Question Note Update

Version Location Description Submitted By Date submitted Date corrected
ePub
Page Chapter 5. How to Lead a Team
2nd vs. 5th paragraph

from 2nd paragraph:
"A Manager is a leader of people, whereas a Tech Lead leads technology efforts. Although the responsibilities of these two roles are quite different, they require quite similar skills."

from 5th paragraph:
"Even though manager and tech lead each play an important part in the growth and productivity of an engineering team, the skills required to succeed in each role are wildly different."

The statements are contradicting: Do these two roles require quite similar or wildly different skills?

Note from the Author or Editor:
Revise paragraph 2:
"A Manager is a leader of people, whereas a Tech Lead leads technology efforts. Although the responsibilities of these two roles require similar planning skills, they require quite different people skills."

Revise paragraph 5:
"Even though manager and tech lead each play an important part in the growth and productivity of an engineering team, the people skills required to succeed in each role are wildly different."

Michael Huebler  Apr 26, 2020  Sep 04, 2020
Printed
Page xxiv
Testing Overview credits

Misspelled name:

Kufler -> Kuefler

Tom Manshreck
 
Apr 27, 2020  Sep 04, 2020
Printed
Page xx
1st paragraph

"Google's collective experiences" should be "Google's collective experience"

Titus Winters
Titus Winters
 
Jul 07, 2020  Sep 04, 2020
Printed, PDF, ePub
Page xxiv
Test Doubles acknowledgement

The Testing Doubles entry should contain these additional acknowledgements:

Adam Bender, Augie Fackler, Erik Kuefler, James Youngman

Tom Manshreck
 
Oct 30, 2020  May 26, 2021
Printed, PDF, ePub, Mobi, Safari Books Online, Other Digital Version
Page 3
Chapter 3 end (Conclusion)

See “The Boy Scout Rule” and Kevin Henney, 97 Things Every Programmer Should Know (Boston: O’Reilly, 2010).

Kevin -> Kevlin

Note from the Author or Editor:
Footnote 9 in Chapter 3 ("Knowledge Sharing") should be attributed to "Kevlin Henney", not "Kevin Henney".

KJELL SWEDIN  Mar 26, 2020  Sep 04, 2020
Printed
Page 18
Bullet 5

What does it cost to "not" take action?

Drop the quotations from "not".

Titus Winters
Titus Winters
 
Jul 07, 2020  Sep 04, 2020
Printed
Page 20
First paragraph of "Example: Distributed Builds"

missing the word "by":
> This leads directly to nonjokes as illustrated **by** this "Compiling" comic

Titus Winters
Titus Winters
 
Apr 09, 2020  Sep 04, 2020
Printed
Page 49
second paragraph under "Understand Context"

It says "Chesterson's fence" instead of "Chesterton's fence" - just a typo where an s should be a t.

Note from the Author or Editor:
Confirmed - should change "Chesterson's" to "Chesterton's"

Aaron Schumacher  Oct 09, 2020  May 26, 2021
Printed
Page 70
2nd sentence in the "Bias is the Default" section

"Such failures are often intentional" should be "Such failures are often unintentional"

Titus Winters
Titus Winters
 
Apr 08, 2020  Sep 04, 2020
PDF
Page 107
4th paragraph

"what it does it take to scale yourself into a really good leader?"
should be
"what does it take to scale yourself into a really good leader?"

Note from the Author or Editor:
Confirmed.
Change "what it does it take" to "what does it take".

Ryuichi Kubuki  Jan 04, 2021  May 26, 2021
PDF
Page 113
5th paragraph

"Most of these tasks are things that are fairly easy for you do."
should be
"Most of these tasks are things that are fairly easy for you to do."

Note from the Author or Editor:
Confirmed.
"Most of these tasks are things that are fairly easy for you do."
should be
"Most of these tasks are things that are fairly easy for you to do."

Ryuichi Kubuki  Jan 09, 2021  May 26, 2021
PDF
Page 129
2nd paragraph, 2nd bullet point

"A signal is how you might know that you’ve achieved the end result."
In the other 2 bullet points "goal" and "metric" are in bold, but "signal" here is not in bold.

Note from the Author or Editor:
"signal" in the 2nd bullet should be italicized, to match "goal" and "metric" in the other bullets.

Ryuichi Kubuki  Jan 15, 2021  May 26, 2021
PDF
Page 135
5th row, 1st column

It only shows "Intellectual" but it should be "Intellectual complexity" that appears on the page 131.

Note from the Author or Editor:
"Intellectual" in the first column should be expanded to "Intellectual Complexity".

Ryuichi Kubuki  Jan 16, 2021  May 26, 2021
PDF
Page 171
Footnote #6

“Convergent software peer review practices.”
should be
"Convergent contemporary software peer review practices."
for the title of this article.
https://dl.acm.org/doi/10.1145/2491411.2491444

Note from the Author or Editor:
Update the text of footnote #6:
“Convergent software peer review practices.”
should be
"Convergent contemporary software peer review practices."

Ryuichi Kubuki  Jan 26, 2021  May 26, 2021
Printed
Page 196
1st paragraph of Tutorials section

“Hello World” has established itself is one of the best ways to ensure that all team members start off on the right foot.

It should’ve been:

“Hello World” has established itself as one of the best ways to ensure that all team members start off on the right foot.

“as” instead of “is”

Note from the Author or Editor:
Change "has established itself is one" to "has established itself as one"

David Souza  Feb 09, 2021  May 26, 2021
PDF
Page 219
4th paragraph

"Functional tests", "system tests" are italicized, but for "end-to-end tests" only "end-to-end" is italicized, so the whole "end-to-end tests" should be italicized as well.

Likewise, “unit tests” is in double-quoted but instead it should be italicized as well to match with other test types in this paragraph such as "integration tests."

Ryuichi Kubuki  Feb 15, 2021  May 26, 2021
Printed
Page 231
Author Credit

Misspelled name:

Kueffler -> Kuefler

Tom Manshreck
 
Apr 27, 2020  Sep 04, 2020
Printed
Page 245
Example 12-13.

In "multiplication with a negative number":
var negativeNumber = 10;

It should be -10. It's missing the negative sign.

Note from the Author or Editor:
Agreed. Change
"var negativeNumber = 10;"
to
"var negativeNumber = -10;"

David Souza  Feb 10, 2021 
Printed
Page 246
Example 12-14, second line

multiply_postiveAndNegative_returnsNegative
should be:
multiply_positiveAndNegative_returnsNegative
(it says "postive" instead of "positive", it's missing the 'i')


David Souza  Feb 10, 2021  May 26, 2021
PDF
Page 248
2nd paragraph

AssertionError: <[red, green, blue]> should have contained <orange>.”
should be
“AssertionError: <[red, green, blue]> should have contained <orange>.”
(The opening double quote is missing)

Ryuichi Kubuki  Feb 27, 2021  May 26, 2021
Printed
Page 251
Example 12-21. First test.

I'm not sure if the naming of the first test is wrong on purpose:
"canBuyItem_returnsFalseForClosedAccounts()"

The test passes (it's asserting the function to return false) because the ACCOUNT_1 has a low balance, not because the account is closed (it's actually open), as the naming suggests.

Note from the Author or Editor:
Confirmed.

In fact, both @Test examples are similarly confusing. I think the best fix would be to swap the names of the two @Tests (canBuyItem_returnsFalseForClosedAccounts and canBuyItem_returnsFalseWhenBalanceInsufficient).

The balance is insufficient for ACCOUNT_1, while ACCOUNT_2 is actually closed.

David Souza  Feb 10, 2021 
Page 253
2nd paragraph

"A related way that tests shared code is via setup/initialization logic."
This sounds like some shared code is tested, but the section talks about how to share code between tests. So "A related way that tests share code is via setup/initialization logic." would make more sense.

Note from the Author or Editor:
Change "shared code" to "share code"

Ryuichi Kubuki  Jun 30, 2021 
Printed
Page 254
Example 12-24. Title.

Overriding values in setup mMethods -> Overriding values in setup methods (It has an extra 'M').

David Souza  Feb 10, 2021  May 26, 2021
Printed
Page 288
Last paragraph

"combinatorically" should be "combinatorially"

Titus Winters
Titus Winters
 
Jul 24, 2020  Sep 04, 2020
Printed
Page 289
1st paragraph, page 289 (within "Larger Tests at Google Scale")

The accuracy / bug probability is represented incorrectly. The phrase "and those doubles are low fidelity (e.g., 10% inaccurate)" should be "and those doubles are low fidelity (e.g., 10% accurate)" to match with the probability presented later in the sentence.

Titus Winters
Titus Winters
 
Mar 27, 2020  Sep 04, 2020
Printed
Page 293
Figure 14-6

The line colors of "Request from user", "Mocked server connection" and "Local data exchanges between hermetic servers" look almost identical. I'd recommend to use lines with patterns or other figures to represent them instead of making the distinction with colors. The printed edition is black and white, that might be the reason of confusion.

Note from the Author or Editor:
Yeah, in B&W this is much less clear than it is in color. Pattern/texture/shading would be good, especially for the arrows.

David Souza  Feb 18, 2021 
Printed
Page 297
Beginning of the page after the subtitle

Tests of these type... -> Tests of this type...

This is repeated at the beginning of "Performance, Load, and Stress testing" (page 297), "Deployment Configuration Testing" (298), "Exploratory Testing" (298), "A/B Diff Regression Testing" (299), "UAT" (301) and "Prober and Canary Analysis" (301), "Disaster Recovery and chaos Engineering" (302) and "User Evaluation" (303)

David Souza  Feb 18, 2021  May 26, 2021
Printed
Page 303
Limitations, 3 paragraph

The follow paragraph is duplicated twice. The first time it appears on the page 302 in the Limitations section(as the second paragraph). The second time it appears on the page 303 in the Limitations section as the third paragraph:

"If a prober performs a mutable(write) action, it will modify the state of production..."

Note from the Author or Editor:
This is intentional but could still be clarified (to make it clear that it is intentional, rather than just a copy/paste issue).

The second instance (on page 303) should be clarified:
"If a prober performs a mutable (write) action"
should become:
"As with a prober, if a DiRT test performs a mutable (write) action"

Dmitrii Banshchikov  Dec 18, 2020  May 26, 2021
PDF
Page 305
7th paragraph

"in front of running both these tests and running TAP tests"
should be
"in front of both running these tests and running TAP tests"

Ryuichi Kubuki  Aug 11, 2021  Aug 31, 2021
Printed
Page 318
End of 2nd full paragraph

"With Google, we occasionally" should be "Within Google, we occasionally"

Titus Winters
Titus Winters
 
Jul 07, 2020  Sep 04, 2020
PDF
Page 335
6th paragraph

RedHat should be Red Hat.

Ryuichi Kubuki  Apr 03, 2021  May 26, 2021
PDF
Page 355
Footnote #7

“every developer has their own IDE on their own workspace do the indexing
calculation”
should be
“every developer who has their own IDE on their own workspace should do the indexing calculation”

Ryuichi Kubuki  Apr 11, 2021  May 26, 2021
Printed
Page 371
Author Credit

Misspelled Name:

Kueffler -> Kuefler

Tom Manshreck
 
Apr 27, 2020  Sep 04, 2020
Printed
Page 377
Diagram

The diagram has a box for "Clear" that should say "Clean"

Note from the Author or Editor:
The diagram has a box for "Clear" that should say "Clean"

Anonymous  May 06, 2020  Sep 04, 2020
Printed
Page 381
End of 2nd full paragraph

"base a build system around the tenants of functional programming" - "tenants" should be "tenets".

Titus Winters
Titus Winters
 
Jul 07, 2020  Sep 04, 2020
PDF
Page 382
1st paragraph

"(which defines how it is referenced on the command line and by other
targets" doesn't have a closing parenthesis.

Ryuichi Kubuki  Apr 18, 2021  May 26, 2021
Printed
Page 399
1st paragraph, 4th line.

“However, having a well-defined code review process in only part of the code review story”. in -> is

David Souza  Mar 03, 2021  May 26, 2021
PDF
Page 401
Figure 19-1

"Request view" should be "Request review" per the second bullet point below.

Note from the Author or Editor:
Confirmed. In Figure 19-1 the "Request view" box should be "Request review".

Ryuichi Kubuki  Apr 23, 2021 
Printed
Page 417
Author line

Author's name is misspelled: Caitlin, not Cailtin.

Titus Winters
Titus Winters
 
Jul 07, 2020  Sep 04, 2020
Printed
Page 418
Footnote 3: 'Gernamy'

wrong spelling

Reinhard Arlt  Feb 17, 2021  May 26, 2021
Printed
Page 437
Section Heading

"Dependendencies" should be "Dependencies"

Titus Winters
Titus Winters
 
Jul 07, 2020  Sep 04, 2020
PDF
Page 442
3rd paragraph

RedHat should be Red Hat.

Ryuichi Kubuki  Apr 03, 2021  May 26, 2021
PDF
Page 450
5th paragraph

"nothing that anyone relies upon is change in a breaking fashion."
should be
"nothing that anyone relies upon is changed in a breaking fashion."

Ryuichi Kubuki  May 13, 2021  May 26, 2021
Printed
Page 463
3rd paragraph

"with a given set of infrastructures" => "with a given infrastructure"

Titus Winters
Titus Winters
 
Jul 07, 2020  Sep 04, 2020
Printed
Page 469
3rd paragraph

"make the most use of Google's" would read more normally as "make the best use of Google's"

Titus Winters
Titus Winters
 
Oct 09, 2020  May 26, 2021
Printed
Page 477
"Cleanup" paragraph

"Chapters 20 and 19" should be "Chapters 19 and 20"

Titus Winters
Titus Winters
 
Oct 09, 2020  May 26, 2021
PDF
Page 484
Footnote #7

Though the footnote #7 mentions “mid-air collisions”, the sentence referred to it is unrelated to the “mid-air collisions” mentioned at the end of the page 485.

Note from the Author or Editor:
Indeed. Delete the footnote - it seems unrelated to anything until the section on page 485 and a near-duplicate definition already exists there.

Ryuichi Kubuki  Jun 05, 2021 
Printed
Page 488
Start of first full paragraph

"serve the same overall purpose in the developer workflow identify" => "serve the same overall purpose in the developer workflow - to identify"

Titus Winters
Titus Winters
 
Jul 07, 2020  Sep 04, 2020
PDF
Page 488
6th paragraph

"An hour ago users, started experiencing more failed requests. Around the same, time the number of retries"
should be
"An hour ago users started experiencing more failed requests. Around the same time the number of retries"

Note from the Author or Editor:
Drop the stray comma in "An hour ago users, started"

Ryuichi Kubuki  Jun 05, 2021 
Printed
Page 489
2nd line

"informationL:" => "information:"

Titus Winters
Titus Winters
 
Jul 07, 2020  Sep 04, 2020
Printed
Page 498
Last paragraph

"with links to logs, directly to the error message." => "with links to logs, directly in the error message."

Titus Winters
Titus Winters
 
Jul 07, 2020  Sep 04, 2020
PDF
Page 533
4th paragraph

"because they need to have capacity to serve user traffic without significant latency decreases"
should be
"because they need to have capacity to serve user traffic without significant latency increases"

The goal is to keep the latency as low as possible in any case.

Note from the Author or Editor:
Change "decreases" to "degradation" (to avoid the counter-intuitive "increase is bad").

Ryuichi Kubuki  Jun 14, 2021 
PDF
Page 542
3rd paragraph

"for having a separate serverless stack for a part of a part of the workloads"
Is this "a part of a part of" intentional? If so what does each 'part' mean, or does it just imply it is a very small part of the workloads?

Note from the Author or Editor:
This doesn't seem intentional. Change "for a part of a part of the workloads" to "for a small fraction of the overall workload."

Ryuichi Kubuki  Jun 15, 2021