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

وابسته نبودن تاخیر و انحراف پیشرفت

این رو دارم می‌نویسم، چون خیلی‌ها در موردش اشتباه می‌کنن.

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

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

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

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

delay

فرض کنین در زمانی که خط عمودی قرمز رنگ نشون می‌ده …

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

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

  1. مقدار تجمعی پیشرفت برنامه‌ریزی شده: وقتی می‌خوایم بگیم پروژه مثلا 45 درصد پیشرفت کرده،‌ در حالی که برنامه‌ریزی شده بوده که 50 درصد پیشرفت کنه. این حالت رو باید همونجوری که همه بلدن حساب کرد و می‌شه بعد از پایان برنامه‌ریزی مقادیر تجمعی پیشرفت برنامه‌ریزی شده رو تا پایان پروژه محاسبه کرد.
  2. مقدار دوره‌ای پیشرفت برنامه‌ریزی شده: مثلا وقتی می‌خوایم بگیم این ماه 4 درصد پیشرفت کردیم، در حالی که برنامه‌ریزی شده بوده که 5 درصد پیشرفت کنیم.

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

یه مثال دیگه براتون می‌زنم. فرض کنین پروژه بلوک‌های مختلفی داره و می‌خواین اطلاعات پیشرفت اون‌ها رو به …

جشنواره تجلیل از مولفان و مترجمان دیباگران

دیروز انتشارات دیباگران به مناسبت انتشار هزار و صدمین کتابش، جشنواره‌ای برای تجلیل از مولفان و مترجمان برگزار کرد. تو این جشنواره، از هر موضوعی، یک یا چند مولف/مترجم به عنوان افراد برگزیده انتخاب شدن و بهشون لوح و سکه هدیه شد. به من هم لطف داشتن و تو گروه “کامپیوتر و IT” انتخابم کردن.

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

راهنمای جامع برنامه‌نویسی VBA در MSP... چاپ شد.

کتاب راهنمای جامع برنامه‌نویسی VBA در پراجکت چاپ شد. بعد از صفحه‌بندی شد 422 صفحه.

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

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

کتاب اتوکد 2009

کتاب اتوکد 2009 تموم شد و فرستادمش برای ناشر. کتاب حدود 1100 صفحه شد.

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

به هر حال… کتاب بعدی پریماورا 6 هست. فعلا قرارداد رو نبستم و کار رو هم …

ایجاد رابطه با تعریف قاعده

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

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

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

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

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

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

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

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

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