مطالبی که اینجا مینویسم مواردی است که گهگاه برای خودم پیش آمده است و بیشتر حالت روزمره دارد.
کالبدشکافی مشکلات و حوادث: یادگیری از شکست
در صنعت نرم افزار، اغلب با مقیاس های بزرگ، سیستم های پیچیده و توزیع شده کار می کنیم. سازمان ها بطور طبیعی، می خواهند که مرتباً، خدمات خود را با ویژگی های جدید ارتقا دهند و سیستم های جدیدی را به سیستم های فعلی، بیفزایند. با توجه به مقیاس و سرعت تغییر سیستم ها، حوادث و مشکلات اجتناب ناپذیر هستند.
وقتی یک حادثه رخ می دهد، تمام تلاش تیم ها، بر روی یافتن مشکل و حل آن متمرکز می شود. ولی همیشه باید توجه داشته باشیم که از این حوادث باید درس بگیریم، وگرنه این مشکلات مرتب تکرار خواهند شد. در صورت عدم کنترل و یادگیری از مشکلات، حوادث میتوانند در آینده پیچیدهتر و بزرگتر شوند و خسارتی که به ما و کاربران ما می زنند، بیشتر شود و رضایت از سیستم را کاهش دهند.
هر مشکلی، علتی دارد و اگر بتوانید جلوی تکرار این مشکل را بگیرید، قطعا نگهداری و توسعه سیستم در آینده راحتتر خواهد بود. صرف اینکه مشکل را حل کردید و دوباره به روند عادی بازگشتید کافی نیست، باید کار کنید که دیگر آن مشکل تکرار نشود.
هزینه شکست آموزش است.
کالبدشکافی مشکلات و حوادث، تا حدی در صنعت فناوری شناخته شده است. کالبدشکافی حادثه، به طور خلاصه، شامل ثبت کتبی یک حادثه، تأثیر آن، اقدامات انجام شده برای کاهش یا حل آن، علت(های) اصلی و اقدامات بعدی برای جلوگیری از تکرار حادثه است.
در این مقاله، معیارهایی را برای تصمیم گیری، در مورد زمان انجام این کالبدشکافی، برخی از بهترین شیوه ها در این مورد و توصیه هایی در مورد نحوه پرورش این فرهنگ ارایه خواهیم کرد.
فلسفه کالبدشکافی حوادث
اهداف اولیه نوشتن کالبدشکافی حادثه، این است که اطمینان حاصل شود که حادثه مستند شده است، همه علل اصلی مؤثر به خوبی درک شده اند و به ویژه، اقدامات پیشگیرانه مؤثر برای کاهش احتمال تکرار حادثه انجام می شود.
کالبدشکافی حادثه، باید پس از هر رویداد نامطلوب قابل توجهی انجام شود. به این مقوله نباید مثل یک مجازات نگاه کرد، بلکه یک فرصت یادگیری برای کل سیستم است. فرآیند کالبدشکافی حادثه، طبعاً زمان بر است و برای سیستم هزینه خواهد داشت پس باید در انتخاب زمان صحیح برای این کار دقت کافی را به خرج دهید.
اما دلایل عمومی برای راه اندازی این فرآیند عبارتند از:
- خرابی سیستم وقتی که برای کاربران قابل لمس باشد (فراتر از یک آستانه خاص)
- از دست دادن داده ها از هر نوع
- کارشناسان در حال خدمت مجبور به دخالت مستقیم در روندهای سیستم شوند.
- زمان حل مشکل بالاتر از یک آستانه باشد
- نقص در سیستم های نظارتی (که معمولاً به کشف دستی حادثه دلالت دارد)
تعیین معیارهای درست بسیار مهم است تا همه بدانند چه زمانی این فرآیند را باید انجام دهند. البته در برخی موارد، برای تعیین سطح اهمیت مشکل، باید شهودی عمل کنید یعنی به حس خود مراجعه کنید و مشکل پیش آمده را کالبد شکافی کنید.
بی گناهی افراد تیم، یکی از اصول این فرآیند است، توجه کنید که نباید به همدیگر اتهام بزنید و باید بر شناسایی علل مؤثر حادثه تمرکز کنید بدون اینکه فرد یا تیمی را برای رفتار بد یا نامناسب متهم کنید. یک کالبد شکافی بیعیب، فرض میکند که هرکسی که در یک حادثه نقشی داشته است، نیت خوبی داشته و با اطلاعاتی که در اختیار داشته، کار درستی انجام داده است. اگر فرهنگ گرفتن انگشت اتهام به افراد تیم و ایجاد شرمساری برای افراد یا تیم ها، به دلیل انجام کار «نادرست»، حاکم شود، کارشناسان از ترس مجازات، مسائل را آشکار نمی کنند یا حتی برای دوستان خود پوشش ایجاد خواهند کرد.
باید محیطی را پرورش دهید که در آن هر "اشتباهی" فرصتی برای تقویت سیستم تلقی شود. وقتی سیستم شما بجای سرزنش فرد خطا کار، به بررسی دلایل سیستماتیک خطاها بپردازد، می توان برنامه های پیشگیری موثری را برای عدم تکرار مشکلات در نظر گرفت. شما نمیتوانید افراد را «تعمیر» کنید، اما میتوانید سیستمها و فرآیندها را برای حمایت بهتر از کارشناسان، اصلاح کنید و به آنها کمک کنید در آینده تصمیم های درست تری بگیرند و نسخه های کم مشکل تری را عرضه کنند.
هنگامی که اتفاق ناگوار در سیستم اتفاق می افتد، کالبدشکافی حادثه، باید توسط کارشناسان بهعنوان فرصتی نه تنها برای رفع یک ضعف، بلکه برای انعطافپذیرتر کردن کل سیستم تلقی شود و در پایان باید نشان دهد که کجا و چگونه خدمات را میتوان بهبود بخشید.
همکاری و به اشتراک گذاری دانش
همکاری در تیم یک گوهر با ارزش است در فرآیند کالبدشکافی این همکاری بسیار بسیار مهم است. در واقع فرآیند اصلی کالبدشکافی، شامل همکاری و اشتراک دانش در هر مرحله است. صرف نظر از هر ابزار خاص یا سیستمی که برای اینکار استفاده می کنید، در آن ابزار به دنبال ویژگی های کلیدی زیر باشید:
- امکان همکاری Real-time در تیم، که جمع آوری سریع داده ها و ایده ها را فراهم می کند.
- امکان درج اظهار نظر/ حاشیه نویسی باز
- اعلان های ایمیل
نوشتن مستندات نیز مستلزم بررسی و انتشار رسمی است. در عمل، تیم ها اولین پیش نویس را به صورت داخلی به اشتراک می گذارند و کارشناسان ارشد پس ارزیابی کامل بودن پیش نویس، آن را منتشر خواهند کرد. معیارهای بررسی ممکن است شامل موارد زیر باشد:
- آیا داده های کلیدی حادثه برای آیندگان جمع آوری شد؟
- آیا ارزیابی تاثیرات کامل است؟
- آیا علت اصلی به اندازه کافی عمیق بود؟
- آیا برنامه اقدام مناسب است و رفع اشکال در اولویت مناسب است؟
- آیا ما نتیجه را با ذینفعان مربوطه در میان گذاشتیم؟
هنگامی که بررسی اولیه کامل شد، مستندات به طور گستردهتری به اشتراک گذاشته میشود، معمولاً برای کل تیم. هدف ما این است که مستندات تهیه شده را با گسترده ترین مخاطبان ممکن به اشتراک بگذاریم که همه از دانش یا درس های داده شده بهره مند شوند. البته هر شرکتی سیاست های خاص خودش را در انتشار اطلاعات دارد.
بسیار مهم است که هیچ موردی را جا نیندازید. جلسات منظم برگزار کنید و با ابزار مختلف تیم را تشویق کنید که در مورد حادثه بحث و گفتگو کنند و راهکار ارایه دهند و پس از یافتن راهکار مناسب، حتما مطالب را داکیومنت و ثبت کنید.
فرهنگ کالبدشکافی حادثه
اگر بتوانید یک فرهنگ سازمانی برای این فرآیند ایجاد کنید، کار شما بسیار ساده تر خواهد شد. البته چنین کاری مستلزم تزکیه و تقویت مستمر رفتار اعضای تیم است. پیشنهاد می شود که این فرهنگ مشترک، از طریق مشارکت فعال مدیریت ارشد در فرآیند بررسی و همکاری، تقویت شود. مدیریت تیم نقش بسیار مهمی در ایجاد این فرهنگ دارد. برخی از فعالیت های نمونه عبارتند از:
- انتشار یکی از فرآیند های انجام شده در خلال ماه برای همه
در یک خبرنامه ماهانه، یک پس از مرگ جالب و خوب نوشته شده با کل سازمان به اشتراک گذاشته می شود. - تشکیل یک گروه خاص
این گروه، بهترین شیوه ها و راهکارهای را برای شرکت ترسیم می کند. - جلسه های مطالعه مشکلات و حوادث قبلی
از برخی خوادث ممکن است سالها گذشته باشد و خواندن آنها حتما می تواند موثر و برای اعضای جدید آموزنده باشد.
یکی از بزرگترین چالش ها، جا انداختن این فرآیند به یک سازمان این است. معمولا کسانی در مجموعه شما وجود دارند که ممکن است اهمیت این فرآیند و نتیجه آن را زیرسوال ببرند. استراتژیهای زیر میتوانند به شما کمک کنند تا به این چالش غلبه کنید:
- یک دوره آزمایشی با چندین نمونه کامل و موفق ممکن است به اثبات ارزش فرآیند کمک کند. سعی کنید که در سازمان خود یک نمونه موفق را اجرا کنید تا اعتماد مدیران بالاتر را جلب کنید.
- برای کسانی که درست و دقیق در فرآیند شرکت کرده اند، پاداش تعیین کنید. پاداش ها را واضع و علنی بدهید تا بقیه نیز تشویق شوند.
- در مورد اهمیت و نقش این فرآیند صحبت کنید و همه را تشویق کنید.
خلاصه
اگر بتوانید یک فرهنگ درست در سازمان خود خلق کنید که بعد از اینکه یک مشکل بوجود می آید و تیم با موفقیت آن را پشت سر می گذارد، اعضای تیم یکبار دور هم جمع شوند و مشکل را دوباره بررسی کنید و راهکارهای عدم تکرار آن را بررسی و مکتوب کنند، مطمئن باشید که با گذشت زمان حتما سیستم بهتری خواهید داشت و در پایان این نکته فراموش نشود که در جلسات کالبدشکافی، همدیگر را متهم نکنید. در انتخاب کلمات دقت داشته باشید، طعنه نزنید و تمام تلاشتان این باشد که از مشکل پیش آمده، یادبگیرید و جلوی تکرار آن را بگیرید.
به یاد داشته باشید که تجربیاتی که در محیط عملیاتی بدست می آید بسیار با ارزش هستند و معمولا در محیط اکادمیک بدست نمی آیند. مشکلات و راهکارها را حتما داکیومنت کنید تا از تکرار آنها جلوگیری کنید.
مطلبی دیگر از این انتشارات
آیا از CSS Framework ها مانند Tailwind یا Bootstrap استفاده کنیم یا نه؟
مطلبی دیگر از این انتشارات
فرم های لاگین: رایج ترین مشکلات و راه حل های آن
مطلبی دیگر از این انتشارات
توسعه دهندگان انعطاف ناپذیر و نقش سمی آنها در تیم های نرم افزاری