Skip to content

Commit e9e2483

Browse files
Add license information to SWE Book content. (#525)
Change-Id: I136c54a71e010ed5098d46593a3f99b7af3e252c Co-authored-by: Scott Olsen <scottolsen@google.com>
1 parent 6b3847e commit e9e2483

41 files changed

Lines changed: 46 additions & 39 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

resources/swe-book.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,5 +37,11 @@ Read online</a>
3737
href="https://www.oreilly.com/library/view/software-engineering-at/9781492082781/"
3838
target="_blank" title="Purchase">
3939
Purchase from O'Reilly</a>
40+
</div>
41+
<p>Digital copy of <i>Software Engineering at Google</i> curated by Titus Winters, Tom Manshreck, and Hyrum Wright is made
42+
available on <a href="{{ site.baseurl }}">abseil.io</a> under the <a href="https://creativecommons.org/licenses/by-nc-nd/4.0/legalcode">Creative Commons Attribution-NonCommercial-NoDerivatives 4.0
43+
International Public License</a>.
44+
</p>
45+
<div>
4046
</div>
4147
</center>

resources/swe-book/html/author_bio.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,6 @@ <h1>About the Authors</h1>
1313
<p><strong>Tom Manshreck</strong> is a Staff Technical Writer within Software Engineering at Google since 2005, responsible for developing and maintaining many of Google's core programming guides in infrastructure and language. Since 2011, he has been a member of Google's C++ Library Team, developing Google's C++ documentation set, launching (with Titus Winters) Google's C++ training classes, and documenting Abseil, Google's open source C++ code. Tom holds a BS in Political Science and a BS in History from the Massachusetts Institute of Technology. Before Google, Tom worked as a Managing Editor at Pearson/Prentice Hall and various startups.</p>
1414
<p><strong>Hyrum Wright</strong> is a Staff Software Engineer at Google, where he has worked since 2012, mainly in the areas of large-scale maintenance of Google's C++ codebase. Hyrum has made more individual edits to Google's codebase than any other engineer in the history of the company, and leads Google's automated change tooling group. Hyrum received a PhD in Software Engineering from the University of Texas at Austin and also holds an MS from the University of Texas and a BS from Brigham Young University, and is an occasional visiting faculty member at Carnegie Mellon University. He is an active speaker at conferences and contributor to the academic literature on software maintenance and evolution.</p>
1515
</section>
16-
16+
<section style="margin-top:14px;"><div><p><a href="https://creativecommons.org/licenses/by-nc-nd/4.0/legalcode">CC BY-NC-ND 4.0</a></p></div></section>
1717
</body>
1818
</html>

resources/swe-book/html/ch01.html

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -391,5 +391,6 @@ <h1>TL;DRs</h1>
391391
</section>
392392
<div data-type="footnotes"><p data-type="footnote" id="ch01fn1"><sup><a href="#ch01fn1-marker">1</a></sup>We don’t mean “execution lifetime,” we mean “maintenance lifetime”—how long will the code continue to be built, executed, and maintained? How long will this software provide value?</p><p data-type="footnote" id="ch01fn2"><sup><a href="#ch01fn2-marker">2</a></sup>This is perhaps a reasonable hand-wavy definition of technical debt: things that “should” be done, but aren’t yet—the delta between our code and what we wish it was.</p><p data-type="footnote" id="ch01fn3"><sup><a href="#ch01fn3-marker">3</a></sup>Also consider the issue of whether we know ahead of time that a project is going to be long lived.</p><p data-type="footnote" id="ch01fn4"><sup><a href="#ch01fn4-marker">4</a></sup>There is some question as to the original attribution of this quote; consensus seems to be that it was originally phrased by Brian Randell or Margaret Hamilton, but it might have been wholly made up by Dave Parnas. The common citation for it is “Software Engineering Techniques: Report of a conference sponsored by the NATO Science Committee,” Rome, Italy, 27–31 Oct. 1969, Brussels, Scientific Affairs Division, NATO.</p><p data-type="footnote" id="ch01fn5"><sup><a href="#ch01fn5-marker">5</a></sup>Frederick P. Brooks Jr. <em>The Mythical Man-Month: Essays on Software Engineering</em> (Boston: Addison-Wesley, 1995).</p><p data-type="footnote" id="ch01fn6"><sup><a href="#ch01fn6-marker">6</a></sup>Appcelerator, “<a href="https://oreil.ly/pnT2_">Nothing is Certain Except Death, Taxes and a Short Mobile App Lifespan</a>,” Axway Developer blog, December 6, 2012.</p><p data-type="footnote" id="ch01fn7"><sup><a href="#ch01fn7-marker">7</a></sup>Your own priorities and tastes will inform where exactly that transition happens. We’ve found that most projects seem to be willing to upgrade within five years. Somewhere between 5 and 10 years seems like a conservative estimate for this transition in general.</p><p data-type="footnote" id="ch01fn8"><sup><a href="#ch01fn8-marker">8</a></sup>To his credit, Hyrum tried really hard to humbly call this “The Law of Implicit Dependencies,” but “Hyrum’s Law” is the shorthand that most people at Google have settled on.</p><p data-type="footnote" id="ch01fn9"><sup><a href="#ch01fn9-marker">9</a></sup>See “<a href="http://xkcd.com/1172">Workflow</a>,” an <em>xkcd</em> comic.</p><p data-type="footnote" id="ch01fn10"><sup><a href="#ch01fn10-marker">10</a></sup>A type of Denial-of-Service (DoS) attack in which an untrusted user knows the structure of a hash table and the hash function and provides data in such a way as to degrade the algorithmic performance of operations on the table.</p><p data-type="footnote" id="ch01fn11"><sup><a href="#ch01fn11-marker">11</a></sup>Beyer, B. et al. <a class="orm:hideurl" href="http://shop.oreilly.com/product/0636920041528.do"><em>Site Reliability Engineering: How Google Runs Production Systems</em></a>. (Boston: O'Reilly Media, 2016).</p><p data-type="footnote" id="ch01fn12"><sup><a href="#ch01fn12-marker">12</a></sup>Whenever we use “scalable” in an informal context in this chapter, we mean “sublinear scaling with regard to human interactions.”</p><p data-type="footnote" id="ch01fn13"><sup><a href="#ch01fn13-marker">13</a></sup>This is a reference to the popular song "Single Ladies," which includes the refrain “If you liked it then you shoulda put a ring on it.”</p><p data-type="footnote" id="ch01fn14"><sup><a href="#ch01fn14-marker">14</a></sup>Specifically, interfaces from the C++ standard library needed to be referred to in namespace std, and an optimization change for <code>std::string</code> turned out to be a significant pessimization for our usage, thus requiring some additional workarounds.</p><p data-type="footnote" id="ch01fn15"><sup><a href="#ch01fn15-marker">15</a></sup>Beyer et al. <em>Site Reliability Engineering: How Google Runs Production Systems</em>, Chapter 5, "Eliminating Toil."</p><p data-type="footnote" id="ch01fn16"><sup><a href="#ch01fn16-marker">16</a></sup>In our experience, an average software engineer (SWE) produces a pretty constant number of lines of code per unit time. For a fixed SWE population, a codebase grows linearly—proportional to the count of SWE-months over time. If your tasks require effort that scales with lines of code, that’s concerning.</p><p data-type="footnote" id="ch01fn17"><sup><a href="#ch01fn17-marker">17</a></sup>This is not to say that decisions need to be made unanimously, or even with broad consensus; in the end, someone must be the decider. This is primarily a statement of how the decision-making process should flow for whoever is actually responsible for the decision.</p></div></section>
393393

394+
<section style="margin-top:14px;"><div><p><a href="https://creativecommons.org/licenses/by-nc-nd/4.0/legalcode">CC BY-NC-ND 4.0</a></p></div></section>
394395
</body>
395396
</html>

resources/swe-book/html/ch02.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -377,6 +377,6 @@ <h1>TL;DRs</h1>
377377
</ul>
378378
</section>
379379
<div data-type="footnotes"><p data-type="footnote" id="ch01fn18"><sup><a href="#ch01fn18-marker">1</a></sup>Ben Collins-Sussman, also an author within this book.</p><p data-type="footnote" id="ch01fn19"><sup><a href="#ch01fn19-marker">2</a></sup>Literally, if you are, in fact, a bike designer.</p><p data-type="footnote" id="ch01fn20"><sup><a href="#ch01fn20-marker">3</a></sup>I should note that sometimes it’s dangerous to get too much feedback too early in the process if you’re still unsure of your general direction or goal.</p><p data-type="footnote" id="ch01fn21"><sup><a href="#ch01fn21-marker">4</a></sup>I do, however, acknowledge that serious introverts likely need more peace, quiet, and alone time than most people and might benefit from a quieter environment, if not their own office.</p><p data-type="footnote" id="ch01fn22"><sup><a href="#ch01fn22-marker">5</a></sup>This is incredibly difficult if you’ve been burned in the past by delegating to incompetent people.</p><p data-type="footnote" id="ch01fn24"><sup><a href="#ch01fn24-marker">6</a></sup>You can find a dozen variants of this legend on the web, attributed to different famous managers.</p><p data-type="footnote" id="ch01fn25"><sup><a href="#ch01fn25-marker">7</a></sup>By the same token, if you do the same thing over and over and keep failing, it’s not failure, it’s incompetence.</p></div></section>
380-
380+
<section style="margin-top:14px;"><div><p><a href="https://creativecommons.org/licenses/by-nc-nd/4.0/legalcode">CC BY-NC-ND 4.0</a></p></div></section>
381381
</body>
382382
</html>

resources/swe-book/html/ch03.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -537,6 +537,6 @@ <h1 class="less_space">TL;DRs</h1>
537537
</ul>
538538
</section>
539539
<div data-type="footnotes"><p data-type="footnote" id="ch01fn26"><sup><a href="#ch01fn26-marker">1</a></sup>In other words, rather than developing a single global maximum, we have a bunch of <a href="https://oreil.ly/6megY">local maxima</a>.</p><p data-type="footnote" id="ch01fn27"><sup><a href="#ch01fn27-marker">2</a></sup>David Lorge Parnas, <em>Software Engineering: Multi-person Development of Multi-version Programs</em> (Heidelberg: Springer-Verlag Berlin, 2011).</p><p data-type="footnote" id="ch01fn28"><sup><a href="#ch01fn28-marker">3</a></sup><a href="https://oreil.ly/2FIPq">Impostor syndrome</a> is not uncommon among high achievers, and Googlers are no exception—in fact, a majority of this book’s authors have impostor syndrome. We acknowledge that fear of failure can be difficult for those with impostor syndrome and can reinforce an inclination to avoid branching out.</p><p data-type="footnote" id="ch01fn29"><sup><a href="#ch01fn29-marker">4</a></sup>See “<a href="https://oreil.ly/rr1cR">How to ask good questions</a>.”</p><p data-type="footnote" id="ch01fn32"><sup><a href="#ch01fn32-marker">5</a></sup><a href="https://talksat.withgoogle.com"><em class="hyperlink">https://talksat.withgoogle.com</em></a> and <a href="https://www.youtube.com/GoogleTechTalks"><em class="hyperlink">https://www.youtube.com/GoogleTechTalks</em></a>, to name a few.</p><p data-type="footnote" id="ch01fn33"><sup><a href="#ch01fn33-marker">6</a></sup>The g2g program is detailed in: Laszlo Bock, <em>Work Rules!: Insights from Inside Google That Will Transform How You Live and Lead</em> (New York: Twelve Books, 2015). It includes descriptions of different aspects of the program as well as how to evaluate impact and recommendations for what to focus on when setting up similar programs.</p><p data-type="footnote" id="ch01fn34"><sup><a href="#ch01fn34-marker">7</a></sup>See <a href="https://oreil.ly/2u1Ce">“The Boy Scout Rule”</a> and Kevlin Henney, <a class="orm:hideurl" href="http://shop.oreilly.com/product/9780596809492.do"><em>97 Things Every Programmer Should Know</em></a> (Boston: O’Reilly, 2010).</p><p data-type="footnote" id="ch01fn35"><sup><a href="#ch01fn35-marker">8</a></sup>g3doc stands for “google3 documentation.” google3 is the name of the current incarnation of Google’s monolithic source repository.</p><p data-type="footnote" id="ch01fn36"><sup><a href="#ch01fn36-marker">9</a></sup>Laszlo Bock, <em>Work Rules!: Insights from Inside Google That Will Transform How You Live and Lead</em> (New York: Twelve Books, 2015).</p><p data-type="footnote" id="ch01fn37"><sup><a href="#ch01fn37-marker">10</a></sup>Ibid.</p><p data-type="footnote" id="ch01fn39"><sup><a href="#ch01fn39-marker">11</a></sup>Peer bonuses include a cash award and a certificate as well as being a permanent part of a Googler’s award record in an internal tool called gThanks.</p><p data-type="footnote" id="ch01fn40"><sup><a href="#ch01fn40-marker">12</a></sup>Such as books about software engineering at Google.</p><p data-type="footnote" id="ch01fn41"><sup><a href="#ch01fn41-marker">13</a></sup>See <a data-type="xref" href="ch09.html#code_review-id00002">Code Review</a>.</p><p data-type="footnote" id="ch01fn42"><sup><a href="#ch01fn42-marker">14</a></sup>See <a data-type="xref" href="ch11.html#testing_overview">Testing Overview</a>.</p><p data-type="footnote" id="ch01fn43"><sup><a href="#ch01fn43-marker">15</a></sup>Available for multiple languages. Externally available for C++ at <a href="https://abseil.io/tips"><em class="hyperlink">https://abseil.io/tips</em></a>.</p><p data-type="footnote" id="ch01fn44"><sup><a href="#ch01fn44-marker">16</a></sup>go/ links are unrelated to the Go language.</p><p data-type="footnote" id="ch01fn45"><sup><a href="#ch01fn45-marker">17</a></sup>External codelabs are available at <a href="https://codelabs.developers.google.com"><em class="hyperlink">https://codelabs.developers.google.com</em></a>.</p><p data-type="footnote" id="ch01fn46"><sup><a href="#ch01fn46-marker">18</a></sup>A <em>changelist</em> is a list of files that make up a change in a version control system. A changelist is synonymous with a <a href="https://oreil.ly/9jkpg"><em>changeset</em></a>.</p><p data-type="footnote" id="ch01fn47"><sup><a href="#ch01fn47-marker">19</a></sup>As of 2019, just the Google C++ style guide is 40 pages long. The secondary material making up the complete corpus of best practices is many times longer.</p><p data-type="footnote" id="ch01fn48"><sup><a href="#ch01fn48-marker">20</a></sup>For why Google uses a monorepo, see <a href="https://cacm.acm.org/magazines/2016/7/204032-why-google-stores-billions-of-lines-of-code-in-a-single-repository/fulltext"><em class="hyperlink">https://cacm.acm.org/magazines/2016/7/204032-why-google-stores-billions-of-lines-of-code-in-a-single-repository/fulltext</em></a>. Note also that not all of Google’s code lives within the monorepo; readability as described here applies only to the monorepo because it is a notion of within-repository consistency.</p><p data-type="footnote" id="ch01fn49"><sup><a href="#ch01fn49-marker">21</a></sup>For this reason, code that is known to have a short time span is exempt from readability requirements. Examples include the <em>experimental/</em> directory (explicitly designated for experimental code and cannot push to production) and the <a href="https://area120.google.com">Area 120 program</a>, a workshop for Google’s experimental products.</p><p data-type="footnote" id="ch01fn50"><sup><a href="#ch01fn50-marker">22</a></sup>This includes controlling for a variety of factors, including tenure at Google and the fact that CLs for authors who do not have readability typically need additional rounds of review compared to authors who already have readability.</p></div></section>
540-
540+
<section style="margin-top:14px;"><div><p><a href="https://creativecommons.org/licenses/by-nc-nd/4.0/legalcode">CC BY-NC-ND 4.0</a></p></div></section>
541541
</body>
542542
</html>

resources/swe-book/html/ch04.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -201,6 +201,6 @@ <h1>TL;DRs</h1>
201201
</ul>
202202
</section>
203203
<div data-type="footnotes"><p data-type="footnote" id="ch01fn51"><sup><a href="#ch01fn51-marker">1</a></sup><a href="https://diversity.google/annual-report">Google’s 2019 Diversity Report</a>.</p><p data-type="footnote" id="ch01fn52"><sup><a href="#ch01fn52-marker">2</a></sup>@jackyalcine. 2015. “Google Photos, Y’all Fucked up. My Friend’s Not a Gorilla.” Twitter, June 29, 2015. <a href="https://twitter.com/jackyalcine/status/615329515909156865"><em>https://twitter.com/jackyalcine/status/615329515909156865</em></a>.</p><p data-type="footnote" id="ch01fn53"><sup><a href="#ch01fn53-marker">3</a></sup>Many reports in 2018–2019 pointed to a lack of diversity across tech. Some notables include <a href="https://oreil.ly/P9ocC">the National Center for Women &amp; Information Technology</a>, and <a href="https://oreil.ly/Y1pUW">Diversity in Tech</a>.</p><p data-type="footnote" id="ch01fn54"><sup><a href="#ch01fn54-marker">4</a></sup>Tom Simonite, “When It Comes to Gorillas, Google Photos Remains Blind,” <em>Wired</em>, January 11, 2018.</p><p data-type="footnote" id="ch01fn55"><sup><a href="#ch01fn55-marker">5</a></sup>Stephen Gaines and Sara Williams. “The Perpetual Lineup: Unregulated Police Face Recognition in America.” <em>Center on Privacy &amp; Technology at Georgetown Law</em>, October 18, 2016.</p></div></section>
204-
204+
<section style="margin-top:14px;"><div><p><a href="https://creativecommons.org/licenses/by-nc-nd/4.0/legalcode">CC BY-NC-ND 4.0</a></p></div></section>
205205
</body>
206206
</html>

0 commit comments

Comments
 (0)