حالت تاریک
فصل ۱۶ — پنجشنبه، ۱۸ سپتامبر
پشت میزم، دارم چند کار نیمهتمام را جمع میکنم که Ellen با یک printout ایمیل به سمتم میدود. از Dick است، هشدار برای همهٔ مدیران ارشد که چیزی وحشتناک با سیستمهای صورتحساب شرکت اشتباه شده. امروز زودتر، یکی از کارمندان اداری فهمیده سه روز است هیچ مشتری صورتحساب نشده. بین چیزهای دیگر، یعنی مشتریها بهموقع پرداخت نکردهاند، یعنی شرکت در پایان فصل پول کمتری در بانک خواهد داشت از آنچه پیشبینی شده، که وقتی earnings شرکت اعلام شود انبوهی سؤال ناراحتکننده ایجاد میکند.
از رشتهٔ ایمیلهای Dick روشن است که از کوره در رفته، و ظاهراً کل staff accounts receivable و controller او chain smoking کردهاند و در همهٔ سطوح damage control میکنند.
From: Dick Landry
To: Steve Masters
Cc: Bill Palmer
Date: September 18, 3:11 PM
Priority: Highest
Subject: ACTION NEEDED : Potential $50MM cash shortfall due to IT failureهمهٔ صورتحسابهای مشتری هنوز در سیستم گیر کرده یا گم شدهاند. حتی نمیتوانیم آنها را retrieve کنیم تا دستی با ایمیل بفرستیم!
داریم میفهمیم چطور عملیات عادی را از سر بگیریم. احتمالاً ۵۰ میلیون دلار receivable در سیستم گیر کرده که در پایان فصل از حساب نقدی ما غایب خواهد بود.
ITتان را بفرستید این را درست کند. سوراخی که در اعداد فصلی میزند غیرممکن است پنهان شود، و شاید حتی غیرممکن باشد توضیح بدهیم.
به من زنگ بزن Steve. روی لبهٔ پنجرهام.
همه در اتاق کنفرانس NOC جمع شدهایم. خوشحالم وقتی Patty incident را توصیف میکند، سریع همهٔ changeهای مرتبط هفتاد و دو ساعت گذشته را ارائه میدهد.
وقتی تمام میکند، با قاطعیت به کل تیم میگویم: «اول و مهمتر از همه در ذهنم خطر از دست دادن transactionهاست. خانمها و آقایان، باید خیلی واضح بگویم: بدون تأیید من هیچ چیزی را دست نزنید. این outageای نیست که با آن سر و کار داریم. در وضعیتی هستیم که ممکن است تصادفاً دادهٔ order entry یا accounts receivable را از دست بدهیم. این مرا میترساند. و باید مطلقاً شما را هم بترساند.
«همانطور که Patty گفت، به timelineها و hypotheses برای آنچه ممکن است باعث fail شدن سیستم صورتحساب شده نیاز داریم،» میگویم. «این لحظهٔ Apollo 13 ماست و من Gene Kranz در Houston Mission Control هستم. حدس نمیخواهم. hypotheses پشتیبانیشده با facts میخواهم. پس برگردید به صفحههایتان، timelineها و داده جمع کنید، و میخواهم بهترین تفکر cause and effectتان را بشنوم. Failure is not an option.»
تا ساعت ۶ بعدازظهر، تیم Patty بیش از بیست علت احتمالی fail مختلف را مستند کرده. بعد از بررسی بیشتر، هشت تا بهعنوان احتمال محتمل باقی مانده. برای هر کدام owner تعیین شده تا بررسی کند.
وقتی میفهمیم بهعنوان گروه تا تکمیل تحقیقشان کار بیشتری نمیتوانیم بکنیم، توافق میکنیم امشب ساعت ۱۰ دوباره جمع شویم.
از یک طرف، ناامیدم که باز در بحران غوطهور شدهایم و روزمان با unplanned incident work پر شده. از طرف دیگر، رضایت عمیقی از ماهیت منظم تحقیق incident داریم و سریع به Paige پیام میدهم که بهزودی برای شام به خانواده میپیوندم.
«بابا،» میشنوم وقتی در تخت با Grant نشستهام و سعی میکنم بخواباندش و افکار outage را از سرم بیرون نگه دارم. «چرا Thomas the Tank Engine tender car ندارد؟ چرا؟»
با لبخند به او نگاه میکنم و از سؤالهایی که پسر سهسالهام میپرسد شگفتزدهام. در حال انجام ritual شبانهٔ خواندن کتاب هستیم. خوشحالم دوباره این کار را میکنم، که هر شب انجام میدادم. یا میکردم، یعنی تا تلاش بازیابی Phoenix.
بیشتر چراغها خاموش است، اما یک چراغ کمنور روشن است. تودهای کتاب روی تخت Grant است و امشب سومین کتاب است.
از خواندن کمی دهانم خشک شده. ایدهٔ استراحت کوتاه و کمی research در اینترنت دربارهٔ tender car قطار خیلی جذاب است.
عاشق کنجکاوی بچهها و علاقهشان به کتاب هستم، اما شبهایی هست که آنقدر خستهام که واقعاً در ritual شبانهمان خوابم برده. Paige میآید، مرا با یکی از کتابهای Grant روی صورتم خوابیده و Grant کنارم خوابیده پیدا میکند.
با وجود خستگی، خوشحالم آنقدر زود در خانهام که ritual شبانه با پسر بزرگترم را از سر بگیرم.
«بله، باید بفهمیم بابا،» Grant اصرار میکند. به او لبخند میزنم و گوشی را از جیب درمیآورم تا Google search برای «tank engine tender car» بزنم.
اما اول، سریع گوشی را برای هر update جدید در مشکل صورتحساب مشتری scan میکنم. از تفاوتی که دو هفته میتواند بسازد شگفتزدهام.
در آخرین incident Sev 1 که سیستمهای پردازش کارت اعتباری را زد، conference call پر از finger-pointing، انکار، و مهمتر، وقت هدررفته بود وقتی مشتریها نمیتوانستند پول بدهند.
بعد، اولین از سری blameless postmortemهای مداوم را انجام دادیم تا بفهمیم واقعاً چه شد و ایده برای جلوگیری از تکرار بسازیم. بهتر از آن، Patty سری mock incident call با all hands on deck رهبری کرد تا procedureهای جدید تمرین کنیم.
تماشایش فوقالعاده بود. حتی Wes ارزشش را دید.
خوشحالم همهٔ ایمیلها نشان میدهند اطلاعات خوب و بحث مؤثر بین تیمهایی که روی مشکل کار میکنند. telephone conference bridge و chat room را برای کسانی که روی issue کار میکنند باز نگه داشتهاند، و برنامه دارم ساعت ۱۰ شب زنگ بزنم ببینم چطور پیش میرود.
چهل و پنج دقیقه دیگر است. وقت کافی برای گذراندن با Grant که باید بهزودی بخوابد.
مرا هل میدهد، واضحاً انتظار پیشرفت بیشتر در research دارد.
«ببخش Granty. بابا حواسش پرت شد،» میگویم و browser را باز میکنم. از اینکه چقدر نتایج search همه دربارهٔ Thomas the Tank Engine است تعجب میکنم. سری کتابی که franchise چند میلیارد دلاری toy train، لباس، ویدیو و coloring book ساخته. با دو پسر، به نظر میرسد سرنوشتمان داشتن دو تا از هر item است.
دارم entry امیدوارکنندهٔ Wikipedia دربارهٔ قطارها را میخوانم که گوشی میلرزد و صفحه «Call from Steve Masters» را نشان میدهد.
آه میکشم و ساعت را دوباره چک میکنم. ۹:۱۵ شب است.
اخیراً جلسات و تماسهای زیادی با Steve داشتهام. در ذهنم میپرسم چند تا از این جلسات را میتوانم تحمل کنم.
از طرف دیگر، بعد از فاجعهٔ Phoenix، هر outage و incident در مقایسه پیش پا افتاده است، درست است؟
با ملایمت میگویم: «صبر کن Grant. بابا باید تلفن بگیرد. زود برمیگردم.» از تختش بیرون میپرم و به راهروی تاریک میروم.
خوشحالم چند ثانیه قبل همهٔ email traffic outage را scan کرده بودم. قبل از زدن دکمهٔ جواب، نفس عمیق میکشم.
میگویم: «Bill اینجاست.»
صدای بلند Steve در گوشم میترکد. «عصر بخیر Bill. خوشحالم آنجایی. البته از مشکلات صورتحساب مشتری از Dick خبر داری؟»
«بله، البته،» جواب میدهم، از لحنش تعجب میکنم. «تیمم امروز بعدازظهر زود major incident اعلام کرد و از آن زمان روی این issue کار میکنیم. هر ساعت status report فرستادهام. Dick و من امشب بیست دقیقه تلفنی حرف زدیم. میدانم مشکل جدی است و تیمم processای را دنبال میکند که بعد از fail payroll ساختیم. کاملاً راضیم process کار میکند.»
«خب تازه با Dick تلفن بودم و میگوید داری کند پیش میروی،» Steve میگوید، واضحاً خیلی عصبانی. «واضحاً شب به خاطر گپ زدن زنگ نمیزنم. یک screwup دیگر IT همهچیز را به خطر میاندازد. نقدینگی شریان حیاتی شرکت است و اگر نتوانیم مشتریها را invoice کنیم، پول نمیگیریم!»
به training قدیمی برای handle کردن مردم ناامید تکیه میکنم و با آرامش آنچه گفتهام را تکرار میکنم. «همانطور که گفتم، امروز با Dick حرف زدم. خیلی همهٔ implications را به من فهماند. process incident جدیدمان را فعال کردهایم و methodically داریم بررسی میکنیم چه چیزی ممکن است باعث fail شده. دقیقاً همان کاری را میکنند که میخواهم، چون با این همه قطعهٔ متحرک، خیلی راحت است با jump to conclusion اوضاع را بدتر کنی —»
«در دفتر هستی؟» Steve میپرسد و قبل از تمام کردن حرفم قطعم میکند.
سؤالش واقعاً غافلگیرم میکند.
«اوه… نه، در خانهام،» جواب میدهم.
نگران است مشکل را delegate کردهام؟ برای تقویت نقشم در handle کردن بحران و انتظاراتم از تیم میگویم: «ساعت ده war bridge line را call میکنم. مثل همیشه duty officer در site است و کسانی از staffم که باید در دفتر باشند آنجا هستند.»
بالاخره رک میپرسم: «Steve، میخواهی بگویی چه فکری میکنی؟ روی این وضعیت هستم. چه چیزی لازم داری که الان نمیگیری؟»
داغ جواب میدهد: «آنچه از تو میخواهم حس urgency است. Dick و تیمش نیمهشب روغن میسوزانند تا بفهمند فصل ما در شش روز کاری چطور تمام میشود. اما فکر میکنم جواب را میدانم.»
ادامه میدهد: «احتمالاً تقریباً همهٔ targetهایی که به board قول دادهایم را از دست میدهیم: revenue، cash، receivables — همهچیز. در واقع، هر measureای که به board قول دادهایم در جهت اشتباه میرود! این screwup ممکن است suspicion board را تأیید کند که کاملاً کنترل مدیریت این شرکت را از دست دادهایم!»
Steve تقریباً غرغر میکند وقتی میگوید: «پس آنچه از تو میخواهم Bill این است که بهاندازهٔ کافی روی چیزها باشی تا CFOام نگوید داری کند پیش میروی. خانه دارد میسوزد و همهٔ چیزی که از تو میشنوم نقاشی و timeline است. چه مرگت شده؟ میترسی مردم را از تخت بیرون بکشی؟»
دوباره شروع میکنم: «Steve، اگر فکر میکردم کمک میکند، همه را امشب all-nighter در data center میآوردم. برای Phoenix بعضیها تقریباً یک هفته خانه نرفتند. باور کن، میدانم خانه دارد میسوزد، اما الان بیش از هر چیز situational awareness لازم داریم. قبل از اینکه تیمها با fire hose از در جلو بریزند، باید حداقل کسی سریع دور حیاط را بگردد — وگرنه خانههای کناری را هم میسوزانیم!»
میفهمم در سکوت نسبی خانه وقتی سعی میکنیم بچهها بخوابند صدایم را بلند کردهام. آرامتر ادامه میدهم: «و فقط در صورت فراموشی، در outage payroll، خودمان outage را بدتر کردیم. احتمالاً میتوانستیم payroll run را در ساعات کاری complete کنیم اگر کسی شروع نکرده بود به SAN دست بزند. بهخاطر آن شش ساعت دیگر به outage اضافه کردیم و تقریباً دادهٔ payroll را از دست دادیم!»
امیدم که صدای آرام منطق به او میرسد وقتی میشنوم میگوید: «آه، بله؟ فکر نمیکنم تیمت با تو موافق باشد. اسم آن آدم باهوش که معرفیم کردی چی بود؟ Bob؟ نه Brent. امروز با Brent حرف زدم و خیلی skeptical از approach توست. فکر میکند کاری که میکنی مردمی که واقعاً کار را انجام میدهند را از آنچه باید انجام شود جدا میکند. Brent الان چه کار میکند؟»
لعنت.
شفافیت را دوست دارم. همیشه سعی میکنم تیمم کاملاً در دسترس boss و business باشد. اما همیشه risk در این کار هست.
مثل اینکه Brent نظریههای دیوانهاش را به CEO بگوید.
«امیدوارم Brent در خانه باشد، چون دقیقاً جایی است که باید باشد،» جواب میدهم. «تا مطمئن نشویم دقیقاً چه اشتباهی شده، آنجا میخواهمش باشد. ببین، rocket scientistهایی مثل او اغلب خودشان مشکل را ایجاد میکنند. هر بار به Brent escalate میکنیم، وابستگی به او را perpetuate میکنیم و کمتر احتمال میرود بدون او درست کنیم!»
با suspicion که دارم Steve را از دست میدهم، دوباره شروع میکنم: «روش آشفتهای که الان کار میکنیم، Brent تقریباً هر روز دارد punctured hullها را درست میکند. تقریباً مطمئنم Brent یکی از دلایل اصلی است که hull اصلاً puncture میشود. البته malicious نیست، فقط side effect روشی است که اینجا کار میکنیم و outageها را fix میکنیم.»
مکث. بعد آهسته و قاطع میگوید: «خوشحالم اینقدر professorial دربارهاش حرف میزنی، اما wildfire داریم که کنترلش از دست رفته. تا الان به روش تو کار کردیم. و حالا به روش من کار میکنیم.
«میخواهم Brent را صدا بزنی و آستینش را بالا بزند و کمک fix کردن این outage کند. و فقط Brent نه. میخواهم همه eyeballها روی screen و همه handها روی keyboard. من Captain Kirk هستم. تو Scotty. و warp speed میخواهم، پس lazy engineerهایت را از assشان بلند کن! فهمیدی؟»
Steve آنقدر بلند فریاد میزند که گوشی را از گوشم دور میگیرم.
ناگهان عصبانیام. Steve دوباره همهچیز را خراب میکند.
روزهای Marines را به یاد میآورم و بالاخره میگویم: «Permission to speak freely, sir?»
Steve در خط دیگر با تمسخر خرخر میکند. «بله، لعنتی.»
«فکر میکنی بیش از حد محتاطم و مردد در انجام آنچه لازم است. اما اشتباه میکنی. کاملاً اشتباه،» قاطع میگویم. «اگر کاری که فکر میکنم پیشنهاد میدهی را بکنی، که اساساً 'all hands on deck' است، پیشبینی میکنم خیلی بدترش میکنیم.»
ادامه میدهم: «قبل از launch Phoenix سعی کردم چیز بسیار مشابهی به تو advise کنم. تا الان بهاندازهٔ کافی disciplined در نحوهٔ کار روی outageها نبودهایم. با همهٔ complexity و قطعات متحرک، احتمال زیاد ایجاد مشکل دیگر هست. شاید دقیقاً ندانم چه باعث مشکل صورتحساب مشتری شده، اما بهاندازهٔ کافی میدانم که آنچه پیشنهاد میدهی ایدهٔ بسیار بدی است. توصیه میکنم ادامه دهیم در خطی که الان پیش میبرم.»
نفس حبس میکنم و منتظر واکنشش میمانم.
آهسته میگوید: «متأسفم اینطور فکر میکنی Bill، اما کشوها در سمت میز من باز است. میگویم الان DEFCON 1 است، پس برو smartترین مردم را روی این مشکل بگذار. و تا fix شود هر دو ساعت status update دربارهٔ این IT failure میخواهم. فهمیدی؟»
قبل از اینکه فکر کنم چه بگویم، خودم میگویم: «نمیدانم چرا از من میخواهی. مستقیم با مردم من حرف میزنی و همهٔ shotها روی زمین را خودت میزنی. خودت انجام بده. نمیتوانم مسئول نتایج این وضعیت FUBAR باشم.»
و قبل از قطع کردن میگویم با قطعیت: «و استعفایم را فردا صبح انتظار داشته باش.»
عرق پیشانی را پاک میکنم و از گوشی بالا نگاه میکنم و Paige همسرم با چشمان گشادشده به من خیره است.
«دیوانهای؟ تازه استعفا دادی؟ همینطور؟ حالا قبضها را چطور میپردازیم؟» صدایش بلند میشود.
زنگ گوشی را خاموش میکنم و برمیگردانمش به جیب و میگویم: «عزیزم، مطمئن نیستم چقدر از آن مکالمه را شنیدی، اما بگذار توضیح بدهم…»