بایدهای مدیریت پروژه: پارادوکس استخدام مهارت یا استعداد! (قسمت دوم)

بهره وری توسعه دهندگان ماهر در مقابل معمولی

در ادامه قسمت اول پست “بایدهای مدیریت پروژه: پارادوکس استخدام مهارت یا استعداد!”، این قسمت به موضوع استفاده از توسعه دهندگان ماهر در مقایسه با توسعه دهندگان معمولی یا متوسط می پردازه.

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

یک برنامه نویس ماهر فقط کمی بهتر از یک برنامه نویس معمولی نیست؛ تفاوتشون از زمین تا آسمونه

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

 

 

در توسعه نرم افزار، چیزی که امروز برنامه نویسی شد، میشه پایه و اساس برای فردا. اگر نرم افزار شما توسط توسعه دهندگان معمولی پایه ریزی شده باشه، به محض ورود توسعه دهنده‌های حرفه­‌ای، باید قبل از هرچیزی به عقب برگردند و ایرادات و نواقص قبلی را برطرف کنند (که کم هم نیستند!). استخدام توسعه‌دهندگان معمولی، سرعت (Velocity) تیم پروژه رو کاهش میده.

اغلب، حذف یک کارمند ضعیف از تیم، مفیدتر از اضافه کردن یک کارمند خوب هست

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

در ضمن، تعداد کانال‌­های ارتباطی پروژه هم با اضافه شدن هر نفر به تیم به صورت نمایی زیاد میشه. چطوری؟! یک تیم دو نفره، یک کانال ارتباطی داره. تیم 3 نفره، 3 کانال. تیم 4 نفره، 6 نفر. تیم 12 نفره 66 کانال ارتباطی داره.میبینید که تعداد کانال­های راتباطی با اضافه شدن آدم‌ها به طور تصاعدی زیاد میشه که فرمولش هم n(n-1)/2 هست. به عنوان مدیر پروژه با داشتن یک تیم 12 نفره باید 66 کانال ارتباطی یا رابطه رو مدیریت و اداره کنید. حالا اگه بخاطر عقب ماندن کارها یک نفر دیگه را به تیم اضافه کنید، تعداد 78 کانال ارتباطی برای نظارت خواهید داشت و این یعنی با اضافه شدن یک نفر به تیم 12 نفری، در واقع 12 کانال ارتباطی جدید به پروژه اضافه کردید که خودش یک عامل مهم افزایش پیچیدگی پروژه هست!

 

 

 

توسعه نرم افزار با توسعه دهندگان معمولی، 2 افسانه پروژه را برملا می­کنه:

🧨 اول اینکه می‌تونید زمان پروژه رو با افزودن افراد، کوتاه کنید.
🧨 دوم اینکه توسعه دهنده‌های معمولی کدهای معمولی (همراه با باگ) و با سرعت متوسط تولید می‌­کنند. در حقیقت توسعه دهنده‌های معمولی باعث کاهش بهره وری کلی و طولانی شدن بیش از حد پروژه میشن.

حالا راه حل چیه؟


💡 اول: به توسعه دهندگان حرفه‌­ای ابزار قدرتمند بدید. با این کار سریعتر نرم افزاری با کیفیت بالاتر به دستتون می­رسه.

💡 دوم: داشتن آدم هایی با کارایی و مسؤلیت کم به پروژه‌­ها کمکی نمی­کنه و تازه! مراقبت و نگهداری از توسعه دهندگان ضعیف، بهره وری توسعه دهندگان حرفه‌­ای (که نیروهای اصلی و حیاتی هستند) را هم کم می­کنه. نرم افزار بسیار پیچیده­‌تر از اونی هست که به یک فرآیند خط مونتاژ در تولید تبدیل و تشبیه بشه.

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