مسئولیت پذیری : گربه کدم رو خورد
ترجمه ای آزاد از بخش دوم کتاب The Pragmatic Programmer
بزرگ ترین ضعف ها، ترس از نمایان شدن ضعف است.
یکی از پایه های فلسفه ی عمل گرایی پذیرش مسئولیت است یعنی مسئولیت خودتان، کاری که در حرفه تان انجام می دهید، مطالعه ها و تحصیل تان، پروژه های تان و هر کاری که هرروز انجام می دهید را بپذیرید. برنامه نویسان عملگرا، مسئولیت پروژه شان را برعهده می گیرند و از پذیرفتن خطایشان و یا چیزی که نمی دانند نمی ترسند. همه می دانیم که این بخش دلپذیر برنامه نویسی نیست، اما حتی در بهترین پروژه ها هم با وجود تست های متعدد خودکار، غیر خودکار و مستند سازی خوب بازهم بعضی چیزها اشتباه می شود و خطاهایی ایجاد می شود، رساندن محصول با تاخیر روبرو می شود، مشکلات فنی پیش بینی نشده پیش می آید و هزاران اتفاق بد دیگر...
این اتفاق های بد معمولا پیش می آیند، و ما تلاش می کنیم با آنها در سطح توانمان تعامل کرده و کنار بیاییم. ما می توانیم به توانایی هایمان افتخار کنیم اما باید ضعف هایمان را هم بهبود ببخشیم که از جمله ی آنها خطاها و یا چیزهایی است که نمی دانیم.
اعتماد تیمی
تیمی که در آن حضور دارید نیاز دارد به شما اعتماد کرده و بتواند به شما تکیه کند، این موضوع خیلی مهمی است که نمی توان نادیده گرفت. البته شما هم نیازدارید راحت به هر یک از اعضای تیم اعتماد کنید. براساس تحقیق های انجام شده برای بالابردن سطح خلاقیت و همکاری درتیم ها، یکی از موارد ضروری اعتماد بین اعضای تیم است. در یک محیط سالم که برپایه ی اعتماد بنا شده است، شما می توانید درباره ی فکرهایتان به راحتی و بدون نگرانی از عواقب بیان آنها صحبت کنید، ایده هایتان را ارائه دهید و به هم تیمی هایتان تکیه کنید درحالی که آنها هم به شما تکیه کرده اند. اما در فضایی که اعتماد در آن وجود ندارد...
تصور کنید که با تیمی از نینجاهای مخفی و ابزارهایی با تکنولوژی بالا، بعد از چندین ماه برنامه ریزی و تمرین های سخت به مخفی گاه یک انسان شرور نفوذ کرده اید و حالا وقت آن رسیده که شما اسلحه ی لیزری را مستقر کنید تا کار تمام شود. در این لحظه ی حساس به هم تیمی هایتان می گویید "ببخشید بچه ها من لیزر ندارم. گربه ام داشت با اون نقطه ی قرمزش بازی می کرد منم دیگه گذاشتمش خونه و نیاوردمش."
قطعا ترمیم اعتمادی که به این شکل و با این شدت خراب شده است کار بسیار سختی است.
مسئولیت را بپذیر
مسئولیت یعنی چی؟ مسئولیت چیزی است که شما آن را قبول کرده اید و زیر بار این تعهد رفته اید که مطمئن شوید، کاری درست انجام بشود، اما درحالی که بهترین کاری که از دستتان بر می آید را انجام می دهید، لزوما به صورت مستقیم روی همه ی زوایای آن کنترل ندارید.
شما باید شرایط را از بابت خطرهایی که خارج از کنترل شماست، تحلیل و ارزیابی کنید و حق دارید که مسئولیت شرایط غیرممکن یا شرایطی که رسیک بالایی دارد یا حتی شرایطی که از نظر اخلاقی پیچیدگی زیادی دارد را نپذیرید. پذیرفتن یا نپذیرفتن شما باید بر اساس ارزش های شخصی و قضاوتی که دارید باشد ولی باید نسبت به چیزی که پذیرفته اید پاسخگو باشید.
وقتی مسئولیت کاری را برعهده گرفتید باید انتظار حساب کشی شدن درباره ی نتایج آن را داشته باشید. وقتی مرتکب اشتباهی شدید(همانطور که همه ی ما اشتباه می کنیم) یا در قضاوتتان خطایی کردید، آن را صادقانه بپذیرید و سعی کنید برای برطرف کردن آن مشکل پیشنهادهایی ارائه بدهید.
حواستان باشد کس دیگر یا چیز دیگری را سرزنش نکنید، یا بهانه تراشی نکنید. همه ی مشکلات را به گردن مشتریان، یک زبان برنامه نویسی، مدیریت یا همکارانتان نیندازید. ممکن است بعضی از این عوامل یا شاید تمامی آنها در بروز این مشکل نقش داشته باشند اما پیدا کردن راه حلی برای برطرفکردن این مشکل وظیفه ی شماست.
اگر به یک باره اطلاعات هاردی که کدهای اصلی پروژه تان در آن قرار داشت دچار مشکلی شد و تمام اطلاعات روی آن خراب و یا حذف شد و شما هیچ نسخه ی پشتیبانی (Backup) از آن اطلاعات نداشتید، قبول کنید که شما مقصر هستید. اگر به رئیس تان بگویید "گربه کدم را خورد" فقط دارید از زیر بار مسئولیت شانه خالی می کنید.
نکته: به جای آنکه بهانه های به دردنخور بیاورید، راه حل پیشنهاد بدهید.
قبل از اینکه به کسی بگویید چرا فلان کار انجام نشد،دیر شد یا شکست خورد، صبر کنید و با خودتان کمی درباره ی آن موضوع صحبت کنید. یا اگر برای تان سخت است که با خودتان صحبت کنید می توانید با اردک پلاستیکی یا گربه روی میز کامپیوترتان صحبت کنید. ببینید بهانه هایی که می آورید به نظر خودتان و البته اسباب بازی روی میزتان مسئولانه به نظر می رسند یا احمقانه؟ حالا به این فکر کنید که این حرف ها به نظر رئیس تان چطور می آید؟
حالا یک مرتبه مکالمه ای که قرار است بین شما و مسئول یا هم تیمی هایتان شکل بگیرد را مرور کنید. چه چیزهایی ممکن است دیگران بگویند؟ ممکن است آنها از شما بپرسند: "آیا روی فلان موضوع تلاش کردی؟" یا " فلان موضوع را در نظر گرفتی؟". جواب شما به این سوالات چیست؟ قبل از اینکه بروید و خبر بد را به آنها بدهید، چیز دیگری نیست که لازم باشد انجام بدهید؟ بعضی وقت ها برای نجات خودتان از آسیب های شدید، کافیست بدانید آنها می خواهند به شما چه چیزی بگویند.
به جای بهانه، راه حل بدهید. نگویید انجام این کار ممکن نیست، بگویید چه کاری می شود کرد که از این وضعیت خارج بشویم. آیا فکر می کنید که کد باید کلا حذف بشود؟ خوب به آنها بگویید و درباره ی ارزش و اهمیت بازنویسی کد، آنها را توجیح کنید.
آیا برای تشخیص بهترین راه پیش رو به زمان بیشتری برای تهیه و بررسی نمونه ی اولیه (Prototype) نیاز دارید؟ آیا نیاز دارید تست های بیشتری بنویسید تا از بروز دوباره ی این مشکلات جلوگیری کنید؟ خوب مشخص است که شما به منابع بیشتری نیاز دارید تا بتوانید این کارها را انجام بدهید. شاید هم نیاز داشته باشید وقت بیشتری را با کاربران یا مشتریان صرف کنید؟ یا شاید هم این موضوع فقط به شما برمی گردد و لازم است بعضی تکنولوژی ها یا روش ها را عمیق تر یاد بگیرید؟ آیا به یک دوره یا کتاب نیاز دارید؟ چیزی که لازم دارید را بخواهید و از درخواست کمک ، نترسید.
سعی کنید قبل از اینکه بهانه های الکی را با صدای بلند بیان کنید آنها را دور بریزید. اگر هم نیاز دارید که درباره ی آنها با کسی درد و دل کنید بهترین گزینه اردک پلاستیکی تان است. حالا وقت آن رسیده است که متواضعانه و راحت تقصیر را بپذیرید.
تمرین ها
- عکس العمل شما در مقابل بهانه های الکی یک مامور بانک یا مکانیک خودروتان و یا وکیلی که کارتان را به او سپرده اید و خطایی انجام داده است چیست؟ درباره ی آنها چه فکری می کنید؟
- از این به بعد هروقت خواستید بگویید "من فلان چیز را بلد نیستم" حتما در ادامه اش بگویید "اما یادش می گیرم". با این روش شما اگرچه اقرار می کنید چیزی را به خوبی بلد نیستید ولی در عین حال مثل یک فرد حرفه ای مسئولیت این بلد نبودن را می پذیرید. و برای برطرف کردن این نقص در خودتان تلاش می کنید.