Kian
Kian
خواندن ۴ دقیقه·۴ سال پیش

نکاتی از فرهنگِ کاریِ «بدون مقصریابی» / blameless

(این نوشته پیش‌تر به شکل رشته توییت نوشته شده بوده و سپس در ویرگول رونوشت شده)

امروز برخی سرویس‌های گوگل برای ۴۵ دقیقه خوابید و رفت در سرخط خبرها. بیشتر outageهای بزرگ حاصل تعامل چند اشکال با همه، این بار در file system توزیع‌شده‌ی گوگل (Colossus) برای سرویس‌دهی به سیستم احراز هویت گوگل (GAIA). بهانه‌ایست تا یک رویکرد سازمانی مرتبط و خیلی مهم رو مرور کنیم.

یک مثال که معمولا در کلاس‌های دوره‌ی معارفه‌ی گوگل مرور می‌شه اینه که یک بار یک بابایی یک configای در سیستم مدیریت jobها (سیستم ‌Borg که بابای Kubernetes است) push کرد و کلّ گوگل رفت پایین! pagerها شروع کرد به زنگ و SREها این ور اون ور می‌دویدن و این حرفا. این بابا، با این که pushاش ظاهرا نامرتبط بود، سریع به همه خبر داد و rollback هم کرد. و قضیه حل شد. این شخص که کلّ گوگل رو برای چند دقیقه آورده بود پایین، توبیخ شد؟ نه اتفاقا جایزه گرفت (peer bonus که هم‌کار به هم‌کار می‌ده) چون دقیقا کارِ درست رو کرده بود.

این بخشِ مهمی از فرهنگ برخورد با مشکلاته که مرتبا به همه یادآوری می‌شه مثلا در آموزش‌های دوره‌ای و سخنرانی‌ها و ارتباطاتِ درون‌سازمانی (مثلا فصل‌نامه‌ی جالبی که ۵ حادثه‌ی برترِ محصولات گوگل در فصل رو با مایه‌ی آموزش و طنز مرور می‌کنه هر بار اینو تکرار می‌کنه) که:

  • «وقتی مشکلات رخ می‌دن ما دنبال اینیم که چه چیزی رو در سیستم‌ها و فرآیندها بهبود بدیم نه این که چه کسی هنگام مشکل چی کار کرد».

ما حتی در کالبدشکافی‌ها (postmortem، مستندی که پس از حادثه می‌نویسیم) ترجیح می‌دیم نام افراد رو نیاریم، فقط نقش‌شون رو بیاریم یا افعال مجهول بنویسیم.

این مساله مهمه، چون افراد باید ترغیب بشن اشتباهاتشون رو خیلی باز و سریع اطلاع‌رسانی کنن، نه این که مخفی کنن. مقصریابی (blaming) سوتی‌دهنده هیچ‌وقت مطرح نیست - از قضا یک بار مطرح شد همراه با گفتگوی جدی، و اون نه برای اشتباه شخص بلکه برای مخفی‌کردنش وسرِ کار گذاشتنِ بقیه بود.

از هم‌کارانی از شرکت‌های معروف دیگر که بهتره نام نبرم، مثال‌های برعکس شنیدم مثلا کسی که سوتی داده دیگه حالا حالاها شانسی برای ترفیع نداره. این فرهنگ بده چون باعث می‌شه دو زهر «سکوت» و «ترس از تغییر» مُد بشه.

اگر تصور کردید این حرف‌ها ایده‌آل‌گرایانه و برای دِکوره، برای کمک به ملموس شدن، چند مثال از مواردی که شخصا درگیرش بودم رو می‌نویسم - چندتا از بزرگ‌ترین outageهای زیرسازمان ما و هر سه به خاطر خطای انسانی و به معنای واقعی کلمه «سوتی».

  • یک: سوتی در یک کُد و رشد آرام و نماییِ فلان اندازه در حافظه به مرور زمان، احتمالا پیچیده‌ترین outage این سال‌های ما بود که ۳x۲۴ ساعتِ پیوسته کشف و مهارش طول کشید توسط ده‌ها نفر درگیر، با (میلیون)O دلار ضرر مالی و حیثیتی. ولی نه از رویِ پرستیژ بلکه روراست و به امید آموزنده بودن می‌گم که اصلا مطرح نبود که نویسنده‌ی اون کُد اشتباه کیه بلکه همه‌ی بحث‌های پس از حادثه گِردِ این بود که چرا مراحل تست و قناری (canary) نتونسته شکارش کنه؛ چرا سیستم در برابرش شکننده بوده؛ چرا ردگیری و کشفش در سیستم سخت بوده. مرتبط: درباره‌ی پاسخ به حادثه.
  • دو: سوتی 1000x در کُد در تبدیل بین واحدهای پول، با ضرر مالی و حیثیتی بدتر از قبلی. یک تیم هم تا هفته‌ها درگیر تصحیح حساب‌ها بود. بحث‌های حول این حادثه هم بدون هیچ اهمیتی به نویسنده‌ی سوتی، مانند مورد بالا: چرا سیستم فلان؛ چرا APIها فلان.
  • مثال متفاوت: یک تیم، یک feature سوتی‌دار راه‌اندازی کرده بود در بازه‌ی زمانی که محیط عملیاتی فریزه - نزدیک کریسمس که اوج فصل خریده و سلامتِ سیستم خیلی حساس. هم‌کارم (مسؤل در تیمِ زیرساختِ متأثر از سوتی) در ایمیلی با حالت بازخواستی نوشت که چرا فریز رو رعایت نکردید. این رویکرد به وضوح غلطه. خودش بعدش ایمیل دیگری زد و عذرخواهی کرد و پیشنهاد کمک داد. سوتی برای شماتت و نکوهش نیست.

تکرار می‌کنم که منظور، حرف‌های انگیزشیِ خوراکِ LinkedIn نیست بلکه ملموس کردنِ اینه که این فرهنگ شدنی‌ست و سازمانی‌ست، مستقل از «نایس» بودن و نبودن شخصیِ افراد. بد نیست در شرکتتون روی این زیرساخت فرهنگی کار کنید.

مطالعه‌ی بیشتر درباره‌ی شکل‌گیری این فرهنگ: اینجا.


ویرایش بعدتر (از این رشته توییت): یک مورد تجربه‌ی شخصی داغ از تنور: صبح دیدم که دیشبش دیرهنگام یک حادثه داشتیم و چندین نفر از چند تیم مختلف رو مچل کرده تا «مشکل» رو پیدا و غیرفعال کردن: یکی از کارهای بنده! من شخصا بیشتر در اون سو (پاسخ‌دهندگان به حادثه) بودم ولی گاهی هم این سو، و تجربه‌ی جالبی‌ست. چند نکته برای هم‌رسانی:

  • بنده رو فرانخوندن پای خط پاسخ به حادثه. زمانی که بیرون از ساعت کاری‌ست و من در شیفت گوش‌به‌زنگ (oncall) نیستم، درست نیست به کار فراخونده بشم. البته قانون ناموسی نیست یعنی اگر همه‌ی سرنخ‌ها به بن‌بست بخوره یک پیغام در chat می‌دیم شاید طرف دید و خواست بیاد. ولی زنگ یا هشدار (page) به کسی در بیرون ساعت کاریش خیلی نادره دیگه مگر این که حادثه خیلی بزرگ باشه؛ در اون صورت هم بعدا جبران می‌شه.
  • این بار مشکل خطای انسانی نبود ولی اگر بود هم فرقی نمی‌کرد. نمونه‌های بزرگی که در بالا آوردم خطای انسانی بودن.
  • صبح در پاسخ به ایمیل، خودم کُنشگرانه پیشنهاد دادم که فلان experiment بنده رو هم روی رادار داشته باشید. اگر فرهنگ مقصریابی بود طبیعتا این کار رو نمی‌کردم.
  • وقتی تازه‌کارترها چیزی رو خراب می‌کنن برای حفظ اعتماد به نفسشون یک شوخی رایج اینه که می‌گیم: مبارکه حالا تازه یک Googler شدی.


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