Lessons Learned from Programming Over Time
Titus Winters, Tom Manshreck, and Hyrum Wright

#Software
#Engineering
🏗️ مهندسی نرمافزار به سبک Google
🚀 مهندسان نرمافزار امروز فقط نباید برنامهنویسی مؤثر را بلد باشن؛ بلکه باید روشهای مهندسی درستی را توسعه بدن تا Codebase در طول زمان سالم، پایدار و قابلنگهداری باقی بمونه. این کتاب تفاوت مهم میان Programming و Software Engineering را توضیح میده و نشان میده چطور نرمافزاری ساخته بشه که در برابر تغییر نیازها و رشد پروژه دوام بیاره.
✨ ویژگیهای کلیدی
⏳ بررسی میکنه گذر زمان چه تأثیری بر پایداری Software داره و چطور میشه Code را در برابر تغییرات آینده مقاوم کرد.
📏 نشان میده Scale چطور امکانپذیربودن Practiceهای نرمافزاری را در یک سازمان مهندسی تحتتأثیر قرار میده.
⚖️ Trade-Offهایی را توضیح میده که Engineerها هنگام ارزیابی تصمیمهای Design و Development با آنها روبهرو میشن.
🏢 فرهنگ مهندسی، Processها و Toolهای منحصربهفرد Google و نقش آنها در اثربخشی یک سازمان مهندسی را بررسی میکنه.
🛠️ موضوعاتی مثل Code Review، Documentation، Testing، Version Control، Dependency Management، CI/CD و تغییرات بزرگمقیاس را پوشش میده.
📘 توضیح کتاب
🔄 یک Software Engineer چطور میتونه Codebase زندهای را مدیریت کنه که در تمام طول عمرش تکامل پیدا میکنه و به Requirementها و تقاضاهای درحالتغییر پاسخ میده؟ این پرسش، محور اصلی کتاب و نقطه تمایز میان نوشتن Code و مهندسی بلندمدت Software است.
🏢 تایتوس وینترز و هایرم رایت، Software Engineerهای Google، همراه با Technical Writer این شرکت، تام منشرک، براساس تجربه خود در Google نگاهی صریح و عمیق به شیوه ساخت و نگهداری Software توسط بعضی از برجستهترین متخصصان جهان ارائه میدن.
🧠 کتاب فرهنگ مهندسی خاص Google، Processها و Toolهای آن را بررسی میکنه و توضیح میده این عوامل چطور در کنار یکدیگر به افزایش اثربخشی سازمان مهندسی کمک میکنن.
⏳ نخستین اصل اساسی کتاب، تأثیر زمان بر Sustainability نرمافزاره. Code فقط برای نیاز امروز نوشته نمیشه؛ بلکه باید در برابر تغییر Requirementها، رشد سیستم و تصمیمهای آینده مقاوم باقی بمونه.
📐 اصل دوم به Scale مربوط میشه. Practiceای که برای یک Developer یا تیم کوچک خوب کار میکنه، ممکنه در سازمانی با هزاران Engineer و میلیونها خط Code قابلاجرا نباشه؛ بنابراین فرایندها و ابزارها باید متناسب با ابعاد سازمان طراحی بشن.
⚖️ اصل سوم، Trade-Offهاییه که یک Engineer معمولی هنگام تصمیمگیری درباره Design و Development ارزیابی میکنه. کتاب نشان میده تصمیمهای مهندسی معمولاً پاسخ مطلق ندارن و باید براساس Cost، زمان، Scale، نگهداری و نیازهای آینده سنجیده بشن.
🤝 بخش Culture موضوعاتی مثل کار مؤثر در Teamها، Knowledge Sharing، Engineering for Equity، هدایت Team، Leadership در مقیاس بزرگ و اندازهگیری Engineering Productivity را پوشش میده.
🧪 بخش Processes به Style Guideها، Ruleها، Code Review، Documentation و سطوح مختلف Testing میپردازه. Unit Testing، Test Doubleها، Testهای بزرگتر و Deprecation هم در همین بخش بررسی میشن.
🛠️ بخش Tools موضوعاتی مثل Version Control، Branch Management، Code Search، Build Systemها، Static Analysis، Dependency Management و Large-Scale Changeها را توضیح میده. ابزار Code Review خود Google نیز بهصورت انتقادی بررسی میشه.
🚀 در ادامه، Continuous Integration، Continuous Delivery و Compute as a Service مطرح میشن تا ارتباط میان توسعه Code، Automation، تحویل Software و Infrastructure در مقیاس سازمانی روشن بشه.
🎯 پس از مطالعه کتاب، درک میکنی Software Engineering فقط نوشتن Code درست نیست؛ بلکه شامل ساخت فرهنگ، Process و Toolهاییه که یک Codebase را در برابر زمان، رشد و تغییر مقاوم نگه میدارن و امکان همکاری مؤثر Engineerها را در مقیاس بزرگ فراهم میکنن.
🎯 چیزهایی که یاد میگیری
⏳ یاد میگیری تأثیر زمان بر Sustainability نرمافزار را ارزیابی و Code را برای تغییرات آینده مقاوم کنی.
📏 درک میکنی Scale چطور Practiceهای مهندسی را در Teamها و سازمانهای بزرگ تغییر میده.
⚖️ میتونی Trade-Offهای مربوط به تصمیمهای Design و Development را دقیقتر ارزیابی کنی.
🤝 یاد میگیری در Teamها مؤثرتر کار کنی، Knowledge را به اشتراک بذاری و Leadership را در Scaleهای مختلف به کار بگیری.
📝 با Style Guide، Code Review و Documentation بهعنوان اجزای اصلی یک Codebase سالم آشنا میشی.
🧪 میتونی نقش Unit Testing، Test Doubleها و Testهای بزرگتر را در Reliability نرمافزار درک کنی.
🔧 یاد میگیری از Version Control، Code Search، Build System، Static Analysis و Dependency Management در پروژههای بزرگ استفاده کنی.
🚀 با Large-Scale Change، Continuous Integration، Continuous Delivery و Compute as a Service آشنا میشی.
👤 این کتاب برای چه کسانیه؟
💻 این کتاب برای Programmerها و Software Engineerهاییه که میخوان فراتر از نوشتن Code حرکت کنن و Practiceهای لازم برای ساخت و نگهداری Codebaseهای سالم و پایدار را یاد بگیرن.
🏢 Technical Leadها، Engineering Managerها، Software Architectها و اعضای Teamهای بزرگ میتونن از تجربههای Google در Culture، Knowledge Sharing، Leadership، Productivity، Process و Tooling استفاده کنن.
📌 کتاب بهویژه برای افرادی مناسبه که با Softwareهای بلندمدت، Codebaseهای بزرگ، Requirementهای متغیر و همکاری میان تعداد زیادی Engineer سروکار دارن. در اطلاعات منبع، پیشنیاز تخصصی مشخصی برای مطالعه آن ذکر نشده است.
📖 فهرست مطالب
بخش اول. تز اصلی
فصل ۱. Software Engineering چیست؟
بخش دوم. فرهنگ
فصل ۲. چطور در Teamها خوب کار کنیم؟
فصل ۳. اشتراکگذاری Knowledge
فصل ۴. مهندسی برای برابری
فصل ۵. چطور یک Team را هدایت کنیم؟
فصل ۶. Leadership در مقیاس بزرگ
فصل ۷. اندازهگیری Engineering Productivity
بخش سوم. Processها
فصل ۸. Style Guideها و Ruleها
فصل ۹. Code Review
فصل ۱۰. Documentation
فصل ۱۱. نمای کلی Testing
فصل ۱۲. Unit Testing
فصل ۱۳. Test Doubleها
فصل ۱۴. Testing در مقیاس بزرگتر
فصل ۱۵. Deprecation
بخش چهارم. Toolها
فصل ۱۶. Version Control و Branch Management
فصل ۱۷. Code Search
فصل ۱۸. Build Systemها و فلسفه Build
فصل ۱۹. نقد ابزار Code Review در Google
فصل ۲۰. Static Analysis
فصل ۲۱. Dependency Management
فصل ۲۲. تغییرات بزرگمقیاس
فصل ۲۳. Continuous Integration
فصل ۲۴. Continuous Delivery
فصل ۲۵. Compute as a Service
بخش پنجم. نتیجهگیری
👤 درباره نویسندگان
💻 تایتوس وینترز Senior Staff Software Engineer در Google است و از سال ۲۰۱۰ در این شرکت فعالیت میکنه. او درحالحاضر ریاست Global Subcommittee مربوط به طراحی Standard Library زبان C++ را بر عهده داره.
📚 تایتوس در Google رهبر بخش Library برای Codebase زبان C++ این شرکته؛ Codebaseای شامل ۲۵۰ میلیون خط Code که در طول یک ماه توسط دوازده هزار Engineer مختلف ویرایش میشه.
⚙️ او و Teamهایش طی هفت سال گذشته با استفاده از Automation و Toolهای مدرن، Componentهای بنیادی Codebase زبان C++ در Google را سازماندهی، نگهداری و تکامل دادهاند.
🔄 تایتوس در این مسیر چندین پروژه را در Google آغاز کرده که تصور میشه در میان ده Refactoring بزرگ تاریخ بشر قرار دارن.
🧠 او بهدلیل مشارکت مستقیم در ساخت Toolها و Automation مربوط به Refactoring، از نزدیک با طیف بزرگی از میانبرهایی روبهرو شده که Engineerها و Programmerها برای «فقط راهانداختن یک چیز» انتخاب میکنن. همین Scale و دیدگاه منحصربهفرد، تمام تفکرات او درباره مراقبت، نگهداری و تکامل Software Systemها را شکل داده است.
📝 تام منشرک از سال ۲۰۰۵ بهعنوان Staff Technical Writer در بخش Software Engineering شرکت Google فعالیت میکنه. او مسئول توسعه و نگهداری بسیاری از Programming Guideهای اصلی Google در حوزه Infrastructure و Language است.
☕ تام از سال ۲۰۱۱ عضو Google C++ Library Team بوده و در توسعه مجموعه Documentation مربوط به C++، راهاندازی دورههای آموزشی C++ شرکت Google همراه با تایتوس وینترز و مستندسازی Abseil، کد Open Source زبان C++ در Google، فعالیت کرده است.
🎓 او دارای مدرک BS در Political Science و مدرک BS در History از Massachusetts Institute of Technology یا MIT است.
🏢 تام پیش از Google بهعنوان Managing Editor در Pearson/Prentice Hall و چند Startup مختلف فعالیت میکرد.
⚙️ هایرم کی. رایت Staff Software Engineer در Google است و از سال ۲۰۱۲ در این شرکت فعالیت میکنه. تمرکز اصلی کار او نگهداری بزرگمقیاس Codebase زبان C++ در Google است.
🧩 هایرم بیش از هر Engineer دیگری در تاریخ شرکت Google، ویرایشهای انفرادی روی Codebase این شرکت انجام داده است.
🌐 او عضو Apache Software است و گاهی بهعنوان Visiting Faculty در Carnegie Mellon University فعالیت میکنه.
🎓 هایرم مدرک PhD خود را در Software Engineering از University of Texas at Austin دریافت کرده است. او همچنین دارای مدرک MS از University of Texas و مدرک BS از Brigham Young University است.
🎤 او از سخنرانان فعال Conferenceهاست و بهطور مستمر در Literature دانشگاهی مربوط به Software Maintenance و Evolution مشارکت میکنه.
Today, software engineers need to know not only how to program effectively but also how to develop proper engineering practices to make their codebase sustainable and healthy. This book emphasizes this difference between programming and software engineering.
How can software engineers 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 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. This book covers Google’s unique engineering culture, processes, and tools and how these aspects contribute to the effectiveness of an engineering organization.
You’ll explore three fundamental principles that software organizations should keep in mind when designing, architecting, writing, and maintaining code:
Table of Contents
Part I. Thesis
Chapter 1. What Is Software Engineering?
Part II. Culture
Chapter 2. How to Work Well on Teams
Chapter 3. Knowledge Sharing
Chapter 4. Engineering for Equity
Chapter 5. How to Lead a Team
Chapter 6. Leading at Scale
Chapter 7. Measuring Engineering Productivity
Part III. Processes
Chapter 8. Style Guides and Rules
Chapter 9. Code Review
Chapter 10. Documentation
Chapter 11. Testing Overview
Chapter 12. Unit Testing
Chapter 13. Test Doubles
Chapter 14. Larger Testing
Chapter 15. Deprecation
Part IV. Tools
Chapter 16. Version Control and Branch Management
Chapter 17. Code Search
Chapter 18. Build Systems and Build Philosophy
Chapter 19. Critique: Google’s Code Review Tool
Chapter 20. Static Analysis
Chapter 21. Dependency Management
Chapter 22. Large-Scale Changes
Chapter 23. Continuous Integration
Chapter 24. Continuous Delivery
Chapter 25. Compute as a Service
Part V. Conclusion
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.
دانا احمدیمن این کتابو دو جلدی گرفتم. رو جلدا خوشگل اول و دوم بودنشو جدا کردن. بسته بندی هم عالی بود. زودتر از زمانی که سایت زده بود به دستم رسید. چاپ قشنگی داشت و تو دو جلد فهرست داشت. با اینکه میتونستم این کتابو نصف قیمت تو سایت های دیگه بخرم ولی به کیفیت اونا اعتماد نداشتم از اسکای خریدم و کاملا راضی ام. ممنونم ازتون
اسکای بوکدرود بر شما، خوشحالیم راضی هستید، موفق باشید.









