حالت تاریک
فصل ۲۳ — سهشنبه، ۷ اکتبر
سهشنبهٔ صبح وقتی به سر کار میروم، تماس فوری Kirsten را میگیرم. ظاهراً Brent تقریباً یک هفته دیر تحویل یک کار دیگر Phoenix داده — طبق گفتهاش فقط یک ساعت طول میکشد. باز هم کل برنامهٔ تست Phoenix در خطر است.
علاوه بر آن، چند کار بحرانی دیگر گروه من هم دیر شده و فشار مهلت را بیشتر کرده. شنیدنش واقعاً دلسردکننده است. فکر میکردم پیشرفتهای اخیر این مشکلات عملکرد در موعد را حل میکند.
چطور میتوانیم کار بیشتری از یخ خارج کنیم اگر الان هم عقب میافتیم؟
برای Patty پیام صوتی میگذارم. با تعجب سه ساعت طول میکشد تا برگردد. میگوید چیزی با برآوردهای زمانبندی ما بهشدت اشتباه است و باید فوراً ملاقات کنیم.
باز در اتاق کنفرانس هستم، Patty جلوی تختهٔ سفید و Wes printoutهایی که Patty چسبانده را با دقت نگاه میکند.
«تا الان این را فهمیدم،» Patty میگوید و به یکی از برگهها اشاره میکند. «کاری که Kirsten زنگ زد دربارهاش بود، تحویل محیط تست به QA است. همانطور که گفت، Brent برآورد کرده بود فقط چهل و پنج دقیقه.»
«درست به نظر میرسد،» Wes میگوید. «فقط یک سرور مجازیسازیشدهٔ جدید میسازی و OS و چند بسته رویش نصب میکنی. احتمالاً حتی برای احتیاط زمان را دو برابر کرده.»
«من هم همین فکر را میکردم،» Patty میگوید، ولی سر تکان میدهد. «جز اینکه فقط یک کار نیست. چیزی که Brent متعهد شده بیشتر شبیه یک پروژهٔ کوچک است — بیش از بیست مرحله با حداقل شش تیم مختلف! OS و همهٔ بستههای نرمافزاری، کلیدهای license، آدرس IP اختصاصی، حسابهای کاربری ویژه، mount pointهای پیکربندیشده، و بعد IP addressها باید به فهرست ACL روی یک file server اضافه شوند. در این مورد خاص requirement میگوید سرور فیزیکی لازم است، پس پورت router، کابلکشی و rack سرور جایی که فضای کافی داریم هم میخواهد.»
«اوه…،» Wes با ناامیدی میگوید و میخواند Patty به چه اشاره میکند. زمزمه میکند: «سرورهای فیزیکی واقعاً دردسرند.»
«نکته را از دست میدهی. حتی اگر مجازیسازی شده بود همین اتفاق میافتاد،» Patty میگوید. «اول، «کار» Brent بهمراتب بیشتر از یک کار است. دوم، میبینیم چند کار است که چند نفر را در بر میگیرد، هر کدام کار فوری خودشان را دارند. در هر تحویل میاندستی روزها از دست میدهیم. با این سرعت، بدون مداخلهٔ چشمگیر، هفتهها طول میکشد تا QA چیزی که لازم دارد بگیرد.»
«حداقل تغییر firewall لازم نیست،» Wes با طعنه میگوید. «آخرین بار که یکی لازم بود، گروه John تقریباً یک ماه طول کشید. چهار هفته برای یک تغییر سیثانیهای!»
سر تکان میدهم؛ دقیقاً میدانم Wes به چه اشاره میکند. زمان تحویل برای تغییرات firewall افسانهای شده.
صبر کن. Erik چیزی شبیه این نگفت؟ برای تغییر firewall، با وجود اینکه زمان لمس واقعی فقط سی ثانیه بود، باز هم چهار هفته زمان ساعتدار طول کشید.
این فقط نمونهٔ کوچکی از اتفاقی است که برای Brent میافتد. ولی آنچه الان برایمان میافتد خیلی، خیلی بدتر است، چون تحویل میاندستی داریم.
با آه، سرم را روی میز کنفرانس میگذارم.
«حالت خوب است؟» Patty میپرسد.
«یک ثانیه بده،» میگویم. به تختهٔ سفید میروم و با ماژیک سعی میکنم نمودار بکشم. بعد از چند تلاش، نموداری شبیه این دارم: محور افقی «درصد زمان مشغول بودن منبع» از صفر تا صد، و محور عمودی «زمان انتظار در صف» — منحنی که با بالا رفتن بهرهوری بهشدت بالا میرود؛ در پنجاه درصد مشغول بودن، زمان انتظار یک واحد (مثلاً یک ساعت) است؛ در نود درصد مشغول بودن، نه برابر بیشتر.
به آنها میگویم Erik در MRP-8 چه گفت، دربارهٔ اینکه زمان انتظار به بهرهوری منبع بستگی دارد. «زمان انتظار برابر است با «درصد زمان مشغول» تقسیم بر «درصد زمان بیکار». یعنی اگر منبعی پنجاه درصد مشغول باشد، پنجاه درصد بیکار است. زمان انتظار پنجاه درصد تقسیم بر پنجاه درصد، یعنی یک واحد زمان. بگذار یک ساعت بنامیم. پس بهطور میانگین کار ما یک ساعت در صف میماند تا کار شود.
«از طرف دیگر، اگر منبع نود درصد مشغول باشد، زمان انتظار «نود درصد تقسیم بر ده درصد»، یعنی نه ساعت. یعنی کار ما نه برابر بیشتر از وقتی منبع پنجاه درصد بیکار بود در صف میماند.»
نتیجه میگیرم: «پس برای کار Phoenix، فرض کنیم هفت تحویل میاندستی داریم و هر منبع نود درصد وقت مشغول است، کارها در مجموع نه ساعت ضربدر هفت مرحله در صف میمانند…»
«چی؟ شصت و سه ساعت، فقط زمان صف؟» Wes با باورنکردنی میگوید. «غیرممکن است!»
Patty با لبخند کنایهآمیز میگوید: «اوه البته. چون فقط سی ثانیه تایپ است، درسته؟»
«اوه لعنت،» Wes میگوید و به نمودار خیره میشود.
ناگهان مکالمهام با Wes را قبل از تصمیم Sarah و Chris برای استقرار Phoenix در جلسهٔ Kirsten به یاد میآورم. Wes از ticketهای Phoenix که هفتهها دست به دست میشدند شکایت کرد که استقرار را به تأخیر انداخت.
آن موقع هم بود. آن تحویل میاندستی بین مردم IT Operations نبود. تحویل میاندستی بین Development و IT Operations بود که خیلی پیچیدهتر است.
ایجاد و اولویتبندی کار داخل یک بخش سخت است. مدیریت کار بین بخشها حداقل ده برابر سختتر است.
Patty میگوید: «آن نمودار میگوید همه به زمان بیکاری یا slack time نیاز دارند. اگر کسی slack time نداشته باشد، WIP در سیستم گیر میکند. یا دقیقتر، در صفها گیر میکند، فقط منتظر.»
وقتی هضم میکنیم، Patty ادامه میدهد: «هر کدام از این برگهها روی تخته مثل این «کار» Phoenix است،» با اشارهٔ انگشتانی میگوید. «شبیه کار یک نفره به نظر میرسد، ولی نیست. چند مرحله با چند تحویل میاندستی بین چند نفر است. تعجبی نیست برآوردهای پروژهٔ Kirsten غلط است.
«باید این را در برنامهٔ Kirsten و ساختار شکست کار یا WBS اصلاح کنیم. بر اساس آنچه دیدم، کاملاً یکسوم تعهداتمان به Kirsten در این دسته است.»
«عالی شد،» Wes میگوید. «مثل Gilligan’s Island. مردم را برای تور سهساعته میفرستیم و ماهها بعد تعجب میکنیم چرا هیچکس برنمیگردد.»
Patty میگوید: «فکر میکنی بتوانیم برای هر کدام از این «کار»ها یک lane کانبان بسازیم؟»
«بله، همین است،» میگویم. «Erik حق داشت. یک تودهٔ بزرگ کار تکراری پیدا کردی! اگر این کار تکراری را مستند و استاندارد کنیم و کمی تسلط بگیریم، مثل کاری که با تعویض لپتاپ کردی، مطمئنم جریان را بهبود میدهیم.»
اضافه میکنم: «میدانی، اگر همهٔ کار استقرار تکراری را استاندارد کنیم، بالاخره میتوانیم یکنواختی پیکربندی تولید را enforce کنیم. آن مشکل برفدانهٔ زیرساخت — میدانی — هیچ دو تا شبیه هم نیست. Brent اینطور Brent شد چون گذاشتیم زیرساختی بسازد که فقط خودش میفهمد. نباید دوباره بگذاریم اتفاق بیفتد.»
«نکتهٔ خوب،» Wes غر میزند. «عجیب است. خیلی از مشکلاتی که داشتیم از تصمیمهای خودمان است. دشمن را دیدیم. و او خود ماست.»
Patty میگوید: «میدانی، استقرار مثل مونتاژ نهایی در کارخانه است. هر جریان کار از آن عبور میکند و بدون آن نمیتوانی محصول را ارسال کنی. ناگهان دقیقاً میدانم کانبان چطور باید باشد.»
در چهل و پنج دقیقهٔ بعد برنامه میسازیم. Patty با تیم Wes بیست کار پرتکرارتر را جمع میکند.
همچنین میفهمد چطور کارها را وقتی در صف هستند بهتر مدیریت و کنترل کند. Patty نقش جدیدی پیشنهاد میکند: ترکیب مدیر پروژه و expediter. بهجای نظارت روزبهروز، کنترل دقیقهبهدقیقه. میگوید: «به تحویل سریع و مؤثر هر کار تمامشده به work center بعدی نیاز داریم. در صورت لزوم این شخص در work center میماند تا کار تمام شود و به work center بعدی میبرد. دیگر نمیگذاریم کار بحرانی در تودهٔ ticket گم شود.»
«چی؟ کسی منصوب شود کارها را از نفر به نفر ببرد، مثل پیشخدمت؟» Wes با باورنکردنی میپرسد.
«در MRP-8 نقش «water spider» دقیقاً همین کار را میکند،» جواب میدهد. «تقریباً تمام تأخیر اخیر Phoenix به خاطر کارهای منتظر در صف یا تحویل میاندستی بود. این مطمئن میکند دوباره اتفاق نیفتد.
«بالاخره،» اضافه میکند، «میخواهم همهٔ کانبانها را جابهجا کنم تا دیگر لازم نباشد کسی مکانیزم سیگنالدهی برای تحویل میاندستی باشد. نگران نباش. چند روز دیگر حلش میکنم.»
Wes و من جرأت شک نمیکنیم.