Software engineering at Google has been an extraordinary experiment in how to develop and maintain a large and evolving codebase. I」ve seen engineering teams break ground on this front during my time here, moving Google forward both as a company that touches billions of users and as a leader in the tech industry. This wouldn」t have been possible without the principles outlined in this book, so I」m very excited to see these pages come to life.
谷歌的軟體工程是一個非凡的實驗,探索如何開發和維護一個龐大且不斷演進的程式碼庫。在我在這裡的時間裡,我見證了工程團隊在這方面取得的突破,將谷歌推向了一個既觸及數十億使用者又是科技行業領導者的公司。如果沒有本書中概述的原則,這將是不可能的,因此我非常興奮地看到這些內容變為現實。
If the past 50 years (or the preceding pages here) have proven anything, it」s that soft‐ ware engineering is far from stagnant. In an environment in which technology is steadily changing, the software engineering function holds a particularly important role within a given organization. Today, software engineering principles aren」t simply about how to effectively run an organization; they」re about how to be a more respon‐ sible company for users and the world at large.
如果過去的50年(或前面的內容)證明了什麼,那就是軟體工程遠沒有停滯不前。在技術不斷變化的環境中,軟體工程功能在組織中扮演著特別重要的角色。今天,軟體工程原則不僅僅是關於如何有效地執行一個組織;他們關注的是如何成為一家對使用者和整個世界更負責任的公司。
Solutions to common software engineering problems are not always hidden in plain sight—most require a certain level of resolute agility to identify solutions that will work for current-day problems and also withstand inevitable changes to technical systems. This agility is a common quality of the software engineering teams I」ve had the privilege to work with and learn from since joining Google back in 2008.
解決常見的軟體工程問題並非總是顯而易見的事情--大多數問題需要一定程度的果斷敏捷性,以確定能夠解決當前問題的解決方案,同時也能承受技術系統不可避免的變化。這種敏捷性是我自2008年加入谷歌以來,有幸與之合作和學習的軟體工程團隊普遍具備的一種品質。
The idea of sustainability is also central to software engineering. Over a codebase」s expected lifespan, we must be able to react and adapt to changes, be that in product direction, technology platforms, underlying libraries, operating systems, and more. Today, we rely on the principles outlined in this book to achieve crucial flexibility in changing pieces of our software ecosystem.
可持續性的概念對軟體工程也至關重要。在程式碼庫的預期生命週期內,我們必須能夠對變化做出反應和適應,無論是在產品方向、技術平台、底層庫、作業系統還是其他方面。今天,我們依靠本書中概述的原則,在改變軟體生態系統的各個部分時實現至關重要的靈活性。
We certainly can」t prove that the ways we」ve found to attain sustainability will work for every organization, but I think it」s important to share these key learnings. Soft‐ ware engineering is a new discipline, so very few organizations have had the chance to achieve both sustainability and scale. By providing this overview of what we」ve seen, as well as the bumps along the way, our hope is to demonstrate the value and feasibility of long-term planning for code health. The passage of time and the impor‐ tance of change cannot be ignored.
我們當然不能證明我們找到的實現可持續性的途徑對每個組織都有效,但我認為分享這些關鍵的經驗很重要。軟體工程是一門新的學科,所以很少有組織有機會同時實現可持續性和規模化。透過概述我們所看到的,以及沿途的坎坷,我們希望展示價值和可行性。時間的推移和變化的重要性是不容忽視的。
This book outlines some of our key guiding principles as they relate to software engi‐ neering. At a high level, it also illuminates the influence of technology on society. As software engineers, it」s our responsibility to ensure that our code is designed with inclusion, equity, and accessibility for everyone. Building for the sole purpose of innovation is no longer acceptable; technology that helps only a set of users isn」t innovative at all.
本書概述了我們與軟體工程相關的一些關鍵指導原則。在高維度上,它還闡明了技術對社會的影響。作為軟體工程師,我們有責任確保我們的程式碼設計具有包容性、公平性和可訪問性。以創新為唯一目的的架構不再被接受;只幫助一個群體的技術根本就不是創新。
Our responsibility at Google has always been to provide developers, internally and externally, with a well-lit path. With the rise of new technologies like artificial intelli‐ gence, quantum computing, and ambient computing, there」s still plenty for us to learn as a company. I」m particularly excited to see where the industry takes software engi‐ neering in the coming years, and I」m confident that this book will help shape that path.
我們在谷歌的責任一直是為內部和外部的開發者提供一條光明的道路。隨著人工智慧、量子計算和環境計算等新技術的興起,作為一家公司,我們仍有很多東西需要學習。我特別期待看到軟體行業在未來幾年的發展方向,我相信這本書將有助於塑造這條路。
—Asim Husain
Vice President of Engineering, Google