کدنویس تمیز فصل سوم: بله گفتن
سوی دیگری از «تلاش»
بیایید تصور کنیم که پیتر مسئول برخی اصلاحات در موتور رتبه بندی است. او به طور خصوصی تخمین زده است که این اصلاحات، پنج یا شش روز از او زمان میگیرد. همچنین او فکر میکند که نوشتن مستندات برای اصلاحات، چند ساعت طول خواهد کشید. در صبح روز دوشنبه، مدیر او مارگ، وضعیت را از او میپرسد.
مارگ: «پیتر، اصلاحات موتور رتبه بندی را تا جمعه انجام میدی؟»
پیتر: «فکر میکنم شدنی باشه.»
مارگ: «آیا شامل مستندات هم هست؟»
پیتر: «تلاش میکنم مستندات را هم انجام بدم.»
شاید مارگ نتواند دودل بودن را در گفته های پیتر بشنود اما مطمئناً پیتر تعهد چندانی نمیدهد. مارگ سؤالاتی میپرسد که نیاز به پاسخ های بولین دارند اما پاسخ های بولین پیتر، فازی هستند.
به سوءاستفاده از کلمه تلاش، توجه کنید. در فصل اخیر، از «تلاش اضافی» برای تعریف تلاش استفاده کردیم. در اینجا، پیتر از تعریف «شاید، شاید نه» استفاده میکند. بهتر بود پیتر این گونه جواب میداد:
مارگ: «پیتر، اصلاحات موتور رتبه بندی را تا جمعه انجام میدی؟»
پیتر: «احتمالاً، اما ممکنه تا دوشنبه طول بکشه.»
مارگ: «آیا شامل مستندات هم هست؟»
پیتر: «تهیه مستندات چند ساعت بیشتر طول میکشه در نتیجه روز دوشنبه محتمله، اما ممکنه تا سه شنبه به تعویق بیافته.»
در این حالت، زبان پیتر بسیار صادقانه تر است. او عدم قطعیت خود را برای مارگ توصیف میکند. مارگ ممکن است قادر باشد با آن عدم قطعیت کنار بیاید. از سوی دیگر، ممکن است کنار نیاید.
متعهد شدن با انضباط
مارگ: «پیتر، من یک بله یا خیر صریح نیاز دارم. آیا موتور رتبه دهی تا جمعه تمام میشه و مستند سازیش می کنی؟»
این سؤالی کاملاً منصفانه است که مارگ باید بپرسد. او برنامهای دارد که قرار است حفظ شود و نیاز به یک پاسخ باینری در مورد جمعه دارد. پیتر چگونه باید پاسخ بدهد؟
پیتر: «در این حالت مجبورم بگم نه، مارگ. زودترین زمانی که میتونم با اطمینان بگم اصلاحات و مستندات را انجام میدم، سه شنبه هست.»
مارگ: «آیا برای سه شنبه تعهد میدی؟»
پیتر: «بله. تا سه شنبه کاملاً آماده میکنم.»
اما اگر مارگ واقعاً اصلاحات و مستندات انجام شده را تا جمعه نیاز داشته باشد چه؟
مارگ: «پیتر، سه شنبه واقعاً برای من سخته. ویلی، نویسنده فنی ما، روز دوشنبه در دسترسه. و پنج روز برای تکمیل راهنمای کاربر، زمان میخواهد. اگر من تا صبح دوشنبه، مستندات موتور رتبه دهی را نداشته باشم، اون هرگز راهنما را به موقع تمام نمیکنه. آیا میتوانی اول مستندات را انجام دهی؟»
پیتر: «نه. اول باید اصلاحات انجام شوند زیرا ما مستندات را از خروجی اجراهای اولیه، تولید میکنیم.»
مارگ: «خب، راهی وجود نداره که بتونی اصلاحات و مستندات را قبل از صبح دوشنبه تموم کنی؟»
پیتر اکنون باید تصمیم بگیرد. شانس خوبی وجود دارد که اصلاحات موتور رتبه دهی را روز جمعه انجام دهد و حتی ممکن است قادر باشد مستندات را قبل از رفتن به خانه برای آخر هفته، تمام کند. همچنین او میتوانست چند ساعت کار در روز یک شنبه انجام دهد (اگر کارها بیشتر ازآنچه امید داشت، طول کشیدند). با این وضعیت، باید به مارگ چه میگفت؟
پیتر: «ببین مارگ، شانس خوبی وجود داره که بتونم همه چیز را تا صبح دوشنبه تموم کنم، اگر چند ساعت اضافی روز یکشنبه کار کنم.»
آیا این، مشکل مارگ را حل کرد؟ نه. این مسئله به سادگی احتمالات را تغییر میدهد و این چیزی است که پیتر نیاز دارد به مارگ بگوید.
مارگ: «پس من میتونم روی صبح دوشنبه حساب کنم؟»
پیتر: «احتمالاً، اما نه قطعاً»
این ممکن است به اندازه کافی برای مارگ، خوب نباشد.
مارگ: «ببین پیتر، من واقعاً به یک پاسخ قطعی نیاز دارم. آیا راهی هست که بتونی این کار را قبل از صبح دوشنبه انجام بدی؟»
در این نقطه ممکن است پیتر وسوسه شود تا انضباط را نقض کند. اگر او تست هایش را ننویسد، ممکن است قادر باشد کار را سریع تر انجام دهد. اگر بازسازی نکند، ممکن است قادر باشد کار را سریع تر تمام کند. اگر مجموعه کامل تست رگرسیون را اجرا نکند، ممکن است بتواند کار را سریع تر انجام دهد.
اینجا جایی است که یک حرفه ای، دورش را خط میکشد. اول ازهمه، پیتر در مورد مفروضاتش اشتباه میکند. اگر تست های خود را ننویسد، کار را سریع تر انجام نخواهد داد. اگر بازسازی نکند، کار سریع تر انجام نخواهد شد. اگر مجموعه کامل تست رگرسیون را حذف کند، کار سریع تر به پایان نخواهد رسید. سال ها تجربه به ما آموخته است که نقض کردن انضباط، فقط سرعت ما را کاهش میدهد.
اما در مرحله دوم، او به عنوان یک حرفه ای، مسئولیت حفظ استانداردهای خاصی را دارد. کد او نیاز دارد تست هایی داشته باشد. کد او لازم است تمیز باشد و او باید مطمئن شود که هیچ چیز دیگری، سیستم را نقض نکرده است.
پیتر، به عنوان یک حرفه ای، قبلاً تعهد داده است که این استانداردها را حفظ کند و تمام تعهدات دیگری که او میدهد، باید تابع آن باشند. درنتیجه لازم است کل این استدلال، ساقط شود.
پیتر: «نه مارگ. واقعاً راهی وجود نداره که بتونم در مورد هر تاریخی قبل از سه شنبه، مطمئن باشم. متأسفم اگر این مسئله، برنامه ات را به هم میریزه اما این واقعیتی است که باید با آن مواجه شویم.»
مارگ: «لعنت! واقعاً روی تحویل زودتر حساب میکردم. مطمئن هستی؟»
پیتر: «بله. مطمئنم که ممکنه تا سه شنبه به تأخیر بیفته.»
مارگ: «باشه. فکر کنم بهتر باشه با ویلی حرف بزنم تا ببینم که میتونه برنامه اش را مجدداً ساماندهی کنه؟»
در این حالت، مارگ پاسخ پیتر را پذیرفته و شروع به جنگیدن برای سایر گزینه ها کرده است؛ اما اگر تمام گزینه های مارگ رد شده بودند، چه میشد؟ اگر پیتر آخرین امید بود، چطور میشد؟
مارگ: «ببین پیتر، مید,نم که این یک تحمیل عظیم است اما واقعاً نیاز دارم که راهی برای انجام این کار تا صبح دوشنبه، پیدا کنی. واقعاً حیاتی است. کاری وجود ندارد که بتوانی انجام دهی؟»
اکنون پیتر شروع به فکر کردن در مورد اضافه کاری قابل توجه و احتمالاً بیشتر آخر هفته میکند. لازم است او در مورد استقامت و ذخایرش، با خود بسیار صادق باشد. آسان است بگوییم که شما در آخر هفته ها کارهای زیادی انجام میدهید، اما جمع آوری انرژی کافی برای انجام کار با کیفیت عالی، بسیار دشوارتر است.
حرفهای ها، محدودیت های خود را میدانند. آن ها میدانند چه میزان اضافه کاری را میتوانند به صورت مؤثر اعمال کنند و میدانند که هزینه آن، چه خواهد بود.
در این مورد، پیتر کاملاً احساس اطمینان میکرد که چند ساعت اضافی در طی هفته و مدت زمانی در آخر هفته، کافی خواهند بود.
پیتر: «باشه مارگ. الآن میگم که چه کاری میتونم انجام بدم. من با خونه تماس میگیرم و بخشی از وقت اضافی با خانواده ام را حذف میکنم. اگر آنها موافق باشن، من این کار را تا صبح دوشنبه انجام میدم. حتی صبح دوشنبه میام تا مطمئن بشم که همه چیز با ویلی هماهنگ هست؛ اما بعدش به خونه میرم و تا روز چهارشنبه برنمیگردم. قبوله؟»
این کاملاً منصفانه است. پیتر میداند که اگر اضافه کاری داشته باشد، میتواند اصلاحات و مستندات را انجام دهد. همچنین او میداند که برای دو یا سه روز بعدازآن، ناکارآمد خواهد بود.
تعقیب
[…] فصل سوم: بله گفتن […]
دیدگاه خود را ثبت کنید
تمایل دارید در گفتگوها شرکت کنید؟در گفتگو ها شرکت کنید.