حالت تاریک
فصل ۲۸ — دوشنبه، ۲۷ اکتبر
در راه سر کار، مجبور میشوم بخاری صندلی را ماهها زودتر از معمول روشن کنم.
امیدوارم این زمستان به بدی سال گذشته نباشد. بستگان Paige، بدبینترین آدمهایی که دیدهام، شروع کردهاند بپرسند شاید واقعاً چیزی در این ماجرای تغییر اقلیم جهانی باشد.
وقتی به دفتر میرسم، لپتاپ را از کیف درمیآورم و به سرعت روشن شدنش لبخند میزنم. در حالی که گزارشی برای Steve دربارهٔ پیشرفت شش هفتهٔ گذشته مینویسم، چیزی دربارهٔ لپتاپ جدید نمیگذارم، ولی میخواهم.
برای من، لپتاپ نمایانگر همهٔ دستاوردهای تیمم است. بهشدت به آنها افتخار میکنم. زندگی حالا متفاوت است. تعداد outageهای Sev 1 این ماه بیش از دو سوم کم شده. زمان بازیابی حادثه هم کم شده، احتمالاً بیش از نصف.
بینشی که از آن اولین جلسهٔ عجیب با Dick و John گرفتهایم به من میگوید دقیقاً در مسیر فهمیدن چطور واقعاً به برد کسبوکار کمک کنیم هستیم.
ایمیل را باز میکنم؛ یادداشتی از Kirsten میبینم. همهٔ project managerهایش از اینکه پروژهها خیلی سریعتر جریان دارند لاف میزنند.
تعداد taskهای منتظر Brent و بقیهٔ IT Operations خیلی کم شده. در واقع، اگر درست گزارش را بخوانم، Brent تقریباً بهروز شده.
در جبهه پروژه، وضعیت فوقالعاده است — بهویژه با Phoenix.
یک deployment دیگر Phoenix برای جمعه برنامهریزی شده. فقط دستهای رفع باگ است، بدون قابلیت عمدهٔ اضافه یا تغییر، پس باید خیلی بهتر از دفعهٔ قبل باشد. همهٔ deliverableها را بهموقع تمام کردهایم، ولی مثل همیشه هنوز میلیون جزئیات باقی مانده.
سپاسگزارم تیم میتواند اینقدر روی Phoenix متمرکز بماند، چون زیرساخت را پایدار کردهایم. وقتی outage و incidentهای اجتنابناپذیر رخ میدهند، مثل ماشین روغنکاریشده کار میکنیم. دانش قبیلهای میسازیم که کمک میکند سریعتر از همیشه چیزها را درست کنیم، و وقتی باید escalate کنیم، کنترلشده و منظم است.
بهخاطر monitoring production همیشه بهتر زیرساخت و اپلیکیشنها، بیشتر وقتها قبل از کسبوکار از incidentها باخبریم.
backlog پروژه خیلی کم شده، بخشی از حذف پروژههای احمقانه از صف. John هم وعدهاش را عملی کرده. دستهای پروژهٔ امنیتی غیرضروری از آمادهسازی و remediation ممیزی حذف کردهایم و با پروژههای امنیتی پیشگیرانه جایگزین کردهایم که کل تیمم کمک میکند. با اصلاح فرآیندهای development و deployment، اپلیکیشنها و زیرساخت production را بهشکل معنادار و نظاممند سختگیرانه و امن میکنیم. و اطمینان میگیریم آن defectها دیگر تکرار نشوند.
جلسات change management روانتر و منظمتر از همیشه پیش میروند. نه فقط دید به کار تیمها داریم؛ کار واقعاً جریان دارد.
بیش از پیش، مردم دقیقاً میدانند روی چه باید کار کنند. از درست کردن چیزها رضایت میگیرند. میشنوم خوشحالتر و امیدوارترند، چون واقعاً میتوانند کارشان را بکنند.
عجیب است چقدر واضحتر دنیا IT را میبینم و چقدر با دو ماه پیش فرق دارد.
آزمایشهای Patty برای kanban دور Brent موفق است. مواردی هم پیدا میکنیم که کار به Brent برمیگردد، چون task یا outcome را نفهمیده یا کافی مشخص نکردهایم و Brent باید ترجمه یا درستش کند.
حالا وقتی این اتفاق میافتد، سریع میپریم رویش تا دوباره رخ ندهد.
و فقط کار Brent نیست که بهبود میدهیم. با کم کردن پروژههای در پرواز، laneهای کار روشن نگه میداریم تا کار از یک work center به دیگری سریع برود و در زمان رکورد تمام شود.
تقریباً ticketing system را از کار کهنه خالی کردهایم. یک بار حتی ticketی پیدا کردیم Wes بیش از ده سال پیش بهعنوان junior engineer گذاشته — برای ماشینی که مدتها از رده خارج شده. حالا اطمینان داریم همهٔ کار در سامانه مهم است و واقعاً شانس تکمیل دارد.
دیگر Bates Motel کار نیستیم.
خلاف انتظار staff، مدام تعداد پروژههایی که فکر میکنیم همزمان میتوانیم handle کنیم را بالا میبریم. چون flow کار را بهتر میفهمیم و با مدیریت دقیق اینکه کدامها به Brent میروند، میبینیم میتوانیم release بیشتری بدون تأثیر روی commitmentهای فعلی انجام دهیم.
دیگر Erik را دیوانهٔ پارانوئید نمیبینم، ولی حتماً عجیبوغریب است. حالا که نتایج را با چشم خودم در سازمانم دیدهام، میدانم کار IT Operations خیلی شبیه کار plant است. Erik بارها گفته بهبودهای تا امروز فقط نوک کوه یخ است.
Erik میگوید داریم First Way را تسلط مییابیم: handoff defectها به work centerهای downstream را مهار میکنیم، flow کار را مدیریت میکنیم، tempo را با constraintها تنظیم میکنیم، و بر اساس نتایج ممیزی و Dick، بهتر از همیشه میفهمیم چه مهم است و چه نه.
در پایان، بخش retrospective را رهبری کردم؛ خودارزیابی کردیم چطور عمل کردیم و کجا باید بهتر شویم. وقتی کسی گفت باید در جلسات postmortem و root cause analysis outageها افراد Development را دعوت کنیم، فهمیدم در راه فهم Third Way Erik هم هستیم.
همانطور که Erik مدام یادآوری میکند، تیم عالی وقتی بهترین عمل میکند که تمرین کند. تمرین عادت میسازد و عادت mastery هر فرآیند یا مهارت. چه ورزشهای بدنی، تمرین ورزشی، نواختن ساز، یا در تجربهٔ من، drill بیپایان در Marines. تکرار، بهویژه برای چیزهایی که teamwork میخواهند، trust و transparency میسازد.
هفتهٔ گذشته، در آخرین drill outage دوهفتهای، خیلی تحتتأثیر بودم. داریم خیلی خوب میشویم.
مطمئنم اگر failure payroll روز اول کاریام حالا رخ میداد، کل payroll run را — نه فقط staff حقوقبگیر، بلکه staff ساعتی هم — تمام میکردیم.
John سریع از Dick و Steve تأیید گرفت outsourcer کافهتریا POS را بگیرد و با چیزی با پشتیبانی تجاری جایگزین کند.
برای Wes، Patty و من exercise جذابی بود با John requirements outsource POS کافهتریا را بچینیم. در due diligence، از همهٔ outsourcerهای احتمالی همان dogmaهایی را میشنویم که قبل از Erik باور داشتیم. جالب است ببینیم میتوانیم آنها را بازآموزی کنیم.
به نظرم اگر کسی IT را manage کند بدون حرف از Three Ways، با فرضهای خطرناک و نادرست IT را manage میکند.
در حال فکر کردن به این، تلفن زنگ میخورد. John است.
وقتی جواب میدهم میگوید: «تیمم امروز چیز نگرانکنندهای پیدا کرد. برای جلوگیری از فعالیتهای IT بازار سیاه غیرمجاز، شروع کردهایم بهطور منظم همهٔ پروژههای پیشنهادی ورودی به Project Management Office Kirsten را review کنیم. همهٔ credit cardهای شرکت را هم برای chargeهای تکراری که شاید online یا cloud service باشد جستجو میکنیم — شکل دیگر IT غیرمجاز. بعضیها دور project freeze میروند. وقت داری حرف بزنی؟»
«ده دقیقه دیگر جلسه کنیم،» میگویم. «من را معلق نگذار. کی میخواهد از پشت در سامانه وارد شود؟»
John را آن طرف خط میشنوم که میخندد. «Sarah. کی دیگر؟»
Wes و Patty را به جلسهٔ فوری دعوت میکنم ولی فقط Patty میتواند بیاید.
John آنچه پیدا کرده ارائه میدهد. گروه Sarah چهار مورد استفاده از vendorهای بیرونی و سرویسهای آنلاین دارد. دو تا نسبتاً بیضررند ولی دو تا جدیتر: با vendor برای پروژهٔ ۲۰۰٬۰۰۰ دلاری data mining مشتری قرارداد بسته، و vendor دیگری برای اتصال به همهٔ POSها تا دادهٔ فروش برای تحلیل مشتری بگیرد.
«اولین مشکل این است که هر دو پروژه سیاست حریم خصوصی دادهای را که به مشتریان دادهایم نقض میکند،» John میگوید. «بارها قول دادهایم داده را با partner به اشتراک نمیگذاریم. عوض کردن سیاست البته تصمیم کسبوکار است. ولی شک نکن، اگر initiative data mining مشتری را جلو ببریم، با سیاست حریم خصوصی خودمان خارج از انطباق هستیم. شاید حتی چند قانون حریم خصوصی ایالتی را نقض کنیم که مسئولیت حقوقی ایجاد میکند.»
خوب به نظر نمیرسد، ولی لحن John بدتر هم هست. «مشکل دوم این است که vendor Sarah همان فناوری دیتابیس را استفاده میکند که برای POS کافهتریا داشتیم — میدانیم تقریباً غیرممکن است در production امن و قابل پشتیبانی نگه داریم، اگر و وقتی بخشی از عملیات روزانه شود.»
صورتم داغ میشود. فقط POS کافهتریا دیگر نیست که باید برای production بازطراحی کنیم. اپلیکیشنهایی مثل این به دادهٔ نادرست ثبت سفارش فروش و مدیریت موجودی کمک میکنند. آشپزخانه پر از آشپز است و کسی مسئول حفظ یکپارچگی داده نیست.
«ببین، به ابزارهای project management و invoicing Sarah اهمیت نمیدهم — اگر کارآمدترشان کند، بگذار استفاده کنند،» میگویم. «احتمالاً ایمن است تا با سامانهٔ کسبوکار موجود وصل نشود، دادهٔ محرمانه ذخیره نکند، گزارشدهی مالی را تحت تأثیر نگذارد، یا هر چیز. ولی اگر بکند، باید درگیر شویم و حداقل تأیید کنیم تعهدات فعلی را تحت تأثیر نمیگذارد.»
«موافقم،» John میگوید. «میخواهی اولین پیشنویس سند سیاست IT service برونسپاریشده را من بزنم؟»
«عالی،» میگویم. ولی با اطمینان کمتر ادامه میدهم: «البته، راه درست برخورد با Sarah چیست؟ کاملاً از آب درآمدم. Steve مدام از او محافظت میکند. چطور به او هرجومرج بالقوهای که با پروژههای غیرمجازش ایجاد میکند را بفهماند؟»
مطمئن میشوم در John بسته است و به John و Patty میگویم: «بچهها کمک کنید. Steve در او چه میبیند؟ چطور با این همه آشغال راه میافتد؟ چند هفتهٔ گذشته دیدم Steve چقدر سختگیر میتواند باشد، ولی Sarah مدام با قتل راه میافتد. چرا؟»
Patty منفجر میشود. «اگر Steve زن بود، میگفتم به مردان خطرناک جذب است. سالهاست چندتایی از ما دربارهٔ این حدس زدهایم. باید بگویم در اردوی خارج از دفتر آخر تقریباً تأیید شد.»
وقتی میبیند John و من با علاقه جلو خم شدهایم، لبخند میزند. «Steve به خودش افتخار میکند آدم عملیات است و چند بار در جلسات شرکت اعتراف کرده ذوق استراتژی ندارد. فکر میکنم به همین دلیل با boss قدیمی و chairman جدید Bob اینقدر دوست بود. دهه Bob آدم استراتژی بود و Steve فقط چشمانداز را اجرا میکرد.
«سالها Steve دنبال آدم استراتژی برای دست راستش بود. چند executive رد کرد، حتی دو تا را در رقابت افتضاح و طولانی علیه هم گذاشت. خیلی ماکیاولی،» ادامه میدهد. «Sarah برنده شد. شایعه این بود خنجر از پشت و tacticهای زیرپوستی زیاد بود، ولی گمانم برای بالا آمدن لازم است. ظاهراً یاد گرفته حرفهای درست را در گوشش زمزمه کند و پارانویا و آرزوهای او را تقویت کند.»
توضیح Patty خیلی پیچیدهتر از هر چیزی است که من فکر کردهام. در واقع بهشکل چشمگیری شبیه چیزی است که Paige وقتی آن نگاه دور و عصبانی را سر شام میگرفتم حدس میزد.
John با ناراحتی میگوید: «ام… فکر نمیکنی بینشان چیزی هست؟ مثل… نامناسب؟»
ابروهایم را بالا میبرم. من هم فکر کرده بودم.
Patty میترکد از خنده. «قضاوت آدمها را خوب بلدم. هر دو والدم psychologist بودند. اگر درست بود هر دو diplomaشان را میخورم.»
وقتی چهرهام را میبیند، بیشتر میخندد. «ببین، حتی Wes باور نمیکند، و کسی drama بهتر از او نمیسازد. Sarah از Steve میترسد مرگ! دیدهای وقتی کسی حرف میزند Sarah همیشه هنوز به Steve نگاه میکند، واکنش او را بسنجد؟ واقعاً عجیب است.»
ادامه میدهد: «Steve برای کوتاهیهای Sarah کور است، چون چیزی دارد که او نیاز دارد و تحسین میکند: توانایی استراتژی خلاق، بدون توجه به خوب یا بد بودنش. از طرف دیگر، چون Sarah ناامن است، هر کاری میکند بد به نظر نیاید.
«اصلاً به تعداد قربانیان پشت سرش اهمیت نمیدهد، چون میخواهد CEO بعدی Parts Unlimited باشد،» Patty میگوید. «و ظاهراً Steve هم. سالهاست او را برای جانشینی آماده میکند.»
«چی؟ CEO بعدی ما میتواند باشد؟» با وحشت فریاد میزنم و سریع قهوهای را که روی میز کنفرانس John پاشیدهام پاک میکنم.
«وای boss. زیاد دور آبسردکن نمیچرخی، هان؟» Patty میگوید.
روز deployment Phoenix است و Halloween را با بچههایم از دست دادهام.
الان ۱۱:۴۰ شب است. دوباره دور میز کنفرانس NOC ایستادهایم و حس نگرانکنندهٔ déjà vu دارم. پانزده نفر اینجا هستند، از جمله Chris و William.
بیشتر مردم با لپتاپهای باز دور میز جمع شدهاند؛ جعبههای pizza و wrapperهای آبنبات پشت سرشان. چند نفر دیگر کنار whiteboard checklist یا diagram را نشان میدهند.
سه ساعت بیشتر از برنامه طول کشید Phoenix را به محیط test QA migrate کنیم و همهٔ testها pass شوند. بهتر از deployment قبلی است، ولی فکر میکردم با کار سخت روی بهبود فرآیند deployment مشکل کمتری داشته باشیم.
ساعت ۹:۳۰ شب بالاخره آماده migration به production بودیم. همهٔ testها pass شده بود و Chris و William تأیید deploy دادند. Wes، Patty و من گزارش testها را دیدیم و چراغ سبز شروع deployment دادیم.
بعد همهچیز به هم ریخت.
یکی از گامهای حیاتی migration دیتابیس fail شد. فقط سی درصد گامهای deployment تمام شده بود و دوباره گیر کرده بودیم. بهخاطر تغییرات دیتابیس و scriptهای اجراشده، rollback در وقت باقیمانده قبل از باز شدن فروشگاهها فردا صبح ممکن نبود.
دوباره باید جلو بجنگیم تا به گام بعد برسیم و deployment از سر گرفته شود.
به دیوار تکیه دادهام و کار همه را تماشا میکنم، دستهایم روی سینه، سعی میکنم راه نروم. آزاردهنده است دوباره با deployment Phoenix بد درگیریم، با پیامدهای بالقوهٔ فاجعهبار.
از طرف دیگر، نسبت به دفعهٔ قبل خیلی آرامتر است. تنش و بحثهای داغ هست، ولی همه شدیداً روی حل مسئله متمرکزاند. همهٔ store managerها را از پیشرفتمان باخبر کردهایم و همه رویهٔ fallback دستی آماده دارند، در صورتی که POSها وقتی فروشگاهها باز میشوند down باشند.
Wes چیزی به Brent میگوید، بلند میشود پیشانی را خسته میمالد و به سمت من میآید. Chris و William هم بلند میشوند و دنبالش میآیند.
نیمه راه به آنها میروم. «خب؟» میپرسم.
«خب،» Wes وقتی نزدیک میشود آهسته میگوید. «مدرک قطعی را پیدا کردیم. تازه فهمیدیم Brent دو هفته پیش تغییری در دیتابیس production داده تا ماژول business intelligence Phoenix را پشتیبانی کند. کسی نمیدانست، حتی مستند نشده. با بعضی تغییرات دیتابیس Phoenix تداخل دارد، پس بچههای Chris باید بازنویسی کد کنند.»
«لعنت،» میگویم. «صبر. کدام module Phoenix؟»
«یکی از پروژههای Sarah است که بعد از برداشته شدن project freeze release کردیم،» جواب میدهد. «قبل از kanban دور Brent بود. تغییر schema دیتابیس بود که از شکافها رد شد.»
زیر لب فحش میدهم. دوباره Sarah؟
Chris چهرهای درهم دارد. «این سخت میشود. باید دستهای ستون دیتابیس rename کنیم که شاید صدها file را تحت تأثیر بگذارد. و همهٔ support scriptها. کار دستی و خیلی مستعد خطا.»
به William برمیگردد. «چه کاری میتوانیم بکنیم حداقل تست پایه قبل از ادامه deployment انجام شود؟»
William کمی حالش بد است، عرق را با دست از صورت پاک میکند. «خیلی، خیلی… پرریسک… میتوانیم تست کنیم، ولی شاید خطاها را تا رسیدن به آن خطوط code پیدا نکنیم. یعنی failure در production، جایی که application منفجر میشود. شاید POSهای فروشگاهی را هم down کند، و آن بد است.»
به ساعت نگاه میکند. «فقط شش ساعت برای تمام کار داریم. چون وقت اجرای دوباره همهٔ testها نیست، میانبر میگیریم.»
ده دقیقه بعد برنامهٔ بازنگریشده میکشیم که تا ۶ صبح تمام شود و فروشگاهها با یک ساعت اضافه عادی باز شوند. Chris و William برای اطلاعرسانی به teamها میروند؛ به Wes اشاره میکنم بماند.
«وقتی از بحران بیرون آمدیم،» میگویم، «باید بفهمیم چطور دوباره رخ ندهد. باید مطلقاً هیچ راهی نباشد Dev و QA با production یکی نباشند.»
«حق با توست،» Wes میگوید و سرش را با باورنکردنی تکان میدهد. «نمیدانم چطور. ولی از من اعتراضی نداری.»
پشت سرش به Brent نگاه میکند، باورنکردنی. «باور میکنی Brent دوباره در مرکز همهٔ این است؟»
خیلی بعدتر، وقتی deployment کامل اعلام میشود، همه کف میزنند. به ساعت نگاه میکنم. ۵:۴۲ صبح شنبه است. تیم تمام شب کار کرد و deployment بیست دقیقه زودتر تمام شد. یعنی بیست دقیقه زودتر طبق برنامهٔ اضطراری که با هم چکیدیم. طبق برنامهٔ اصلی، تقریباً شش ساعت دیر تمام شد.
William تأیید کرده POSهای test کار میکنند، و وبسایت e-commerce و همهٔ moduleهای مرتبط Phoenix.
Patty شروع کرده به store managerها اطلاع دهد deployment «موفق» بود. فهرست خطاهای شناختهشده برای مراقبت، صفحهٔ وب داخلی برای آخرین وضعیت Phoenix، و دستورالعمل گزارش مشکل جدید ضمیمه میکند. همهٔ افراد service desk در آمادهباش هستند و teamهای Chris و من on-call برای پشتیبانی early life. اساساً همه برای پشتیبانی کسبوکار در آمادهباشیم.
Wes و Patty برنامهٔ on-call را مدیریت میکنند؛ به همه «کار خوب» میگویم و وسایلم را جمع میکنم. در راه خانه، مغزم را میکوبم، فکر میکنم چطور هر deployment Phoenix را از تبدیل شدن به اورژانس جلوگیری کنیم.