پروفایل برنامه ریزی و کنترل پروژه

نادر خرمی راد

تفاوت plan و schedule

خیلی‌ها در مورد تفاوت اصطلاح‌های plan و schedule از من می‌پرسن و دیگه به نظر میاد به جای ایمیل باید اینجا توضیح داد:

  • schedule یعنی زمان‌بندی و scheduling یعنی زمان‌بندی کردن… برنامه‌ریزی جنبه زمانی پروژه؛ همون چیزی که در مرکز فعالیت‌های اکثر شماهایی که کارتون اصطلاحا کنترل پروژه‌س قرار می‌گیره. معمولا رایجه که برنامه‌ریزی منابع (به جز برنامه‌ریزی‌های خاص منابع انسانی مثل آموزش) هم جزئی از زمان‌بندی دونسته می‌شه. معمولا هزینه و گستره همراه زمان‌بندی تو یه «مدل» قرار می‌گیرن، ولی مفاهیم مستقلی هستن و وقتی صحبت از زمان‌بندیه معمولا شامل گستره و هزینه نمی‌شه.
  • plan یعنی برنامه و planning یعنی برنامه‌ریزی. منظور از برنامه معمولا کل برنامه‌ریزی‌هاییه که برای پروژه لازمه، یعنی علاوه بر برنامه‌ریزی زمان، شامل هزینه، گستره، منابع انسانی، تدارکات و همه چیزهای دیگه هم می‌شه.

 

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

اصلاح دیگه‌ای هم تو این حوزه هست که البته تو همه متون استفاده نمی‌شه، ولی باز هم عمومیت داره: catch-up plan یا catch-up schedule. این می‌شه نوع خاصی از replan یا reschedule که هدفش صرفا جبران عقب‌افتادگی‌هاس. در مورد برنامه‌های جبرانی هم فراموش نکنین که قرار نیست یه اتفاق کاملا مکانیکی باشه که با زمان‌ها و روابط بازی کنیم تا برسیم به تاریخی که بهمون گفتن. برای تهیه برنامه جبرانی باید تیم پروژه جمع بشن و مثل روز اول که برنامه رو تهیه می‌کردن فکر کنن، راه حل پیدا کنن که چطوری با وجود عقب‌افتادگی‌ها پروژه رو به تاریخی که تعیین شده برسونن و بعد اون سیاست رو تو برنامه اعمال کنن.

نوشته نادر خرمی راد (Nader Khorrami Rad)

طولانی ترین مسیر یا کمترین شناوری

کلا دو روش برای بحرانی به حساب آوردن فعالیت‌ها و در نتیجه تعیین «مسیر بحرانی»، یعنی مجموعه فعالیت‌های بحرانی – که از قدیم علاقه داشتیم تو یه مسیر باشن – وجود داره:

  1. بر اساس حداکثر شناوری کل فعالیت‌ها
  2. بر اساس قرار گرفتن روی طولانی‌ترین مسیر

 

روش اول برای اکثر افراد آشناتره و معمولا جاهایی که تئوری CPM رو توضیح می‌دن از همین روش استفاده می‌کنن. تو این روش زودترین و دیرترین تاریخ‌های شروع و پایان هر فعالیت تو دو مرحله رفت و برگشت محاسبه می‌شه و تفاضل زودترین و دیرترین تاریخ‌ها دو مقدار شناوری شروع و شناوری پایان رو به وجود میاره. نرم‌افزارهای مختلف یا یکی از این دوتا رو شناوری کل می‌شناسن، یا حداقل اون‌ها رو، یا حتی انتخاب اون رو به شما بدن؛ البته این دو مقدار تو حالت‌های معمولی با هم برابر هستن. حالا حدی برای اون‌ها در نظر گرفته می‌شه و هر فعالیتی که شناوری کلش از اون مقدار بیشتر نباشه بحرانی به حساب میاد.

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

اگه برنامه‌تون آزاد نباشه می‌تونه شناوری منفی هم داشته باشه، که در این صورت منفی‌ها هم بحرانی به حساب میان. البته می‌دونین که بهتره از برنامه‌های غیر آزاد استفاده نکنین و در نتیجه نباید انتظار شناوری منفی داشته باشین.

 

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

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

 

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

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

نوشته نادر خرمی راد (Nader Khorrami Rad)

انتشار نسخه چاپی قواعد زمان بندی پروژه

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

قواعد زمان‌بندی پروژه

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

نوشته نادر خرمی راد (Nader Khorrami Rad)

انتشار ویرایش دوم نسخه انگلیسی قواعد زمان بندی پروژه

امروز ویرایش دوم نسخه انگلیسی کتاب قواعد زمان‌بندی پروژه از طرف انتشارات دانمارکی bookboon منتشر شد و می‌تونین اون رو به رایگان از این آدرس دریافت کنین.

Project Scheduling Rules

برای کسایی که این کتاب رو نمی‌شناسن، کتابیه که ۱۹ قاعده مهم و زیربنایی زمان‌بندی پروژه که از استانداردها و آیین‌نامه‌های PMI و DoD استخراج شدن رو همراه با توضیح دلیل تجویز و شیوه به کارگیری توضیح می‌ده. رعایت این قواعد کاملا روی کیفیت برنامه‌های زمان‌بندی اثر می‌ذاره.

ویرایش دوم توضیح‌ها و شکل‌های بیشتری داره و پیوستی هم بهش اضافه شده که قواعد تهیه ساختار شکست کار پروژه رو توضیح می‌ده.

 

خواننده‌هایی که نسخه فارسی رو ترجیح بدن می‌تونن اون رو از این آدرس تهیه کنن.

نوشته نادر خرمی راد (Nader Khorrami Rad)

موفقیت کتاب قواعد زمان بندی پروژه

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

 

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

نوشته نادر خرمی راد (Nader Khorrami Rad)

انتشار نسخه انگلیسی کتاب قواعد زمان بندی

نسخه انگلیسی کتاب قواعد زمان‌بندی پروژه منتشر شده. می‌تونین کتاب رو به رایگان از pmarchy.com دریافت کنین.

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

نوشته نادر خرمی راد (Nader Khorrami Rad)

افزایش و کاهش مدت زمان پروژه

زیاد پیش میاد که در زمان برنامه‌ریزی اولیه پروژه، یا بعدا در زمان اجرا، لازم باشه که برنامه رو تغییر بدین تا مدتش کمتر یا بیشتر بشه. معمولا دغدغه اصلی کم کردن مدت زمانه، ولی گاهی هم لازمه که بیشترش کرد.

در هر حال، برای خیلی‌ها سواله که چطوری می‌شه این کار رو کرد؛ مثلا مدت زمان فعالیت‌ها رو تو ضریبی ضرب کرد، منابع رو به شیوه خاصی تغییر داد یا …

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

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

چیزایی که گفتم برای وقتیه که واقعا بخواین برنامه‌ریزی کنین، نه این‌که ماجرا صوری باشه.

نوشته نادر خرمی راد (Nader Khorrami Rad)

انتشار کتاب جدید: قواعد زمان بندی پروژه

کتاب جدیدم به صورت الکترونیکی منتشر شد: قواعد زمان‌بندی پروژه

این کتاب مجموعه‌ایه از ۱۹ قاعده که از استانداردها و آیین‌نامه‌های PMI و وزارت دفاع آمریکا استخراج شدن. رعایت اون‌ها کیفیت برنامه‌های زمان‌بندی رو به طور چشمگیری افزایش می‌ده.

رعایت بعضی از این قواعد خیلی ساده‌س و اعتراف می‌کنم که رعایت بعضی‌هاشون هم خیلی مشکله؛ ولی ارزشش رو داره.

 

قواعدی که تو این کتاب توضیح داده می‌شن این‌ها هستن:

  • قاعده ۱: برنامه مدیریت زمان‌بندی تهیه و مستند شده باشد
  • قاعده ۲: گستره برنامه کامل باشد
  • قاعده ۳: از فعالیت‌های Level of Effort با احتیاط استفاده شود
  • قاعده ۴: نام فعالیت‌ها منحصر به فرد باشند
  • قاعده ۵: نام فعالیت‌ها جمله‌هایی فعل‌دار باشند
  • قاعده ۶: شبکه منطقی فعالیت‌ها کامل باشد
  • قاعده ۷: فعالیت‌ها معلق نباشند
  • قاعده ۸: اکثر فعالیت‌ها پیش‌نیاز FS داشته باشند
  • قاعده ۹: از رابطه SF استفاده نشود
  • قاعده ۱۰: Lag فعالیت‌ها زیاد از حد نباشد
  • قاعده ۱۱: تعداد فعالیت‌های Lagدار زیاد نباشد
  • قاعده ۱۲: از Lead با احتیاط استفاده شود
  • قاعده ۱۳: فعالیت‌ها شناوری منفی نداشته باشند
  • قاعده ۱۴: شناوری فعالیت‌ها از حدی بیشتر نباشد
  • قاعده ۱۵: فعالیت‌ها Split نشوند
  • قاعده ۱۶: تعداد فعالیت‌های دارای قید تاریخ زیاد نباشد
  • قاعده ۱۷: فقط مایل‌ستون‌ها مجاز به داشتن قید تاریخ هستند
  • قاعده ۱۸: مدت زمان فعالیت‌ها زیاد نباشد
  • قاعده ۱۹: فقط از یک واحد زمانی استفاده شود

 

برای دریافت اطلاعات بیشتر و خرید کتاب به ایبوک‌های مدیریت پروژه مراجعه کنین.

نوشته نادر خرمی راد (Nader Khorrami Rad)

نسخه پنجم PMBOK تا یک سال دیگر

ظاهرا فعالیت جدی و برنامه‌ریزی شده تیم PMI برای تهیه نسخه جدید (پنجم) استاندارد پم‌باک شروع شده. احتمالا پیش‌نویسش تا اواسط سال ۱۰۱۲ و نسخه نهاییش تا آخر سال ۲۰۱۲ منتشر می‌شه.

صحبت‌های فعلی درباره اینه که احتمالا نوع و تعداد فرآیندها تغییر چندانی نمی‌کنه و احتمالا گرایش‌های مدرن مثل سیستم‌های Agile هم تا حدی وارد استاندارد می‌شن.

این دومی خودش خبر جالبیه؛ پم‌باک بهترین نمود سیستم‌های مدیریت پروژه کلاسیکه که در مقابل شیوه‌های جدید (چابک، اجایل) قرار می‌گیره. من همیشه این ایده رو داشتم که باید سنتزی بین این دو نوع سیستم به وجود بیاد. حالا خیلی‌ها امیدوارن که این سنتز به صورت تدریجی و قدم به قدم تو استاندارد پم‌باک انجام بشه.

 

الان یکی از اهداف بزرگ من اینه که بتونم تیم مرکزی بازنگری رو قانع کنم که سهم بالاتری به تمایز زمان‌بندی و مدل زمان‌بندی بدن. به عنوان مثال فرآیندی که الان اسمش «تهیه زمان‌بندی» هست، اصولا باید «تهیه مدل زمان‌بندی» باشه و این تمایز باید تو متن راهنمای اون فرآیند هم منعکس بشه.

در هر حال، امیدوارم نسخه بعدی استاندارد تو این حوزه قوی‌تر بشه.

نوشته نادر خرمی راد (Nader Khorrami Rad)

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

چهار نوع رابطه برای زمان‌بندی وجود داره و اکثر برنامه‌ریزها آزادانه از این چهار نوع استفاده می‌کنن (اشتباه!).

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

مدتی بعد که مشغول خوندن استانداردها شدم، دیدم که PMBOK، استاندارد زمان‌بندی PMI و PRINCE2 همگی تاکید می‌کنن که باید تا جای ممکن از FS استفاده کرد. این ماجرا رویکرد من رو به این ماجرا تاکید کرد.

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

نکته جالب اینه که مدتی بعد یکی از دستورالعمل‌های وزارت دفاع آمریکا رو می‌خوندم که به پیمانکارانشون ابلاغ می‌شه. جایی تو اون دستورالعمل گفته بود که اگه تعداد روابط FS یه برنامه‌ای کمتر از ۹۰ درصد باشه، اون برنامه از نظرشون مردوده.

 

با این حساب الان خیلی در مورد این رویکرد جدی‌تر از قبل هستم. حالا از شما می‌خوام که چند سناریو تو ذهنتون بیارین که توش از رابطه‌ای غیر از FS استفاده می‌کنین. حالا ماجرا رو تحلیل کنین و به این دو سوال جواب بدین:

  1. اون رابطه رو چطوری می‌شه FS پیاده‌سازی کرد؟
  2. به لحاظ مفهومی و عملکردی رابطه FS تو اون شرایط مناسب‌تره یا رابطه‌ای که قبلا انتخاب کرده بودین؟

 

می‌تونیم یه سناریوی رایج رو برای SS با هم مرور کنیم. این رایج‌ترین چیزیه که من تا حالا دیدم.

فعالیت S1 دوازده‌تا پیش‌نیاز داره؛ فعالیت‌های P1 تا P12. برای اون‌ها دوازده‌ها رابطه FS می‌سازین.

فعالیت S2 همزمان با S1 شروع می‌شه. بین اون‌ها یه رابطه SS می‌سازین.

 

به نظرتون این کار درسته؟

برای جواب دادن به این ماجرا باید به این سوال جواب بدیم که اگه S1 شروع نشده باشه، S2 رو هم نمی‌شه شروع کرد؟

معمولا جواب به این سوال منفیه. وقتی می‌گن که S2 همزمان با S1 شروع می‌شه معمولا منظورشون اینه که پیش‌نیازهای مشابهی دارن. در نتیجه رابطه صحیح برای S2 هیچوقت S1.SS نیست، بلکه باید دوازده رابطه FS بین اون و P1 تا P12 بسازین. در غیر این صورت عملکرد برنامه صحیح نخواهد بود.

 

برنامه‌ریزها خیلی وقت‌ها از این نوع SSها برای ساده کردن روابط استفاده می‌کنن و عملا برنامه رو ضعیف می‌کنن. مثلا اگه ده‌تا فعالیت با اسم‌های S1 تا S10 داشته باشیم که هرکدوم دوازده‌تا پیش‌نیاز P1 تا P12 داشته باشن و بخوایم روابط رو FS پیاده‌سازی کنیم، باید به اندازه حاصل‌ضرب ۱۰ در ۱۲، یعنی ۱۲۰ رابطه تعریف کنیم. این در حالیه که اگه روابط رو برای اولی تعریف کنیم و بقیه Sها رو باهاش SS کنیم، تعداد روابط ۲۱ خواهد بود، که به مراتب کمتره. می‌دونیم که تو این حالت شبکه رو خراب کردیم، ولی آیا واقعا لازمه که این همه رابطه تعریف کنیم؟

نه. می‌تونین یه مایل‌ستون بسازین و دوازده‌ها پیش‌نیاز رو به اون بدین، بعد اون رو پیش‌نیاز Sها بکنین. به این ترتیب به جای ۱۲۰ رابطه فقط ۲۲ رابطه ایجاد می‌کنین و این واقعا از ۲۱ رابطه خیلی بیشتر نیست. در عوض برنامه سالم‌تری هم به وجود آوردین.

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

 

پس تو سناریوی قبلی نیازی نیست که به جای FS از SS استفاده کنیم. حالا یه سناریوی دیگه که اون هم رایجه.

فعالیت S با فعالیت P همپوشانی ۵۰ درصد داره.

خیلی‌ها این رابطه رو SS+50% تعریف می‌کنن. آیا این درسته؟

تو این حالت اگه P شروع بشه و بلافاصله متوقف بشه یا مشخص بشه که مدت زمان لازم برای اون مثلا ۵ برابر برآورد اولیه‌س، S باز هم تو تاریخ قدیمی شروع می‌شه، چون فقط با شروع P ارتباط داره.

رابطه صحیح تو چنین مواردی، FS-50% هست، که مشکلات رابطه قبلی رو نداره.

 

پس، این توصیه رو همیشه در نظر داشته باشین که باید بیشتر از ۹۰ درصد فعالیت‌های برنامه‌تون از نوع FS باشن.

نوشته نادر خرمی راد (Nader Khorrami Rad)

برنامه برای باقیمانده کارها

خیلی وقت‌ها لازمه که برای باقیمانده کارها برنامه تهیه بشه یا اصولا وقتی که برنامه تهیه می‌شه قسمتی از کار انجام شده. خیلی‌ها تو این شرایط فقط قسمت‌های باقیمونده رو تو برنامه وارد می‌کنن و دارم این مطلب رو می‌نویسم که با تمام وجود تاکید کنم که:

 

گستره برنامه زمان‌بندی تو هر شرایطی باید کامل باشه

 

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

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

نوشته نادر خرمی راد (Nader Khorrami Rad)

نقص در شبکه منطقی فعالیت‌ها

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

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

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

 

در مورد شبکه منطقی فعالیت‌ها یک قاعده وجود داره، که مثلا تو استاندارد برنامه‌ریزی PMI هم هست:

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

 

خیلی‌ها به من ایمیل می‌دن و می‌پرسن که واقعا نیازی به رعایت این قاعده هست یا نه. جواب من اینه: بله، حتما، خیلی زیاد!

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

 

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

آخرین نکته‌ای که باید در نظر داشته باشین اینه که برنامه‌ای که یکی دو ماه براش زحمت می‌کشین و تهیه می‌کنین احتمالا چند سال مبنای کنترلتون خواهد بود و هرچقدر برنامه‌ریزیتون بهتر باشه، تو مرحله کنترل راحت‌تر خواهید بود.

 

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

نوشته نادر خرمی راد (Nader Khorrami Rad)

دو سبک در برنامه‌ریزی زمانی

من روش‌های زمان‌بندی رو به دو حالت تقسیم می‌کنم:

  • زمان‌بندی با انتهای آزاد
  • زمان‌بندی با انتهای مقید

 

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

 

زمان‌بندی با انتهای آزاد

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

فرجه و قیدهای “دیرتر از … شروع نشود”، “دیرتر از … تمام نشود”، “حتما در … شروع شود” و “حتما در … تمام شود” همه دوست دارن به شکلی مانع حرکت فعالیت به آینده بشن و در نتیجه نباید استفاده بشن.

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

تو این حالت مثلا Finish Variance می‌تونه بهتون بگه که فعالیت‌ها چقدر به تاخیر افتادن.

 

زمان‌بندی با انتهای مقید

تو این حالت باید تمام قیدهای زمانی رو وارد کنین. یه قید “دیرتر از … تمام نشود” برای پروژه داریم و اگه تو قرارداد یا صورت جلسات تاریخ‌های دیگه‌ای هم مشخص شده باشه، باید اون‌ها رو هم به همین شکل وارد کرد. توجه کنین که این تاریخ‌ها معمولا “دیرتر از … تمام نشود” هستن، نه “حتما در … تمام شود”؛ به عبارت دیگه اگه کار رو زودتر از اون تاریخ تموم کنین هیچکس بهتون ایرادی نمی‌گیره.

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

تو این حالت باید به جای Finish Variance به شناوری کل توجه داشته باشین که هیچی منفی نشه.

 

مقایسه روش‌ها

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

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

نوشته نادر خرمی راد (Nader Khorrami Rad)

زمان‌بندی یا مدل زمان‌بندی

تو پم‌باک و استاندارد زمان‌بندی PMI تفکیک خاصی تو حوزه زمان‌بندی وجود داره که توجه بهش می‌تونه مفید باشه. دو چیز داریم:

  1. مدل زمان‌بندی
  2. زمان‌بندی

 

مدل زمان‌بندی همون برنامه پروژه‌س که تو نرم‌افزار می‌سازیم. این مدل نمونه‌ای شبیه‌سازی شده از پروژه‌س که در هر زمان بر اساس واقعیت‌های اجرایی و منطقی که مشخص کردیم، زمان‌بندی‌های خاصی خروجی می‌ده.

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

 

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

 

چه چیزی یه مدل زمان‌بندی خوب به وجود میاره؟

عمدتا روابط مناسب. طراحی روابط کار پیش پا افتاده‌ای نیست. فرض کنین دوتا فعالیت 10 روزه داریم که یک بار رابطه fs-5d و بار دیگه ss+5d با هم دارن. این دوتا تو زمان‌بندی اولیه یه جور دیده می‌شن، ولی واقعا یه جور هستن؟ اگه فعالیت اول خیلی بیشتر از 10 روز زمان بگیره چطور؟

نوشته نادر خرمی راد (Nader Khorrami Rad)

زمان بندی مبتنی بر منابع

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

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

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

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

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

نوشته نادر خرمی راد (Nader Khorrami Rad)
اشتراک مطالب سایت

با اشتراک در فرم زیر مطالب جدید برایتان ایمیل می‌شوند:

اشتراک مطالب در تلگرام