نود و هفت چیزی که هر برنامه‌نویسی باید بداند: نقد و بررسی کدها


یکی از توصیه های مهمی که همواره به تیم های برنامه نویسی می شود برگزاری جلسات نقد و بررسی کدها است. بسیاری از سازمان ها و شرکت های نرم افزاری روی این موضوع تأکید ویژه ای دارند و برگزاری جلساتی از این دست در آیین نامه های فرآیند توسعه ی نرم افزاری آن ها آمده است و تبدیل به یک فرآیند رسمی اداری شده است، که تیم برنامه نویسی آن ها را ملزم به انجام این کار می کند. چنین تأکیدی دلالت بر اهمیت و کارایی این جلسات دارد. با این وجود، بیش تر تیم های برنامه نویسی به دلیل برخی مسائل تمایل زیادی به شرکت در این جلسات ندارند. در این آموزش قصد داریم به بررسی این مشکلات بپردازیم و راه کارهایی را برای برگزاری بهتر این جلسات ارائه دهیم. برنامه نویسانی که تجربه ی قبلی بدی در این زمینه داشته اند غالباً مسائلی از این دست را مطرح می کنند که:

- برخی انتقادات و نظرات در مورد کدها این احساس را در برنامه نویس ایجاد می کند که منتقد تنها قصد خراب کردن وجهه ی او را دارد و فرصتی را پیدا کرده است تا به شخصیت او حمله کند و کار او را به باد انتقاد بگیرد.

- برخی منتقدان به جای بررسی مسائل مهم و اساسی تنها روی ساختار و چیدمان کدها مثل نحوه ی تورفتگی ها تأکید می کنند.

- در بسیاری از مواقع منتقدان قبلاً کدها را مرور نکرده اند و بدون آمادگی قبلی وارد جلسه می شوند.

- گاهی تنها یک بخش نمونه از کدها بررسی شده و سایر بخش های مهم نادیده گرفته می شود.

- در برخی مواقع، تیم بررسی کدها را تا زمانی که بخش اصلی کدها کامل شود به تأخیر می اندازد و پس از آن به دلیل حجم زیاد اطلاعات، مرور کدها دیگر نه امکان پذیر است و نه اثربخش خواهد بود.

- در بعضی موارد چون اعضا با این دید وارد جلسه می شوند که قرار است تنها یک وظیفه ی اداری را به دستور مدیر انجام دهند، توجه چندانی به جریان جلسه ندارند و انرژی کافی را صرف پیش برد آن نمی کنند.

- در برخی جلسات هم افرادی به جلسه دعوت می شوند که هیچ ارتباطی با پروژه ندارند و این موضوع کمی برای توسعه دهندگان نگران کننده است چرا که ممکن است نظرات خامی به زبان آورند!

مسائلی از این دست به علاوه خیلی موارد دیگر، موجب عدم تمایل توسعه دهندگان برای شرکت در این جلسات می شود. بنابراین تیم های برنامه نویسی باید به دنبال راه کارهایی برای برطرف کردن این مشکلات باشند تا بتوانند از مزایای آن بهره ببرند.

اولین نکته ای که در مورد جلسات نقد و بررسی باید مورد توجه قرار گیرد این است که هدف چنین جلساتی صرفاً پیدا کردن خطاهای موجود در کدها نیست، بلکه این جلسات باید با هدف به اشتراک گذاری دانش و آگاهی در میان اعضای تیم و برقراری راهبردهای مشترک کدنویسی برگزار شوند. به اشتراک گذاری کدها با سایر برنامه نویسان احساس مالکیت مشترک کدها را در افراد به وجود می آورد. به این ترتیب، هر کسی تلاش می کند در کنار سایرین روی کدها کار کند و به جای آن که صرفاً به دنبال خطاها و غلط گیری باشد سعی کند کدها را بفهمد و منظور و هدف آن ها را دریابد و در پیش برد و بهبود آن ها همکاری کند.

در طی جلسه نقد و بررسی سعی کنید آرام باشید و نظرات خود را با ملایمت بیان کنید و احترام سایرین را حفظ کنید. مطمئن شوید که نقدهای شما سازنده باشد، نه این که با زبان تلخ و صرفاً برای کنایه زدن به دیگران بیان شوند. نقش های متفاوت را در جلسه ی بازنگری بشناسید تا به این ترتیب اجازه ندهید مثلاً نظر مدیر گروه صرفاً به این دلیل که جایگاه سازمانی بالاتری نسبت به سایرین دارد نظرات دیگران را تحت تأثیر قرار دهد یا مانع بیان حقیقت شود. برای مثال یک نوع از تقسیم نقش ها می تواند به این صورت باشد که یکی از اعضا روی مستند سازی، دیگری روی استثنائات، و نفر سوم روی کارکردها و قابلیت استفاده ی کدها متمرکز شود. این شیوه کمک می کند تا مسئولیت نقد و بررسی بر عهده ی همه ی اعضای گروه باشد و همه ی شرکت کنندگان جلسه فعال باشند.

بازنگری کدها را به صورت مرتب در هر هفته انجام دهید. چند ساعت از وقت خود را صرف شرکت در این جلسات کنید. به صورت گردشی منتقدان را انتخاب کنید. به اعضای تازه وارد تیم هم اجازه دهید در این جلسات حضور فعال داشته باشند. شاید تجربه ی کاری آن ها کم باشد، با این حال چون این افراد غالباً به تازگی از دانشگاه فارغ التحصیل شده اند و دانش و آگاهی جدیدی دارند می توانند زاویه ی دید متفاوتی را در گروه ایجاد کنند. البته حضور اعضای حرفه ای و متخصص هم امری ضروری است تا از این طریق بتوانند دانش و تجربه منحصر به فرد خود را به سایرین منتقل کنند. چنین افرادی می توانند کدهای مستعد خطا را با سرعت و دقت بیش تری نسبت به سایرین پیدا کنند.

اگر همه ی کدهای نوشته شده توسط تیم برنامه نویسی از قراردادها و استانداردهای تعریف شده ای پیروی کنند که بتوان آن ها را با ابزارهای خاصی کنترل کرد، جریان بازنگری و مرور کدها راحت تر و سریع تر پیش می رود و از این طریق، تیم در جلسه ی بررسی وقت خود را برای شکل دهی و فرمت بندی کدها تلف نمی کند.

شاید مهم ترین چیزی که به تیم ها کمک می کند تا از مزایای چنین جلساتی بهره مند شوند تبدیل کردن یک جلسه ی خسته کننده و کسالت آور به یک جلسه ی پر نشاط و مفرح باشد. اگر اعضای جلسه احساس کنند که موقعیت آن ها تهدید می شود، به سختی می توان انگیزه ی شرکت در جلسات بعدی را در آن ها ایجاد کرد. جلسات بررسی کدها باید به صورت غیر رسمی و با هدف اصلی انتقال دانش و اطلاعات در میان اعضا برگزار شوند. هرکس باید سعی کند به جای اظهار نظر طعنه آمیز و تحریک کننده، جوی صمیمی و به دور از استرس را ایجاد کند. مطمئن باشید برگزاری جلسات در چنین فضایی کیفیت کدها را بهبود می بخشد، رعایت استانداردها را تضمین می کند، و به عنوان یک ابزار آموزشی ارزشمند دانش و تجربه ی توسعه دهندگان را بالاتر می برد. 

لیست نظرات
کاربر میهمان
دیدگاه شما چیست؟
کاربر میهمان
محسن
محسن
این ایده خیلی خوب هست ولی مهمتر از اون وجود فرهنگ اجرای چنین کاری در محیط کار هست
چونکه انتقادات و پیشنهادات باید خیلی حرفه ای و در کمال احترام ارایه بشن،از اونجایی که این موضوع پتانسیل بسیار زیادی برای تمسخر افراد تازه کار ممکن موجب دلسرد شدنشون از ادامه کار و پیشرفت کردن بشه
شاید خوب باشه اگر ایرادی از کد یک نفر گرفته میشه راه حل و راهکار برای بهتر کردن کد هم بهش گفته بشه و بهش کمک بشه تا این ایراد رو برطرف کنه و همینطور رفرنس و منابع آموزشی مفیدی هم بهش ارایه بشه که مکمل صحبت های انجام شده باشه
Insight
Insight
یکی از عواملی که موجب اقبال بیشتر به فرهنگ Open Source شده، اینه که تمامی کدها، مستندات و اعمال توسط سایرین قابل مشاهده ست و برنامه نویس‌ها سعی میکنن تلاش خودشون رو برای افزایش کیفیت کدها انجام بدن.
برنامه نویسان زیادی این کدها رو میبینن و نظرات خودشون رو میگن و در مواردی که نیاز به تغییر هست، تغییرات لازم رو انحام میدن.
بعد از گذشت مدتی، این نظرات و تغییرات باعث بهبود سطح کیفی پروژه میشه. اما در مقابل، محصولاتی که بدون کمک گرفتن از سایرین و پرسیدن نظرات اونها عرضه بشه، احتمالا پایین‌تر بودن کیفیتش بیشتر میشه.
این مسئله در زندگی هم بسیار حائز اهمیته. مشورت و کمک گرفتن بهتر از انجام کارها به صورت انفرادیه.
نقد و بررسی کدها به خصوص اگه توسط متخصصان و وکیل‌مدافعان شیطان انجام بشه، به بهتر شدن کد کمک میکنه.