حالت تاریک
فصل ۳۴ — جمعه، ۲۸ نوامبر
ظهر چهارشنبه، دقیقاً وسط Thanksgiving، فهمیدیم در دردسر هستیم. promotion ایمیلی شبانهٔ Unicorn موفقیت باورنکردنی بود. نرخ پاسخ بیسابقه بالا بود، ترافیک وبسایتمان به رکورد رسید و مدام سامانههای e-commerce ما را از کار میانداخت.
یک Sev 1 emergency call راه انداختیم و همهٔ نوع measure اضطراری برای حفظ توانایی ثبت سفارش گذاشتیم، از جمله سرور بیشتر به rotation و خاموش کردن featureهای computationally-intensive.
طنزآمیز است یکی از developerها پیشنهاد داد همهٔ recommendationهای real-time را خاموش کنیم — همان چیزی که اینقدر سخت برای ساختنش تلاش کرده بودیم. چرا محصول بیشتر recommend کنیم، استدلال کرد، اگر مشتریان حتی نمیتوانند transaction را تمام کنند؟
Maggie سریع موافقت کرد، اما هنوز دو ساعت طول کشید تا developerها تغییر دهند و deploy کنند. حالا این feature با configuration setting غیرفعال میشود، پس دفعهٔ بعد ظرف چند دقیقه میتوانیم، بهجای rollout کامل کد.
این را طراحی برای IT Operations مینامم! مدیریت کد در production هر روز آسانتر میشود.
همچنین مدام queryهای database را optimize کردیم و بزرگترین گرافیکهای سایت را به third-party content distribution network منتقل کردیم و ترافیک بیشتری از سرورهایمان offload کردیم. اواخر بعدازظهر Thanksgiving، تجربهٔ مشتری به چیزی قابل تحمل بهبود یافت.
درگیری واقعی صبح روز بعد شروع شد. اگرچه تعطیل رسمی شرکت است، همهٔ staff خودم را به دفتر برگرداندهام.
Wes، Patty، Brent و Maggie برای جلسهٔ ظهر اینجا هستند. Chris هم هست، اما ظاهراً تصمیم گرفته فراخوانده شدن امروز dress code متفاوتی میطلبد. پیراهن Hawaiian زشت و جین پوشیده و برای همه قهوه و doughnut آورده.
Maggie چند دقیقه پیش جلسه را برگزار کرد. «امروز صبح، مدیران فروشگاه برای Black Friday درها را باز کردند. از لحظهٔ باز شدن، مردم ریختند داخل و printout ایمیل promotion Unicorn را تکان میدادند. ترافیک فروشگاه امروز در سطح رکورد است. مشکل این است که کالاهای promoteشده تقریباً کاملاً تمام شدهاند. مدیران فروشگاه panic کردند چون مشتریان عصبانی و دست خالی بیرون میرفتند.
«وقتی مدیران فروشگاه rain check صادر میکنند یا کالا را از انبار برای مشتری ship میکنند، مجبورند سفارش را از انبار بهصورت دستی key in کنند. حداقل پانزده دقیقه برای هر سفارش طول میکشد، که صفهای طولانی در فروشگاه و مشتریان ناامیدتر میسازد.»
همین موقع speakerphone روی میز beep میزند. «Sarah dialing in. چه کسی روی خط است؟»
Maggie چشم میغلتاند و چند نفر زیر لب به هم میگویند. تلاشهای Sarah برای تضعیف Unicorn حالا معروف است. Maggie دو دقیقه طول میکشد همهٔ حاضران در call را معرفی کند و Sarah را بهروز کند.
«ممنون،» Sarah میگوید. «روی call میمانم. لطفاً ادامه دهید.»
Maggie مؤدبانه تشکر میکند و طوفان فکری برای حل مشکلات را شروع میکند.
یک ساعت بعد، بیست action item تولید کردیم که تمام آخر هفته روی آنها کار میکنیم. صفحهٔ وب برای پرسنل فروشگاه میگذاریم که coupon promotion code را تایپ کنند و cross-shipment از انبارها automate شود. علاوه بر این، form جدیدی در صفحهٔ حساب مشتری میسازیم که کالا مستقیم به آنها deliver شود.
لیست بلندی است.
صبح دوشنبه، وضعیت پایدار شده. که خوب است، چون جلسهٔ هفتگی Unicorn با Steve داریم.
Chris، Wes، Patty و John اینجا هستند. برخلاف جلسات قبلی، Sarah هم هست. با دستهای گرهخورده نشسته، گاهی باز میکند تا روی iPhone برای کسی پیام بزند.
Steve با لبخند پهن به همه میگوید: «میخواهم برای همهٔ کار سختتان تبریک بگویم. فراتر از انتظارات وحشیانهام نتیجه داد. بهلطف Unicorn، فروش فروشگاه و وب هر دو رکورد میشکنند و درآمد هفتگی رکورد میسازد. با run rate فعلی، Marketing تخمین میزند این quarter به سود برسیم. اولین quarter سودده از وسط سال گذشته خواهد بود.
«صمیمانهترین تبریکها به همه،» میگوید.
همه بهجز Sarah به خبر لبخند میزنند.
«این فقط نیمی از داستان است Steve،» Chris میگوید. «تیم Unicorn دارد لگد میزند. از deployment هر دو هفته به هر هفته رسیدهاند و حالا experiment میکنیم deployment روزانه. چون batch size خیلی کوچکتر است، تغییرات کوچک خیلی سریع میدهیم. حالا همیشه A/B testing میکنیم. خلاصه، هرگز نتوانستهایم اینقدر سریع به بازار پاسخ دهیم، و مطمئنم خرگوشهای بیشتری از این کلاه درمیآوریم.»
با تأکید سر تکان میدهم. «گمان میکنم برای هر application جدیدی که درونسازمانی توسعه میدهیم مدل Unicorn را دنبال کنیم. scale کردنش آسانتر است و مدیریتش هم آسانتر از هر applicationی که قبلاً support کردهایم. فرآیندها و procedureها را طوری میچینیم که با هر rate لازم deploy کنیم و سریع به مشتری پاسخ دهیم. در بعضی موارد حتی به developerها اجازه میدهیم کد deploy کنند. developer دکمه را میزند و ظرف چند دقیقه کد در محیط testing یا production است.»
«باورم نمیشود در این مدت کوتاه اینقدر جلو رفتهایم. به همهٔ شما افتخار میکنم،» Steve میگوید. «میخواهم برای کار واقعاً با هم و شایستهٔ اعتماد یکدیگر بودن تقدیر کنم.»
«دیر رسیده بهتر از هرگز، فکر میکنم،» Sarah میگوید. «اگر تمام تبریک به خودمان تمام شد، یک wake-up call کسبوکار دارم. اوایل این ماه، بزرگترین رقیب خردهفروشیمان شروع کرد با manufacturerهایش partner شود تا kitهای custom build-to-order بسازد. فروش بعضی از پرفروشترین کالاهایمان از زمان launch این offering بیست درصد پایین آمده.»
با عصبانیت اضافه میکند: «سالها تلاش کردم IT زیرساخت لازم برای این قابلیت را بسازد، اما فقط شنیدیم: نه، نمیشود. در حالی که رقبا توانستهاند با هر manufacturerای که بله بگوید کار کنند.»
اضافه میکند: «به همین دلیل ایدهٔ Bob برای split کردن شرکت اینقدر merit دارد. با legacy manufacturing این کسبوکار زنجیر شدهایم.»
چی؟ خرید شرکت خردهفروشی ایدهٔ خودش بود! شاید برای همه راحتتر میشد اگر فقط برای یک retailer کار میکرد.
Steve اخم میکند. «این item بعدی agenda است. بهعنوان SVP Retail Operations، حق Sarah است نیازها و riskهای کسبوکار را به این تیم بیاورد.»
Wes خرخر میکند. به Sarah میگوید: «شوخی میکنی؟ میفهمی با Unicorn چه دستاوردی داشتیم و چقدر سریع؟ چیزی که توصیف میکنی در مقایسه با کاری که تازه انجام دادیم آنقدر سخت نیست.»
روز بعد، Wes با چهرهای غیرمعمولاً غمگین وارد میشود. «آه، رئیس. متأسفانه باید بگویم فکر نمیکنم شدنی باشد.»
وقتی میخواهم توضیح دهد، میگوید: «برای کاری که رقیبمان میکند، باید سامانهٔ planning منابع manufacturing را که همهٔ کارخانهها را support میکند کاملاً rewrite کنیم. application mainframe قدیمی است که دههها استفاده میکنیم. سه سال پیش outsource کردیم. بیشتر چون پیرمردهایی مثل تو بهزودی بازنشسته میشدند.
«بدون توهین،» اضافه میکند. «سالها پیش خیلی از mainframe people را layoff کردیم — حقوقشان خیلی بالاتر از norm بود. یک outsourcer CIO آن زمان را قانع کرد workforce موسفید دارند که application را تا retire کردنش روی life-support نگه دارند. برنامه این بود با ERP system جدیدتر جایگزین کنیم، اما واضح است هرگز به آن نرسیدیم.»
«لعنت، ما customer هستیم و آنها supplier،» میگویم. «بگو به آنها پول میدهیم نه فقط application را maintain کنند بلکه هر تغییر business لازم را هم بدهند. طبق Sarah این تغییر لازم است. پس بفهم چقدر میخواهند و چقدر باید منتظر بمانیم.»
«این کار را کردم،» Wes میگوید و دستهای کاغذ از زیر بازو درمیآورد. «این proposal است که بالاخره فرستادند بعد از اینکه account manager احمق را از سر راه برداشتم تا واقعاً با یکی از technical analystها حرف بزنم.
«شش ماه برای gather کردن requirements میخواهند، نه ماه دیگر develop و test، و اگر خوششانس باشیم شاید یک سال دیگر production بگذاریم،» ادامه میدهد. «مشکل این است resourceهای لازم تا June در دسترس نیستند. پس دربارهٔ هجده ماه حرف میزنیم. حداقل. حتی برای شروع فرآیند، ۵۰ هزار دلار برای feasibility study و secure کردن slot در development schedule لازم دارند.»
Wes الان سرخ سرخ است و سر تکان میدهد. «آن account manager بیارزش مدام اصرار میکند contract اجازه نمیدهد کمک کند. حرامزاده. واضح است jobش این است هر چیزی که bill شود را bill کند و ما را از هر کاری خارج از contract، مثل development، منصرف کند.»
بلند نفس میکشم و پیامدها را مرور میکنم. محدودیتی که مانع رفتن به جایی که باید برویم میشود حالا خارج سازمان است. اما اگر خارج سازمان است، چه میتوانیم بکنیم؟ نمیتوانیم outsourcer را قانع کنیم اولویتها یا روشهای مدیریتش را عوض کند مثل کاری که ما کردیم.
ناگهان جرقهای از ایده به ذهنم میزند.
«چند نفر به account ما allocate شده؟» میپرسم.
«نمیدانم،» Wes میگوید. «فکر میکنم شش نفر با thirty percent allocation assign شدهاند. احتمالاً به role بستگی دارد.»
«Patty را با copy contract بیاور و math را مرور کنیم. و ببین میتوانی کسی از Purchasing را هم بگیری. یک proposal جسورانه دارم که میخواهم بررسی کنم.»
«چه کسی MRP application را outsource کرد؟» Steve از پشت میزش میپرسد.
با Chris، Wes و Patty در دفتر Steve نشستهام، Sarah کنار ایستاده که سعی میکنم نادیده بگیرم.
ایدهمان را دوباره به Steve توضیح میدهم. «سالها پیش تصمیم گرفتیم این application بخش حیاتی business نیست، پس outsource کردیم تا هزینه کم شود. واضح است آنها core competency نمیدیدند.»
«خب، حالا واضح است core competency است!» Steve جواب میدهد. «الان آن outsourcer ما را گروگان گرفته و از کاری که باید انجام شود جلوگیری میکند. بیشتر از roadblock هستند. الان آیندهٔ ما را به خطر انداختهاند.»
سر تکان میدهم. «خلاصه، میخواهیم contract outsourcing را زودتر، دو سال زودتر، بشکنیم و آن resourceها را به شرکت برگردانیم. حدود شش نفر حرف میزنیم، بعضی هنوز onsite هستند. buy out کردن باقی contract تقریباً یک میلیون دلار است و کنترل کامل MRP application و زیرساخت زیرین را پس میگیریم. همه در این تیم باور دارند کار درست است، و حتی blessing اولیه از تیم Dick را داریم.»
نفس را حبس میکنم. عدد خیلی بزرگی انداختم. بهمراتب بزرگتر از افزایش بودجهای است که دو ماه پیش خواستم و از این دفتر بیرون انداخته شدم.
سریع ادامه میدهم: «Chris باور دارد وقتی این MRP application دوباره in-house شد، interface به Unicorn میسازیم. بعد capability manufacturing را میسازیم تا از «build to inventory» به «build to order» برویم، که kitهای custom را مثل درخواست Sarah ممکن میکند. اگر همهچیز بینقص اجرا شود و integration با order entry و inventory management systems طبق برنامه پیش برود، ظرف حدود نود روز با رقبا برابری میکنیم.»
از گوشهٔ چشم میبینم چرخهای ذهن Sarah دیوانهوار میچرخد.
Steve فوراً ایده را رد نمیکند. «باشد، توجه من را جلب کردی. top riskها چیست؟»
Chris این را میگیرد. «outsourcer ممکن است تغییرات بزرگ در code base داده باشد که نمیدانیم، که development schedule را کند کند. اما باور شخصیام این risk minimal است. بر اساس رفتارشان، فکر نمیکنم تغییر معناداری در functionality داده باشند.
«از challengeهای technical نگران نیستم،» ادامه میدهد. «MRP برای batch size بزرگ طراحی نشده و قطعاً batch size یک که اینجا حرف میزنیم نه. اما مطمئنم short-term چیزی کار میکند و long-term strategy را در راه figure out میکنیم.»
وقتی Chris تمام میکند، Patty اضافه میکند: «outsourcer هم ممکن است transition برگشت به ما را سخت کند، و ممکن است کینه از engineerهای affected باشد. وقتی contract را اعلام کردیم hard feeling زیاد بود — از جمله، حقوقشان لحظهٔ switch از employee Parts Unlimited به vendor قطع شد.»
ادامه میدهد. «باید John را فوراً involve کنیم، چون باید access همهٔ staff outsourcer که برنمیگردانیم را بگیریم.»
Wes میخندد و میگوید: «دوست دارم شخصاً login credential آن account manager احمق را delete کنم. jerk است.»
Steve با دقت گوش میدهد. بعد به Sarah برمیگردد و میپرسد: «نظر تو دربارهٔ proposal تیم؟»
چند لحظه چیزی نمیگوید اما بالاخره با لحن خودپسندانه میگوید: «فکر میکنم باید با Bob Strauss check کنیم و approval کامل board را قبل از project اینقدر بزرگ و risky بگیریم. با performance قبلی IT، این میتواند همهٔ manufacturing operations ما را به خطر بیندازد، که بیش از riskی است که فکر میکنم باید بپذیریم. خلاصه، شخصاً از این proposal حمایت نمیکنم.»
Steve Sarah را نگاه میکند و با لبخند کمر باریک میگوید: «یادت باشد برای من کار میکنی، نه Bob. اگر نمیتوانی در این چارچوب کار کنی، resignation فوریات لازم است.»
Sarah سفید میشود، فکش میافتد، واضح است دستش را بد بازی کرده.
با زحمت خود را جمعوجور میکند، عصبی به حرف Steve میخندد، اما کس دیگر نمیپیوندد. مخفیانه به colleagues نگاه میکنم و میبینم مثل من چشمانشان گشاد است و این drama را تماشا میکنند.
Steve ادامه میدهد: «برعکس، بهلطف IT، شاید دیگر لازم نباشد همهٔ strategic optionهای onerous که تو و Bob آماده میکنید را در نظر بگیریم، اما نکتهٔ تو پذیرفته شد.»
به بقیهٔ ما میگوید: «یکی از بهترین افراد Dick و corporate counsel را assign میکنم. کمک میکنند این project را بینقص execute کنید و مطمئن شویم از هر trick در book برای گرفتن آنچه از outsourcer لازم داریم استفاده میکنیم. مطمئن میشوم Dick attention شخصی به این project بدهد.»
چشمان Sarah بیشتر گشاد میشود. «ایدهٔ عالی است Steve. risk اینجا را بهطور قابلتوجهی کم میکند. فکر میکنم Bob واقعاً خوشش میآید.»
حالت صورت Steve نشان میدهد صبرش برای theatrics او تقریباً تمام شده.
میپرسد آیا چیز دیگری لازم داریم. وقتی نیست، به همه اجازهٔ خروج میدهد اما از Sarah میخواهد بماند.
وقتی بیرون میرویم، نگاهی مخفیانه به عقب میاندازم. Sarah آنجا نشسته که قبلاً من نشسته بودم، عصبی همه را که خارج میشوند تماشا میکند. وقتی چشمش را به هم میزنم، به او لبخند میزنم و در را میبندم.