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

دستاورد اصلی تیم نرم‌افزاری، پیشرفت کار است نه کار کردن. چرا وقتی همه مشغول کار هستند، کار پیش نمی‌رود؟

محصول پیچیده با محصول هوشمند فرق می‌کند

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

تصور کنید option های اتوموبیل‌های شخصی هم مثل کلیدهای کنترلی یک هواپیما می‌بود. آن‌وقت برای راندن اتوموبیل هم باید سال‌ها یک نفر آموزش می‌دید و تمرین می‌کرد!

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

خروجی تیم هم به اندازه رعایت استانداردها مهم است

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

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

دستاورد شما، پیشرفت کار است نه کار کردن!

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

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

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