در سراسر اینترنت کلی نوشته و مطلب پیدا می‌کنید که به شما یاد می‌دن چطور با هر زبان و تکنولوژی که نیاز دارین یک نرم‌افزار بنویسید ولی کمتر آموزشی پیدا می‌کنید که درباره تحویل دادن پروژه‌های نرم‌افزاری به شما چیزی یاد بده.

به طور کلی شرکت‌ها و تیم‌های نرم‌افزاری دو نوع پروژه نرم‌افزاری کلی به عنوان خروجی می‌تونن ارائه بدن: پکیج‌های نرم‌افزاری که معمولاً مشتری خاصی نداره و برای عموم مشتریان (چه در یک حوزه اختصاصی و چه در یک حوزه عمومی) تولید می‌شن. نمونه پکیج‌های نرم‌افزاری می‌شه مثلاً به نرم‌افزارهایی مثل AutoCad یا Photoshop‌ که در حوزه اختصاصی تولید شدند یا نرم‌افزاری مثل KMPlayer که در حوزه عمومی‌تری تولید شده اشاره کرد.

نوع دوم خروجی تیم‌ها، ارائه نرم‌افزار به سفارش مشتری هست. در این مدل شما باید خروجی کارتون رو به یک شخص یا شرکت یا سازمان تحویل بدید. موضوع این نوشته بیشتر درباره این مدل هست.

وقتی شما دارین یک پکیج نرم‌افزاری تولید می‌کنین، بر حسب روشی که برای نیازسنجی و دریافت نیازهای عموم مشتریانتون استفاده کردید یک feature set دارید که به شما می‌گه این نسخه از نرم‌افزارتون چه قابلیت‌هایی باید داشته باشه. تیم برنامه‌نویسی شما این قابلیت‌ها رو به نرم‌افزارتون اضافه می‌کنه و بالاخره بعد از یک پروسه تست‌های مختلف شما یک نسخه جدید رو release‌ می‌کنین.

برای اینکه موضوع روشن‌تر بشه فرض کنید شما برای خرید یک کت و شلوار به یک فروشگاه مراجعه می‌کنین. در فروشگاه با کت‌ و شلوارهایی با سایز‌ها و رنگ‌ها و طرح‌های مختلف روبرو هستید که از بینشون یکی رو انتخاب می‌کنین. بعد از اینکه کت و شلوار رو انتخاب کردین، دیگه زیاد نمیشه توی طرح و رنگ و حتی اندازه‌اش تغییر داد.

پکیج نرم‌افزاری هم یک نقطه مشترک اصلی با مثال خرید کت و شلوار از فروشگاه داره. شما نمی‌تونید خیلی توی محصول خریداری شده تغییرات ایجاد کنید. مثلاً وقتی از مایکروسافت word استفاده می‌کنید نمی‌شه از فروشنده درخواست کنید که word شما آهنگ هم پخش کنه!

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

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

نکاتی درباره تحویل دادن نرم‌افزار

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