Software Engineering at Google: Lessons Learned from Programming Over Time (Paperback)

Winters, Titus, Manshreck, Tom, Wright, Hyrum

買這商品的人也買了...

商品描述

How do you manage a living codebase that evolves and responds to changing requirements and demands over the length of its life? Based on their experience at Google, software engineers Titus Winters and Hyrum K. Wright, along with technical writer Tom Manshreck, present a candid and insightful look at how some of the world's leading practitioners construct and maintain software.

At Google, software engineering represents roughly 80-90% of the work, while only 10-20% of the time involves original programming. Most teaching on this subject concentrates on programming, but little on software engineering. By emphasizing three fundamental principles that software organizations should keep in mind when designing, architecting, and writing code, this book explains:

  • Fundamental differences between software engineering and programming
  • The software engineering lifecycle from code development to testing to deprecation
  • How to effectively manage your codebase and efficiently respond to change
  • Why culture is important, and how processes, practices, and tools come into play
  • Tradeoffs: how an organization makes optimal software decisions by keeping time and scale in mind

商品描述(中文翻譯)

如何管理一個不斷演進並應對不斷變化的需求和要求的程式碼庫?根據他們在Google的經驗,軟體工程師Titus Winters和Hyrum K. Wright以及技術作家Tom Manshreck提供了一個坦率而深入的觀察,介紹了一些世界領先的實踐者如何構建和維護軟體。

在Google,軟體工程佔了大約80-90%的工作量,而只有10-20%的時間用於原始編程。大多數關於這個主題的教學都集中在編程上,而很少涉及軟體工程。本書通過強調軟體組織在設計、架構和編寫程式碼時應該牢記的三個基本原則,解釋了以下內容:

- 軟體工程和編程之間的基本差異
- 從程式碼開發到測試到廢棄的軟體工程生命週期
- 如何有效地管理程式碼庫並高效地應對變化
- 為什麼文化很重要,以及流程、實踐和工具如何發揮作用
- 折衷:組織如何在考慮時間和規模的情況下做出最佳軟體決策

作者簡介

Titus Winters is a Senior Staff Software Engineer at Google, where he has worked since 2010. Today, he is the chair of the global subcommittee for the design of the C++ standard library. At Google, he is the library lead for Google's C++ codebase: 250 million lines of code that will be edited by 12K distinct engineers in a month. For the last 7 years, Titus and his teams have been organizing, maintaining, and evolving the foundational components of Google's C++ codebase using modern automation and tooling. Along the way he has started several Google projects that believed to be in the top 10 largest refactorings in human history. As a direct result of helping to build out refactoring tooling and automation, Titus has encountered first-hand a huge swath of the shortcuts that engineers and programmers may take to "just get something working". That unique scale and perspective has informed all of his thinking on the care and feeding of software systems.

Tom Manshreck 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.

Hyrum K. Wright 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. He is a member of the Apache Software and an occasional visiting faculty member at Carnegie Mellon University. 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. He is an active speaker at conferences and contributor to the academic literature on software maintenance and evolution.

作者簡介(中文翻譯)

Titus Winters是Google的高級軟體工程師,自2010年起在該公司工作。他目前是C++標準程式庫設計的全球小組主席。在Google,他是Google C++程式碼庫的程式庫負責人,該程式碼庫包含2.5億行程式碼,每個月會有12,000位不同的工程師進行編輯。在過去的7年中,Titus和他的團隊一直在使用現代自動化和工具來組織、維護和發展Google C++程式碼庫的基礎組件。在此過程中,他還啟動了幾個Google項目,被認為是人類歷史上最大的10個重構之一。通過幫助建立重構工具和自動化,Titus第一手經歷了工程師和程序員可能採取的許多捷徑,以“只是讓某些東西運作”。這種獨特的規模和觀點影響了他對軟體系統的關注和培養。

Tom Manshreck是Google軟體工程部門的技術作家,自2005年起在該公司工作,負責開發和維護Google基礎設施和語言的核心編程指南。自2011年以來,他一直是Google C++程式庫團隊的成員,開發Google的C++文檔集,與Titus Winters一起推出Google的C++培訓課程,並記錄了Abseil,Google的開源C++程式碼。Tom擁有麻省理工學院的政治學學士學位和歷史學學士學位。在加入Google之前,Tom曾在Pearson/Prentice Hall和各種初創公司擔任編輯主管。

Hyrum K. Wright是Google的軟體工程師,自2012年起在該公司工作,主要從事Google C++程式碼庫的大規模維護工作。Hyrum對Google程式碼庫進行的個別編輯次數超過了公司歷史上的任何其他工程師。他是Apache軟體基金會的成員,也是卡內基梅隆大學的客座教師。Hyrum在德克薩斯大學奧斯汀分校獲得軟體工程博士學位,並擁有德克薩斯大學的碩士學位和布里格漢姆楊大學的學士學位。他是會議的活躍演講者,也是軟體維護和演進的學術文獻的貢獻者。