logo

CardDev

مسیر یادگیری
logo

CardDev

کتاب مهندسی نرم‌افزار در گوگل

0 فلش‌کارت
0 گالری‌کارت
0 صوت
0 پرامپت
0 واژه‌نامه

امروزه مهندسان نرم‌افزار باید بدانند که چگونه نه تنها به شکلی مؤثر برنامه‌نویسی کنند، بلکه چگونه شیوه‌های مهندسی مناسبی را برای پایدار و سالم نگه داشتن پایگاه کد (Codebase) خود توسعه دهند. این کتاب بر تفاوت میان برنامه‌نویسی و مهندسی نرم‌افزار تأکید دارد. چگونه مهندسان نرم‌افزار می‌توانند یک پایگاه کد زنده را که در طول عمر خود تکامل می‌یابد و به نیازها و تقاضاهای متغیر پاسخ می‌دهد، مدیریت کنند؟ بر اساس تجربه در گوگل، نویسندگان نگاهی صادقانه و عمیق به نحوه ساخت و نگهداری نرم‌افزار توسط پیشروترین متخصصان جهان ارائه می‌دهند. این کتاب فرهنگ مهندسی، فرآیندها و ابزارهای منحصر به فرد گوگل و چگونگی کمک این جنبه‌ها به اثربخشی یک سازمان مهندسی را پوشش می‌دهد. شما سه اصل اساسی را بررسی خواهید کرد که سازمان‌های نرم‌افزاری باید هنگام طراحی، معماری، نوشتن و نگهداری کد در نظر داشته باشند: چگونه زمان بر پایداری نرم‌افزار تأثیر می‌گذارد و چگونه کد خود را در طول زمان منعطف (Resilient) کنید. چگونه مقیاس‌پذیری (Scalability) بر قابلیت بقای شیوه‌های نرم‌افزاری در یک سازمان مهندسی تأثیر می‌گذارد. مهندس معمولی هنگام ارزیابی تصمیمات طراحی و توسعه، چه بده‌بستان‌هایی (Trade-offs) را باید انجام دهد.

اشتراکی

book cover
O’Reilly
0 فلش‌کارت
0 گالری‌کارت
0 صوت
0 پرامپت
0 واژه‌نامه
جزئیاتمقدمهفصل‌هانسخه‌ها

فصل های کتاب

با مرور فصل‌ها، ساختار ، محتوای کتاب را به سرعت بشناسید.

با مرور فصل‌های این کتاب می‌تونی خیلی سریع بفهمی هر بخش چی یاد میده، ساختار کلی چطوره و از کجا باید شروع کنی. هر فصل روی یک مفهوم یا مهارت خاص تمرکز داره و موضوعات اصلیش رو می‌بینی تا انتخابت آگاهانه‌تر باشه. چه بخوای کل کتاب رو دنبال کنی، چه فقط یک بخش خاص رو دنبال کنی، این نما کمکت می‌کنه مسیرت رو پیدا کنی.

پایان‌نامه

این بخش به بررسی تفاوت‌های اساسی میان برنامه‌نویسی و مهندسی نرم‌افزار می‌پردازد و بر اهمیت پایداری کد در طول زمان تأکید می‌کند.

book cover

مهندسی نرم‌افزار چیست؟

Time and Change • Hyrum’s Law • Example: Hash Ordering • Why Not Just Aim for “Nothing Changes”? • Scale and Efficiency • Policies That Don’t Scale • Policies That Scale Well • Example: Compiler Upgrade • Shifting Left • Trade-offs and Costs • Example: Markers • Inputs to Decision Making • Example: Distributed Builds • Example: Deciding Between Time and Scale • Revisiting Decisions, Making Mistakes • Software Engineering Versus Programming • Conclusion • TL;DRs

فصل 1

درحال تولید...

فرهنگ

این بخش به بررسی جنبه‌های انسانی و اجتماعی کار تیمی در سازمان‌های مهندسی می‌پردازد.

book cover

چگونه در تیم‌ها به خوبی کار کنیم

Help Me Hide My Code • The Genius Myth • Hiding Considered Harmful • Early Detection • The Bus Factor • Pace of Progress • In Short, Don’t Hide • It’s All About the Team • The Three Pillars of Social Interaction • Why Do These Pillars Matter? • Humility, Respect, and Trust in Practice • Blameless Post-Mortem Culture • Being Googley • Conclusion • TL;DRs

فصل 2

درحال تولید...

book cover

اشتراک دانش

Challenges to Learning • Philosophy • Setting the Stage: Psychological Safety • Mentorship • Psychological Safety in Large Groups • Growing Your Knowledge • Ask Questions • Understand Context • Scaling Your Questions: Ask the Community • Group Chats • Mailing Lists • YAQS: Question-and-Answer Platform • Scaling Your Knowledge: You Always Have Something to Teach • Office Hours • Tech Talks and Classes • Documentation • Code • Scaling Your Organization’s Knowledge • Cultivating a Knowledge-Sharing Culture • Establishing Canonical Sources of Information • Staying in the Loop • Readability: Standardized Mentorship Through Code Review • What Is the Readability Process? • Why Have This Process? • Conclusion • TL;DRs

فصل 3

درحال تولید...

book cover

مهندسی برای برابری

Bias Is the Default • Understanding the Need for Diversity • Building Multicultural Capacity • Making Diversity Actionable • Reject Singular Approaches • Challenge Established Processes • Values Versus Outcomes • Stay Curious, Push Forward • Conclusion • TL;DRs

فصل 4

درحال تولید...

book cover

چگونه یک تیم را رهبری کنیم

Managers and Tech Leads (and Both) • The Engineering Manager • The Tech Lead • The Tech Lead Manager • Moving from an Individual Contributor Role to a Leadership Role • The Only Thing to Fear Is…Well, Everything • Servant Leadership • The Engineering Manager • Manager Is a Four-Letter Word • Today’s Engineering Manager • Antipatterns • Antipattern: Hire Pushovers • Antipattern: Ignore Low Performers • Antipattern: Ignore Human Issues • Antipattern: Be Everyone’s Friend • Antipattern: Compromise the Hiring Bar • Antipattern: Treat Your Team Like Children • Positive Patterns • Lose the Ego • Be a Zen Master • Be a Catalyst • Remove Roadblocks • Be a Teacher and a Mentor • Set Clear Goals • Be Honest • Track Happiness • The Unexpected Question • Other Tips and Tricks • People Are Like Plants • Intrinsic Versus Extrinsic Motivation • Conclusion • TL;DRs

فصل 5

درحال تولید...

book cover

رهبری در مقیاس

Always Be Deciding • The Parable of the Airplane • Identify the Blinders • Identify the Key Trade-Offs • Decide, Then Iterate • Always Be Leaving • Your Mission: Build a “Self-Driving” Team • Dividing the Problem Space • Always Be Scaling • The Cycle of Success • Important Versus Urgent • Learn to Drop Balls • Protecting Your Energy • Conclusion • TL;DRs

فصل 6

درحال تولید...

book cover

اندازه‌گیری بهره‌وری مهندسی

Why Should We Measure Engineering Productivity? • Triage: Is It Even Worth Measuring? • Selecting Meaningful Metrics with Goals and Signals • Goals • Signals • Metrics • Using Data to Validate Metrics • Taking Action and Tracking Results • Conclusion • TL;DRs

فصل 7

درحال تولید...

فرآیندها

این بخش به بررسی فرآیندهای استاندارد و فنی در محیط‌های مهندسی گوگل می‌پردازد.

book cover

راهنماهای سبک و قوانین

Why Have Rules? • Creating the Rules • Guiding Principles • The Style Guide • Changing the Rules • The Process • The Style Arbiters • Exceptions • Guidance • Applying the Rules • Error Checkers • Code Formatters • Conclusion • TL;DRs

فصل 8

درحال تولید...

book cover

بازبینی کد

Code Review Flow • How Code Review Works at Google • Code Review Benefits • Code Correctness • Comprehension of Code • Code Consistency • Psychological and Cultural Benefits • Knowledge Sharing • Code Review Best Practices • Be Polite and Professional • Write Small Changes • Write Good Change Descriptions • Keep Reviewers to a Minimum • Automate Where Possible • Types of Code Reviews • Greenfield Code Reviews • Behavioral Changes, Improvements, and Optimizations • Bug Fixes and Rollbacks • Refactorings and Large-Scale Changes • Conclusion • TL;DRs

فصل 9

درحال تولید...

book cover

مستندسازی

What Qualifies as Documentation? • Why Is Documentation Needed? • Documentation Is Like Code • Know Your Audience • Types of Audiences • Documentation Types • Reference Documentation • Design Docs • Tutorials • Conceptual Documentation • Landing Pages • Documentation Reviews • Documentation Philosophy • WHO, WHAT, WHEN, WHERE, and WHY • The Beginning, Middle, and End • The Parameters of Good Documentation • Deprecating Documents • When Do You Need Technical Writers? • Conclusion • TL;DRs

فصل 10

درحال تولید...

book cover

مروری بر تست

Why Do We Write Tests? • The Story of Google Web Server • Testing at the Speed of Modern Development • Write, Run, React • Benefits of Testing Code • Designing a Test Suite • Test Size • Test Scope • The Beyoncé Rule • A Note on Code Coverage • Testing at Google Scale • The Pitfalls of a Large Test Suite • History of Testing at Google • Orientation Classes • Test Certified • Testing on the Toilet • Testing Culture Today • The Limits of Automated Testing • Conclusion • TL;DRs

فصل 11

درحال تولید...

book cover

تست واحد

The Importance of Maintainability • Preventing Brittle Tests • Strive for Unchanging Tests • Test via Public APIs • Test State, Not Interactions • Writing Clear Tests • Make Your Tests Complete and Concise • Test Behaviors, Not Methods • Don’t Put Logic in Tests • Write Clear Failure Messages • Tests and Code Sharing: DAMP, Not DRY • Shared Values • Shared Setup • Shared Helpers and Validation • Defining Test Infrastructure • Conclusion • TL;DRs

فصل 12

درحال تولید...

book cover

تست دابل‌ها

The Impact of Test Doubles on Software Development • Test Doubles at Google • Basic Concepts • An Example Test Double • Seams • Mocking Frameworks • Techniques for Using Test Doubles • Faking • Stubbing • Interaction Testing • Real Implementations • Prefer Realism Over Isolation • How to Decide When to Use a Real Implementation • Faking • Why Are Fakes Important? • When Should Fakes Be Written? • The Fidelity of Fakes • Fakes Should Be Tested • What to Do If a Fake Is Not Available • Stubbing • The Dangers of Overusing Stubbing • When Is Stubbing Appropriate? • Interaction Testing • Prefer State Testing Over Interaction Testing • When Is Interaction Testing Appropriate? • Best Practices for Interaction Testing • Conclusion • TL;DRs

فصل 13

درحال تولید...

book cover

تست‌های بزرگ‌تر

What Are Larger Tests? • Fidelity • Common Gaps in Unit Tests • Why Not Have Larger Tests? • Larger Tests at Google • Larger Tests and Time • Larger Tests at Google Scale • Structure of a Large Test • The System Under Test • Test Data • Verification • Types of Larger Tests • Functional Testing of One or More Interacting Binaries • Browser and Device Testing • Performance, Load, and Stress testing • Deployment Configuration Testing • Exploratory Testing • A/B Diff Regression Testing • UAT • Probers and Canary Analysis • Disaster Recovery and Chaos Engineering • User Evaluation • Large Tests and the Developer Workflow • Authoring Large Tests • Running Large Tests • Owning Large Tests • Conclusion • TL;DRs

فصل 14

درحال تولید...

book cover

منسوخ‌سازی

Why Deprecate? • Why Is Deprecation So Hard? • Deprecation During Design • Types of Deprecation • Advisory Deprecation • Compulsory Deprecation • Deprecation Warnings • Managing the Deprecation Process • Process Owners • Milestones • Deprecation Tooling • Conclusion • TL;DRs

فصل 15

درحال تولید...

ابزارها

این بخش به معرفی ابزارهای مهندسی و زیرساخت‌های فنی مورد استفاده در گوگل می‌پردازد.

book cover

کنترل نسخه و مدیریت شاخه

What Is Version Control? • Why Is Version Control Important? • Centralized VCS Versus Distributed VCS • Source of Truth • Version Control Versus Dependency Management • Branch Management • Work in Progress Is Akin to a Branch • Dev Branches • Release Branches • Version Control at Google • One Version • Scenario: Multiple Available Versions • The “One-Version” Rule • (Nearly) No Long-Lived Branches • What About Release Branches? • Monorepos • Future of Version Control • Conclusion • TL;DRs

فصل 16

درحال تولید...

book cover

جستجوی کد

The Code Search UI • How Do Googlers Use Code Search? • Where? • What? • How? • Why? • Who and When? • Why a Separate Web Tool? • Scale • Zero Setup Global Code View • Specialization • Integration with Other Developer Tools • API Exposure • Impact of Scale on Design • Search Query Latency • Index Latency • Google’s Implementation • Search Index • Ranking • Selected Trade-Offs • Completeness: Repository at Head • Completeness: All Versus Most-Relevant Results • Completeness: Head Versus Branches Versus All History Versus Workspaces • Expressiveness: Token Versus Substring Versus Regex • Conclusion • TL;DRs

فصل 17

درحال تولید...

book cover

سیستم‌های ساخت و فلسفه ساخت

Purpose of a Build System • What Happens Without a Build System? • But All I Need Is a Compiler! • Shell Scripts to the Rescue? • Modern Build Systems • It’s All About Dependencies • Task-Based Build Systems • Artifact-Based Build Systems • Distributed Builds • Time, Scale, Trade-Offs • Dealing with Modules and Dependencies • Using Fine-Grained Modules and the 1:1:1 Rule • Minimizing Module Visibility • Managing Dependencies • Conclusion • TL;DRs

فصل 18

درحال تولید...

book cover

نقد: ابزار بازبینی کد گوگل

Code Review Tooling Principles • Code Review Flow • Notifications • Stage 1: Create a Change • Diffing • Analysis Results • Tight Tool Integration • Stage 2: Request Review • Stages 3 and 4: Understanding and Commenting on a Change • Commenting • Understanding the State of a Change • Stage 5: Change Approvals (Scoring a Change) • Stage 6: Commiting a Change • After Commit: Tracking History • Conclusion • TL;DRs

فصل 19

درحال تولید...

book cover

تحلیل ایستا

Characteristics of Effective Static Analysis • Scalability • Usability • Key Lessons in Making Static Analysis Work • Focus on Developer Happiness • Make Static Analysis a Part of the Core Developer Workflow • Empower Users to Contribute • Tricorder: Google’s Static Analysis Platform • Integrated Tools • Integrated Feedback Channels • Suggested Fixes • Per-Project Customization • Presubmits • Compiler Integration • Analysis While Editing and Browsing Code • Conclusion • TL;DRs

فصل 20

درحال تولید...

book cover

مدیریت وابستگی‌ها

Why Is Dependency Management So Difficult? • Conflicting Requirements and Diamond Dependencies • Importing Dependencies • Compatibility Promises • Considerations When Importing • How Google Handles Importing Dependencies • Dependency Management, In Theory • Nothing Changes (aka The Static Dependency Model) • Semantic Versioning • Bundled Distribution Models • Live at Head • The Limitations of SemVer • SemVer Might Overconstrain • SemVer Might Overpromise • Motivations • Minimum Version Selection • So, Does SemVer Work? • Dependency Management with Infinite Resources • Exporting Dependencies • Conclusion • TL;DRs

فصل 21

درحال تولید...

book cover

تغییرات در مقیاس بزرگ

What Is a Large-Scale Change? • Who Deals with LSCs? • Barriers to Atomic Changes • Technical Limitations • Merge Conflicts • No Haunted Graveyards • Heterogeneity • Testing • Code Review • LSC Infrastructure • Policies and Culture • Codebase Insight • Change Management • Testing • Language Support • The LSC Process • Authorization • Change Creation • Sharding and Submitting • Cleanup • Conclusion • TL;DRs

فصل 22

درحال تولید...

book cover

یکپارچه‌سازی مداوم

CI Concepts • Fast Feedback Loops • Automation • Continuous Testing • CI Challenges • Hermetic Testing • CI at Google • CI Case Study: Google Takeout • But I Can’t Afford CI • Conclusion • TL;DRs

فصل 23

درحال تولید...

book cover

تحویل مداوم

Idioms of Continuous Delivery at Google • Velocity Is a Team Sport: How to Break Up a Deployment into Manageable Pieces • Evaluating Changes in Isolation: Flag-Guarding Features • Striving for Agility: Setting Up a Release Train • No Binary Is Perfect • Meet Your Release Deadline • Quality and User-Focus: Ship Only What Gets Used • Shifting Left: Making Data-Driven Decisions Earlier • Changing Team Culture: Building Discipline into Deployment • Conclusion • TL;DRs

فصل 24

درحال تولید...

book cover

محاسبات به عنوان سرویس

Taming the Compute Environment • Automation of Toil • Containerization and Multitenancy • Summary • Writing Software for Managed Compute • Architecting for Failure • Batch Versus Serving • Managing State • Connecting to a Service • One-Off Code • CaaS Over Time and Scale • Containers as an Abstraction • One Service to Rule Them All • Submitted Configuration • Choosing a Compute Service • Centralization Versus Customization • Level of Abstraction: Serverless • Public Versus Private • Conclusion • TL;DRs

فصل 25

درحال تولید...

خانهدسته‌بندیکتابخانهکتاب‌منپروفایل
انتشار کتاب

25 فصل در حال تولید

آخرین بروزرسانی
۳۱ شهریور ۱۴۰۵
امتیاز
5.0
پیش نیاز
ندارد

مدت زمان خوانش

18:36

نوع کتاب

اشتراکی

شرکت کنندگان

0 نفر

تولید کتاب

۳۱ شهریور ۱۴۰۵

درباره ما

قوانین و سوالات

کتاب‌های نرم افزار خوندنش چه نسخه اصلی و چه ترجمه شده میتونه برامون چالش برانگیز و سخت باشه. یا شاید اصلا حوصله نکنی این همه وقت و انرژی بزاری برای کتاب ، ما هستیم تا تو بتونی کتاب های مطرح و مهم دنیای نرم افزار رو بیشتر از پیش و با انگیزه بیشتر و کیفیت بهتر مطاله کنی و یادش بگیری.
CardDev قدمی کوچک برای یک تیم و قدمی بزرگ برای جامعه بزرگ مهندسین نرم‌افزار و برنامه نویسان!

ارتباط با ما

ایمیل

info@aiflashcard.dev

شبکه های اجتماعی

CardDev
CardDev

نصب اپ CardDev

دسترسی سریع‌تر از هوم‌اسکرین

کلیه حقوق مادی و معنوی برای سایت CardDev محفوظ است.

Built pixel by pixel by Khadem

Khadem Al Mahdi

Built pixel by pixel by