کانال تلگرام فراسوعضو شوید
بازگشت به کتاب‌ها
جلد کتاب افسانهٔ ماه–نفر نوشتهٔ فردریک بروکس

افسانهٔ ماه–نفر

نوشتهٔ فردریک بروکس · سال انتشار 1975

توسعهٔ نرم‌افزار مثل تولید صنعتی مقیاس نمی‌گیرد؛ افزودن نیرو به پروژه‌ای عقب‌افتاده به‌جای افزایش بهره‌وری، پیچیدگی و سربارِ ارتباطی را بالا می‌برد.

نقاط قوت

  • تفکر کلاسیک مهندسی نرم‌افزار.
  • هنوز برای مدیریت پروژه مرتبط است.
  • بحثی عالی دربارهٔ پیچیدگی.
  • برای رهبری مهندسی مفید است.

نقاط ضعف

  • برخی نمونه‌ها کهنه شده‌اند.
  • رویه‌های توسعهٔ مدرن بخشی از تصویر را تغییر داده‌اند.
  • چند ایده امروز دانش عمومی‌اند.

خلاصه کتاب

فردریک بروکس این کتاب را از تجربهٔ مستقیم خودش به‌عنوان مدیر پروژهٔ IBM System/360 و سیستم‌عاملِ OS/360 نوشت — پروژه‌ای که به‌رغم منابع عظیم، دچار تأخیرهای شدید شد. به‌جای پنهان کردن این شکست، بروکس آن را به موادِ خام یک تحلیلِ صادقانه تبدیل کرد: چرا پروژه‌های نرم‌افزاری، برخلاف تصور رایج، مثل پروژه‌های ساختمانی یا صنعتی مقیاس نمی‌گیرند؟

عنوان کتاب به‌طور مستقیم به هستهٔ استدلال اشاره می‌کند: «نفر-ماه» واحدی خیالی است. در تولید صنعتی، اگر یک کار را یک نفر در ده ماه انجام دهد، معمولاً می‌شود ده نفر را برای یک ماه به کار گرفت. اما در توسعهٔ نرم‌افزار، این معادله شکست می‌خورد، چون بخش زیادی از کار — طراحی، هماهنگی، ارتباط میان اعضای تیم — به‌طور طبیعی قابل‌تقسیم نیست و با افزودن نفر، هزینهٔ ارتباطی به‌صورت نمایی رشد می‌کند.

کتاب مجموعه‌ای از مقالات مرتبط است، هرکدام یک بُعد از این مشکل را باز می‌کند — از مدیریت پروژه گرفته تا معماری سیستم و طراحی ابزار — و با وجود نوشته‌شدن در دههٔ ۱۹۷۰، هنوز یکی از پراستنادترین متون مهندسی نرم‌افزار است.

ایده‌های کلیدی

۱. قانون بروکس: افزودن نیرو به پروژهٔ عقب‌افتاده، آن را عقب‌تر می‌اندازد

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

۲. هزینهٔ ارتباطیِ نمایی

بروکس فرمولی ساده می‌دهد: در تیمی با n نفر، تعداد خطوط ارتباطیِ دوبه‌دوی ممکن برابر با n×(n-1)/2 است. یک تیم پنج‌نفره ده خط ارتباطی دارد؛ یک تیم ده‌نفره چهل‌وپنج خط. این رشدِ نمایی توضیح می‌دهد چرا تیم‌های بزرگ، فراتر از یک آستانه، نه‌فقط سریع‌تر نمی‌شوند، بلکه واقعاً کندتر عمل می‌کنند — بخش هرچه بیشتری از زمان، صرف هماهنگی می‌شود، نه تولید.

افزودن نیروی انسانی به یک پروژهٔ نرم‌افزاریِ عقب‌افتاده، آن را عقب‌تر می‌اندازد.

۳. تیم جراحی: ساختار جایگزین

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

۴. اثر سیستم دوم

بروکس مشاهده می‌کند مهندسانی که سیستم اول‌شان را با موفقیتِ نسبی و محدودیتِ منابع ساخته‌اند، در سیستم دوم‌شان — وقتی منابع و اعتبار بیشتری دارند — تمایل خطرناکی به «اضافه کردن هر ویژگی‌ای که در پروژهٔ اول آرزویش را داشتند» پیدا می‌کنند. نتیجه معمولاً سیستمی بیش‌ازحد پیچیده و دیریاب است. او این را «اثر سیستم دوم» می‌نامد و هشدار می‌دهد که تجربهٔ بیشتر، به‌خودی‌خود، تضمینی برای طراحیِ بهتر نیست — گاهی حتی خطر عکس را بیشتر می‌کند.

۵. هیچ گلولهٔ نقره‌ای وجود ندارد

در مقاله‌ای که بعدها به چاپ‌های بعدی کتاب اضافه شد، بروکس میان پیچیدگیِ «ذاتی» (که از ماهیت خودِ مسئله می‌آید و هیچ ابزاری نمی‌تواند حذفش کند) و پیچیدگیِ «تصادفی» (که از ابزار و فرایندهای ما می‌آید و قابل‌کاهش است) تمایز می‌گذارد. استدلال او این است که هیچ فناوری یا روش‌شناسیِ منفرد نمی‌تواند بهره‌وریِ مهندسی نرم‌افزار را ده برابر کند، چون بخش عمدهٔ سختیِ کار نرم‌افزار پیچیدگیِ ذاتی است — پیچیدگیِ مسئلهٔ واقعی، نه ابزار حل آن.

برای چه کسی مفید است

  • مدیر پروژه یا مدیر مهندسی که با تیم‌های در حال رشد سروکار دارد — هستهٔ اصلیِ کتاب دقیقاً همین موقعیت است.
  • کسی که تصمیم می‌گیرد یک پروژهٔ عقب‌افتاده را چطور نجات دهد — قانون بروکس مستقیماً همین تصمیم را هدف می‌گیرد.
  • کسی که به تاریخ و بنیادهای فکریِ مهندسی نرم‌افزار علاقه دارد — نوشته‌شده توسط کسی که واقعاً یکی از بزرگ‌ترین پروژه‌های تاریخِ صنعت را مدیریت کرد.
  • کسی که دنبال ابزار یا فناوریِ خاصِ امروزی است — کتاب دربارهٔ اصول مدیریتی است، نه یک راهنمای فنیِ به‌روز.
بسیاری از مثال‌های فنیِ کتاب — زبان‌های برنامه‌نویسیِ خاص، سخت‌افزار دههٔ ۱۹۶۰ و ۱۹۷۰ — به‌شدت کهنه‌اند. باید این‌ها را از اصول مدیریتیِ زیربنایی جدا کرد؛ خودِ فناوری عوض شده، اما پویاییِ انسانیِ تیم‌های بزرگ که کتاب توصیف می‌کند، تغییر چندانی نکرده است.
چند ایدهٔ کتاب امروز چنان به دانش عمومیِ صنعت تبدیل شده‌اند (مثل خودِ قانون بروکس) که برای خوانندهٔ باتجربه ممکن است بدیهی به نظر برسند. همچنین رویه‌های توسعهٔ مدرن — تیم‌های چابک، ابزارهای همکاریِ آنلاین، یکپارچه‌سازیِ پیوسته — بخشی از تصویری را که بروکس ترسیم می‌کند تغییر داده‌اند، هرچند اصل زیربنایی دربارهٔ هزینهٔ ارتباطی همچنان صادق است.

سؤالات پرتکرار

آیا قانون بروکس همیشه صادق است؟

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

مدل «تیم جراحی» امروز هم استفاده می‌شود؟

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

چرا این کتاب با وجود قدمتش هنوز تدریس می‌شود؟

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

«هیچ گلولهٔ نقره‌ای» به چه معناست؟

یعنی نباید منتظر یک ابزار یا روش‌شناسیِ جادویی بود که بهره‌وری را یک‌شبه چند برابر کند. بخش عمدهٔ سختیِ نرم‌افزار از پیچیدگیِ ذاتیِ مسئله می‌آید، نه از کمبود ابزار — و پیچیدگیِ ذاتی را نمی‌شود حذف کرد، فقط می‌شود مدیریتش کرد.

آیا این کتاب برای تیم‌های چابکِ امروزی هم کاربرد دارد؟

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

این مطلب برایتان مفید بود؟

شمارش آرا پس از ۵ رأی نمایش داده می‌شود.

بیشتر در همین دسته