Fix it before it breaks
نت (تعمیر و نگهداری) پیشگیرانه (Preventive Maintenance)، یه استراتژی فعال تو نگهداری از ابزار و منابعه که در نهایت باعث میشه هزینه تعمیر و نگهداری نهایی (در صورت خرابی و نیاز به توقف تولید) تا ده برابر کاهش پیدا کنه. تو این نوشته قصد دارم اول با این مفهوم تو حوزه اصلیش (تولیدیها، کارخونهها و ...) آشنا بشیم و در نهایت ببینیم چطور میشه این دیدگاه رو به نگهداری تیمهای نرمافزاری تعمیم داد.
یکی از نکات اصلی که نت پیشگیرانه رو از انواع دیگه استراتژیهای نگهداری متمایز میکنه روتین بودن کارهاست. نگهداری تو یه زمانبندی از پیش تعیینشده انجام میشه تا اطمینان حاصل کنیم که ابزار درست کار میکنن و مشکلی براشون پیش نمیاد. بنابراین این روش بیشتر برای ابزاری مناسبه که این ویژگیها رو داشته باشن:
کارهایی که باید برای نت پیشگیرانه انجام بدیم وابسته به ابزارمونه. برای مثال، یه وسیله نیاز به تمیزکاری یا روغنکاری دورهای داره یا نیازه که به شکل دورهای قطعات داخلیش بازبینی و در صورت نیاز تعمیر یا تعویض بشن که کل دستگاه درست و دقیق کار کنه. نت پیشگیرانه فقط روی ماشینآلات و دستگاهها کاربرد نداره و منابع آب، سیستمهای الکتریکی و ... هم باید به شکل منظم بررسی بشن.
چکلیست کارهای نت پیشگیرانه رو میشه با سه پارامتر اصلی از هم تفکیک کرد: ضروری یا غیرضروری بودن، هرمی یا غیر هرمی و کارهای بازبینی محور یا تسکمحور
به کارهایی که برای حفظ امنیت و سلامت بهشون نیازمندیم و انجامشون محدودیت زمانی داره، کارهای ضروری میگیم. کارهای ضروری رو نمیشه لغو کرد یا به زمان دیگهای موکول کرد. از طرف دیگه کاری که بدون آسیب جدی یا کاهش کارایی میشه به زمان دیگهای موکول کرد یه کار غیر ضروریه.
اگه یه کار بنا به دلایلی تا زمان بازبینی بعدی به تعویق بیفته، یادداشتی شامل زمان اصلی بازبینی به کار اضافه میکنیم. به این کار یه کار هرمی میگیم. اگه زمان اصلی رو یادداشت نکنیم و فقط از زمان جدید استفاده کنیم کار غیر هرمیه.
تو کارهای بازبینیمحور نتیجه کار فعلی روی روند انجام کار بعدی اثرگذاره اما میشه تعمیرها و بهبودهای کوچکی رو بدون وابستگی کارهای دورهای به هم اجرا کرد. این کارها تسکمحور هستن.
تیمهای نرمافزاری تو متدولوژیهای پرکاربرد فعلی معمولا تا سقف دوازده نفر عضو دارن. درسته که برای انجام کارها تو تیمهای نرمافزاری به ابزارهای ارتباطی، مدیریت کارها، مدیریت نسخه کدها و ... و سختافزار (لپتاپ، مانیتور و ...) نیاز داریم اما در نهایت منبع اصلی یه تیم نرمافزاری تا حد زیادی اعضای اون تیم هستن. در ادامه بعضی از روشهای موجود رو به عنوان نت پیشگیرانه تو تیم نرمافزاری بررسی میکنیم.
اگرچه اعضای تیم مهمترین بخش تیمهای نرمافزاری هستن اما بدون ابزار مناسب تیمها کارایی مناسبی نخواهند داشت. اما برای ارتباطات درون تیمی، بین تیمی، بین تیم و مشتری ابزارهای مختلفی وجود داره که میتونن به شکل self-hosted یا cloud-based مورد استفاده قرار بگیرن. همچنین برای کنترل نسخه کد، دیزاینها، مستندات، مدیریت کارها، workflowها و ... هم همین مدل انتخابها وجود داره. نت پیشگیرانه در زمینه انتخاب بین self-hosted و cloud-based پیشنهاد ویژهای برامون نداره.
اگه از ابزارهای self-hosted استفاده میکنین:
اگه از ابزارهای cloud-based استفاده میکنین:
هدف این جلسه بازبینی، ارزیابی و هدفگذاری برای هر کدوم از اعضای تیمه که باید به صورت برنامهریزی شده و دورهای انجام بشه. در قالب همین جلسه میشه اختلافات کوچک درونتیمی رو شناسایی کرد و قبل از بزرگ شدن مشکل، راهحلی رو براش اجرا کرد. پیدا کردن ریشه مشکلاتی مثل کمشدن کارایی، تمرکز و ... هم از طریق همین جلسه امکانپذیره. جلسه تکبهتک باید به شکل بازبینیمحور اجرا بشه و عملکرد اعضا تو هر دوره در مقایسه با دورههای قبل سنجیده بشه.
ارتباط انسانی و حسی میتونه اعضای تیم رو به هم نزدیکتر کنه و درک اونها از شرایط مختلف روحی و جسمی سایر اعضا رو بالا ببره. این مدل ارتباطات معمولا تو محیط کار و در زمان انجام کار شکل نمیگیرن و نیاز به برنامههای جدا از روند انجام کارهای اصلی دارن و گاهی نیازه اعضای تیم برای مدت کوتاهی کار نکنن.
تیمسازی هم باید به صورت دورهای و برنامهریزی شده و هم با اهداف مشخص انجام بشه. افزایش حس تعلق و تعهد شغلی (Loyalty/Engagement) با روشهای مختلف (پاداش مالی و ...)، کمک به اعضا برای ارتباط گرفتن با کار معنادار (با جابجایی نقش، سمت و مسئولیتها) میتونن از اهداف تیمسازی باشن. گاهی هم لازمه با بررسی بازبینیمحور افراد رو از تیم حذف یا به تعدادشون اضافه کنیم.
تو صنعت زمانی رو که برای انجام روتینهای تعمیری یا اصلاحی انتخاب میکنن از طریق محاسبات ریاضی و با توجه به هزینه فرصت از دست رفته میسنجن. هزینه فرصت از دست رفته در واقع یه تصمیم مهم بین هزینه توقف تولید برای انجام اقدامات اصلاحی تو مدت زمان محدود و پذیرش ریسک توقف تولید به دلیل خرابی دستگاههاست. همونطور که بالاتر اشاره کردم منبع اصلی تیمهای نرمافزاری اعضای تیم هستن. این ریسک در تیم نرمافزاری یعنی از دست دادن افراد (ترک تیم، کم شدن وفاداری و ...) بنابراین با اقدامات روتین پیشگرانه میشه تا حدی این ریسک و محتمل شدن هزینه گزاف تیمسازی مجدد رو کاهش داد.
[1] Preventive Maintenance as the Key to Efficient Production