چرایی و روش کنترل نظرات مشتریان در تولید نرم‌افزار

چرا مشتریان مایلند در پروسه تولید نرم‌افزار نظر بدهند و چطور این نظرات را مدیریت کنیم؟

مدتی پیش علیرضا اسکندرپور عزیز مطلبی نوشته بود در خصوص دخالت کارفرمایان در پروژه‌های نرم‌افزاری و از من خواسته بود نظرم را در این خصوص بنویسم. این نوشته در خصوص چرایی دخالت و اعمال نظر مشتریان در طول تولید یک نرم‌افزار و راه‌های کنترل آن است.

این معروف‌ترین کمیک دنیای توسعه نرم‌افزار است. روال توسعه نرم‌افزار برای مشتریان را به بهترین شکل توصیف می‌کند.

آیا دخالت مشتریان در تولید بد است؟

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

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

چرا مشتریان می‌خواهند در تولید نرم‌افزار نقش داشته باشند؟

برای پاسخ به این سوال ابتدا باید به این نکته توجه داشته باشید که منظور از تولید نرم‌افزار در این مطلب، تولید نرم‌افزار سفارشی است مثلاً طراحی یک وب سایت را در نظر بگیرید یا نوشتن یک نرم‌افزار انبارداری خاص منظوره. در پروژه سفارشی  نحوه بررسی و تایید نظرات مشتریان در مقایسه با پکیج‌های نرم‌افزاری قابل سفارشی شدن متفاوت است. در پروژه سفارشی شما با مشتری روبرو هستید که بر اساس نیاز خاص خود به شما سفارش داده است و انتظار دارد همه چیز مطابق نظرش باشد.

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

با نظرات مشتریان در تولید نرم‌افزار چه کنیم؟

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

مرحله دوم فیلتر درخواست‌های مشتری همان زمانی است که در حال مذاکره با وی در خصوص بررسی نیازمندی‌هایش هستید. باید بتوانید به صورت هوشمندانه و البته با رعایت اخلاق حرفه‌ای نیازهای واقعی مشتری را شناسایی کرده و وی را به سمت تحلیل‌های خودتان از نحوه انجام کار هدایت کنید. این چیزی است که با تجربه بدست می‌آید.

تیر آخر هم در مواجهه با نظرات مشتریان این است که نیازهای اولیه مشتری را مکتوب کرده و به عنوان سند نیازمندی‌های نرم‌افزار (SRS) نگهداری کنید و نظراتی که از چارچوب سند SRS خارج است را به عنوان یک نیازمندی جدید محسوب کرده و حتی اگر می‌خواهید آن‌ها را انجام دهید، زمان انجام (deadline) و هزینه انجام این نیازمندی‌های جدید را از زمان و هزینه اجرای کار اصلی جدا کنید.

در نوشته از سری "درس‌هایی از استیو جابز و اپل برای کسب و کار نرم‌افزار" درباره دید دیگری که در مورد موضوع نظرات مشتریان وجود دارد خواهم نوشت.