کتاب راهنمای مقدماتی فرمولنویسی در اکسل چاپ شد. این کتاب رو خیلی ساده نوشتم و سعی کردم حجمش کم باشه تا کسایی که میخوان خیلی سریع و راحت در حدی قابل قبول فرمولنویسی رو یاد بگیرن بدون ترس و لرز برن طرفش. کلا فکر میکنم تو هدفم موفق بودم.
پینوشت: ظاهرا کتاب پریماورا 6 هم چاپ شده، فقط چند روز بیشتر از این ماجرا نمیگذره و علاوه بر اینکه توزیعش هنوز کامل نشده، اطلاعات دقیقش رو هم ندارم که بنویسم. با این حال حداکثر تا یه هفته دیگه باید بتونین به راحتی بخرینش.
الان که حموم بودم یه دفعه تصمیم گرفتم یه مجموعه مطلب با این عنوانی که میبینین شروع کنم. خیلی وقتا تو کارمون به مسایل عجیبی بر میخوریم که باید دنبال دلیل و توجیهشون بگردیم و این کار شبیهِ حل معماست. بعضی از معماهایی که باهاشون برخورد کردم و میکنم رو براتون مینویسم.
فرض کنین پیشرفت واقعی و برنامهریزی شده پروژه هر دو در ابتدای سال 50٪ بوده. قراره پروژه پایان سال تموم بشه و تا الان که تقریبا نصف سال گذشته، همیشه حساب کتاب کردیم و گزارش کردیم که پیمانکار بین یک سوم تا یک چهارم مقدارهای برنامهریزی شده دورهایش رو انجام داده. الان پیشرفت برنامهریزی شده 90٪ و واقعی 70٪ هست. به نظرتون عجیب نیست؟
تو این مدت قرار بوده پیمانکار کلا 40٪ پیشرفت کنه، در حالی که 20٪ پیشرفت کرده؛ یعنی نصف کارهای برنامهریزی شدهش رو انجام داده. ولی ما تو این مدت هر هفته داشتیم گزارش میکردیم که بین یک سوم تا یک چهارم برنامهریزی محقق شده؛ ماجرا چیه؟ حسابهامون اشتباه بوده؟
خوب، نظرتون چیه؟
جوابی به نظرتون میرسه؟
این مسئله طبیعیه و هیچ مشکلی نداره. برای اینکه کارکرد همیشه به نوعی تابع یه جور S هست؛ این مسئله یه اجباره، چون هرچی به پایان کار نزدیکتر بشیم جبهههای کاری کمتر میشن و نمیشه به اندازه اواسط کار پیشرفت کرد. به همین خاطره که کم کم شیب (سرعت کار) کم میشه و قسمت انتهایی S رو میسازه.
یه ماجرایی هست که بهش میگن سندروم دانشآموز و از مبانی تئوریک سیستم زنجیره بحرانیه (با روش مسیر بحرانی یا CPM فرق داره).
سندروم دانش آموز میگه که فرقی نمیکنه چقدر به یه دانش آموز وقت بدی، به هر حال کارش رو آخر وقت انجام میده و هرچی به فرجه نزدیکتر میشه کارش فشردهتر میشه، در نهایت معمولا یه کمی هم دیرتر تحویل میده. این تاخیر در تحویل با افزایش زمان حل نمیشه، چون مشکل سندروم دانش آموزه، نه کمبود وقت.
تو سیستم زنجیره بحرانی سعی میکنن مشکلات ناشی از سندروم دانش آموز رو حداقل کنن. اونجا با برنامههایی سر و کار داریم که همه فعالیتهاش بحرانیان و مدت زمان پروژه تقریبا نصف مقداریه که تو برنامههای معمولی به دست میاد. در عوض نصف باقیمونده زمان به صورت بافر تو برنامه درج میشه و اینکه پیمانکار در هر زمان چقدر از بافرش رو مصرف کرده باشه معیار مطابقت اون با برنامهس، یعنی عملا تنها سیستمیه که وابسته به ضرایب وزنی نیست.
حالا همه اینها رو گفتم که یه نمونهای از سندروم دانشآموز رو بگم. همکارای ما تو سیستم پیمانکار قراره مجموعه کارهایی رو انجام بدن و هر هفته سهشنبهها راس ساعت 2 بیان دفتر ما تا همراه با ارائه اونها جلسهای هم داشته باشیم. همیشه بین 20 دقیقه تا نیم ساعت تاخیر داشتن. دو هفته پیش پیمانکار و مشاور به من اصرار کردن که جلسه رو بذاریم ساعت 3 تا این مشکل حل شه. حدس …
یه قابلیت خوبِ اکسل اینه که میشه توش نمودارهایی ترسیم کرد که ترکیبی از چند نوع نمودار مختلفه. مثلا فرض کنین میخوایم پیشرفتهای برنامهریزی شده تجمعی و دورهای رو تو یه نمودار نشون بدیم. بهتره که مقادیر تجمعی با نمودار خطی و مقادیر دورهای با نمودار میلهای ترسیم بشن. بنا بر این باید یه نمودار ترکیبی بسازیم.
جدول زیر اطلاعات خام رو نشون میده:
حالا باهاش یه نمودار از نوع میلهای یا خطی میکشیم:
خوب، الان مقدارهای تجمعی با نوعِ نمودار مناسب نمایش داده شدن. روی خط مقدارهای دورهای کلیک کنین تا انتخاب بشن؛ میدونین که وقتی انتخاب شده باشد با گیرههای کوچکی که دور همه نودها نمایش داده میشن میشه شناختشون. بعد از اون از تب Design اکسل 2007 روی Change Chart Type کلیک کنید. با این کار یه کادر محاوره باز میشه و انواع نمودار رو نشون میده؛ یکی از نمودارهای میلهای مناسب رو انتخاب کنین و کادر محاوره رو تایید کنین تا ازش خارج بشین. در نظر داشته باشین که هر نموداری رو نمیشه با نمودار دیگه ترکیب کرد؛ مثلا نمیتونین یه نمودار دو بعدی و یه نمودار سهبعدی رو ترکیب کنین. شکل زیر نتیجه فعلی رو نشوه میده:
خوب، نمودار ترکیبی ساخته شد. ولی کارمون تموم نشده؛ باید اون رو بهتر کنیم. چه چیزهایی برای بهتر کردنش به نظرتون میرسه؟ پیش از هر چیز یه سری کارهایی که تو مطالب مجموعه “نمایش اطلاعات” نوشتم رو …
بعضی وقتا تو نمودارها زیاد از حد اطلاعات ارائه میشه، مثل این نمودار:
هدف از ارائه نمودار اینه که اطلاعات رو تصویری نمایش بدیم، اگه قرار باشه دوباره انبوهی از اطلاعات غیر تصویری رو بهش اضافه کنیم، ترکیب عجیبی به وجود میاد.
مشکل اول اینه که وقتی اطلاعات تصویری وجود داره، نیازی به اطلاعات انشایی و عددی نباید باشه. اگه قراره اطلاعات در حد چند رقم اعشار در اختیار بیننده قرار بگیره، احتمالا ارائه نمودار معنی نداره. ولی اکثر مواقع نیازی به این دقت نیست و دریافت سادهای که از نمودار میشه کافیه.
اگه آدم مجبور باشه که اطلاعات عددی رو هم به نمودار اضافه کنه، باید تا جای ممکن صرفهجویی کنه. اطلاعات اضافهای مثل Series Name و Category Name به هیچ وجه نباید تو نمودار باشه و Value هم اگه قراره باشه، باید با تعداد ارقام اعشار مناسب، اندازه کوچیک و کمرنگتر درج بشه.
کمرنگ بودن اطلاعات اضافی اهمیت زیادی داره؛ اگه اعداد پررنگ باشن، زیاد از حد جلب توجه میکنن و تمرکز روی عناصر تصویری نمودار کم میشه.
این نمودار مقادیر تجمعی بتنریزی، آرماتوربندی و قالببندی رو تو دورههای مختلف نشون میده و متاسفانه امثال این نمودار رو زیاد میبینم. در مورد نسبت عددها سختگیری نکنین، چون رندم مقدار گرفتن.
مشکل این نمودار اینه که سه ماهیت مختلف، با سه واحد متفاوت، در یک نمودار و با یک محور عمودی ترسیم شده. به عنوان مثال عدد 1000 در محور عمودی نمودار هم به معنی هزار کیلوگرم آرماتور، هم هزار متر مربع قالببندی و هم هزار متر مکعب بتنریزی به کار رفته.
این شیوه ارائه اطلاعات خیلی بده، چون وقتی چنین نموداری ارائه میشه، مخاطب ناخودآگاه مقایسهای بین مقادیر سه خط انجام میده، در حالی که این مقایسه در این شرایط کاملا بیمعنیه. پایینتر بودن خط قالببندی به معنی کار کمتر در حوزه قالببندی نیست، چون قالببندی نرمها و واحدهای دیگهای داره.
اگه قرار باشه سه ماهیت متفاوت رو در یک نمودار قرار بدیم، حتما باید واحدهاشون رو یکسان کنیم. چطوری میشه واحدهای این سه ماهیت رو یکسان کرد؟
سادهترین راه اینه که تمام مقادیر رو بر برآورد کلیشون تقسیم کنیم و نشون بدیم که چه درصدی از کل بتنریزی، کل آرماتوربندی و کل قالببندی انجام شده. به این ترتیب همه مقادیر با واحد درصد هستن و نشون دادنشون تو یک نمودار منطقیتره.
حالا از همه اینها که بگذریم، چه دلیلی داره که همزمان هر سه مقدار رو نشون …
فرض کنین میخوایم مقدار دورهای بتنریزی رو تو دورههای مختلف نشون بدیم. تو این مثال دورهها رو با A، B، C و امثال اونها نشون دادم. چنین نموداری رو گاهی اینطوری ترسیم میکنن:
ولی چرا؟
انواع و اقسام نمودارها وجود داره و تقریبا میشه از هرکدوم برای نمایش هر اطلاعاتی استفاده کرد، ولی این به این معنی نیست که خودمون رو مجاز به این کار بدونیم؛ نوع نمودار با دو فاکتور مشخص میشه:
نوع اطلاعاتی که قراره ارائه بشه
تصویری که انتظار داریم با دیدن اون اطلاعات در ذهن مخاطب نقش ببنده
نمودارهای خطی نوعی پیوستگی رو به ذهن القا میکنن و در نتیجه برای ارائه اطلاعاتی مناسب هستن که جنبه تجمعی داشته باشن. مثلا اگه بخوایم مقدار تجمعی بتنریزی رو نشون بدیم، احتمالا بهترین نمودار همون نمودار خطیه. ولی در مورد مقادیر دورهای اینطور نیست؛ مقادیر دورهای پیوستگی مقادیر تجمعی رو ندارن؛ مقادیر مستقلی هستن که کارکرد دورههای مختلف رو نشون میدن. با توجه به این مسایل، بهتره که برای این اطلاعات از نمودار میلهای استفاده بشه:
این نمودار توزیع بتنریزی دورهها رو به خوبی نشون میده و تصویر نادرستِ وجود “روند” و پیوستگی رو هم در ذهن مخاطب به وجود نمیاره.
گفتم که علاوه بر اطلاعات، ذهنیتی که قصد داریم به وجود بیاد هم اهمیت داره. مثلا فرض کنین میخوایم نشون بدیم که از بتنریزیهای این دورهها، چه سهمی به هر دوره …
فرض کنین تعدادی دوره داریم و برای هرکدوم مقدار پیشرفت دورهای برنامهریزی شده و واقعی. اگه نمودار اونها رو تو اکسل رسم کنین، احتمالا نموداری شبیه شکل زیر دستتون رو میگیره:
خیلیها نمودار رو همین شکلی ارائه میکنن؛ ولی خیلی حیفه. اگه از من میشنوید، هیچوقت نمودارها رو با تنظیمهای پیشفرض اکسل ارائه نکنین.
اولین مرحله اینه که نمودار رو کمی شهودیتر کنیم. رنگها و روشناییها هرکدوم معنایی دارن که باید از اونها کمک بگیریم. چه دلیلی داره که مقدارهای واقعی قرمز و برنامهریزی شده آبی باشن؟
من دوست دارم اطلاعاتی که ارائه میکنم سیاه و سفید باشن، رنگها رو میذارم برای روز مبادا. مقدارهای برنامهریزی به انتظار ما و به نوعی به رویاهامون ربط دارن، پس خیلی شهودیتره که اونها رو کمرنگتر نشون بدیم و مقدارهای واقعی که “واقعیت” هستن رو پر رنگ.
من ترجیح میدم به جای اینکه مقدارهای برنامهریزی شده رو کمرنگ کنم، با خاکستری تیره، ولی با شفافیت بالا نشونشون بدم. تو این حالت میلهها عملا کمرنگ میشن، ولی فرقش اینه که خطهای راهنما از پشت اونها دیده میشن.
راهنمای نمودار هم اگه سمت راست باشه، بیدلیل جای زیادی رو اشغال میکنه؛ همیشه میشه داخل نمودار جایی خالی براش پیدا کرد.
اون توصیه همیشگی هم تو این نمودار رعایت شده: کمرنگ کردن خطهای راهنما.
خیلی پیش میاد که فاجعهای مثل شکل زیر رو به جای یه جدول ارائه کنن:
چرا این جدول مناسب نیست؟
کادرها هم مثل رنگها و روشناییها اهمیت زیادی دارن و باید از اونها به تناسب استفاده کرد. کادرها توجه بیننده رو به خودشون جلب میکنن و هرچه زخیمتر باشن، توجه بیشتری جلب میکنن. برای کارهای معمولی باید از ظریفترین کادرهای ممکن استفاده کرد و کادرهای ضخیم رو محدود به استفادههای خاص کرد. گذشته از این موضوع، تعدادِ زیادِ خطهای ضخیمی که تو این جدول وجود دارن به عددها غلبه میکنن و بیننده نمیتونه حواسش رو جمعِ دیدن عددها کنه.
جدول زیر تا حدی بهتره:
این جدول بهتره، به این خاطر که از خطهای ضخیمِ کمتری استفاده کرده. خطهای بیرونی ضخیمترن (هرچند که هنوز هم زیاد از حد ضخیمن) و توجه بیننده رو به داخل جدول جلب میکنن، ولی داخل جدول خطها نازکتر هستن و باعث میشه که اعداد بهتر دیده بشن.
ولی چه دلیلی داره که از این همه خط توی جدول استفاده کنیم؟
اگه ردیفها خط نداشته باشن معمولا بیننده نمیتونه ترتیب و ساختار جدول رو به خوبی ببینه، ولی ستونها معمولا اینطوری نیستن. به این خاطره که معمولا میتونیم برای مجزا کردن ستونها از خط استفاده نکنیم و به این ترتیب جدول با کادرهای بسته تشکیل نمیشه و ذهن رو کمتر به خودش جلب میکنه. تو این شرایط میتونیم از عنصرِ قویِ کادر برای متمایز کردن اطلاعات حساس استفاده …
تو کارهامون نمودارهایی شبیه نمودار زیر رو زیاد میبینیم:
به نظرتون نمودار بدی نیست؟ بهتر نیست نمودار به صورت زیر ارائه بشه؟
نمودار اول دو مشکل داره:
فاصله بین خطهای راهنمای افقی خیلی کمه. این خطها قراره راهنمایی باشن برای اینکه بشه ارتفاع میلهها رو با هم مقایسه کرد، ولی اگه تعدادشون زیاد باشه نه تنها راهنمایی نمیکنن، که خوانایی نمودار رو هم کم میکنن. همیشه باید فاصله مناسبی رو برای خطوط در نظر بگیرین و تو اکسل وارد کنین.
رنگها اهمیت زیادی دارن، خیلی زیاد. هر رنگ و هر مقدار روشنایی از هر رنگ، به اندازهای جلب توجه میکنه. هرچی عنصر پر رنگتر باشه، بیشتر جلب توجه میکنه. این مسئله باید متناسب با عناصر نمایشی باشه. هر عنصری که اهمیت بیشتری داره باید با رنگی نمایش داده بشه که بیشتر جلب توجه میکنه. خطهای راهنما اهمیتی کمتر از میلهها دارن، پس باید کمرنگتر باشن. تو نمودار اول خطها مشکی هستن، به همین خاطر توجه رو به خودشون جلب میکنن و بیننده نمیتونه به راحتی با نمودار ارتباط برقرار کنه. خطهای راهنمای نمودار دوم از نظر میزان جلب توجه در حدی مناسب خودشون قرار گرفتن.
میخوام بعد از این مطالبی در مورد شیوههای ارائه اطلاعات بنویسم، و این مجموعه مطالب رو با این پست شروع میکنم.
به نمودار زیر نگاه کنین:
به نظرتون نمودار چه اشکالی داره؟
هر نمودار تصویری از اطلاعات ارائه میکنه و این نمودار هم نسبتی بین این سه مقدار رو تو ذهن تصویر میکنه. آیا این نسبت درسته؟ مثلا به نظر میاد که B بیشتر از دو برابر A باشه، ولی آیا همینطوره؟
نه، اینطور نیست. حداقل مقدار محور عمودی صفر نیست، 110 حداقل مقداره. به این خاطره که نسبتها تو نمودار به هم خوردن. نمودار صحیح تو شکل زیر نشون داده شده:
محور عمودی این نمودار از صفر شروع شده و به همین خاطر نسبت اطلاعات رو به درستی نشون میده. نمودار اول غلط نیست، ولی به شدت گمراه کنندس؛ اطلاعات ارائه شده نباید گمراه کننده باشن.
این رو دارم مینویسم، چون خیلیها در موردش اشتباه میکنن.
فرض کنین پروژهای صد روزه باشه، پیشرفت برنامهریزی شده صد درصد باشه و 80٪ پیشرفت واقعی کرده باشیم. مقدار تاخیر چقدره؟ خیلیها به این سوال جواب میدن که 20 روز. چنین جوابی اصلا درست نیست؛ در واقع هیچ رابطه مستقیم و سادهای بین انحراف پیشرفت و تاخیر وجود نداره.
ممکنه پیشرفت واقعی بیشتر از برنامهریزی باشه، ولی تاخیر داشته باشیم. این اتفاق زمانی میافته که فعالیتهای بحرانی انجام نشده باشن، ولی مقدار زیادی از فعالیتهای غیر بحرانی انجام شده باشن. معنیش هم اینه که وضعیت پروژه خوب نیست، چون انجام نشدن فعالیتهای بحرانی باعث میشه که جبهههای کاری بسته بشه و به تدریج پیشرفت واقعی هم از پیشرفت برنامهریزی شده عقب بیفته.
ممکنه پیشرفت واقعی کمتر از پیشرفت برنامهریزی شده باشه، ولی تاخیری به وجود نیومده باشه. این ترکیب زمانی اتفاق میافته که تمام فعالیتهای بحرانی انجام شده باشن، ولی مقداری از فعالیتهای غیر بحرانی طبق برنامه پیش نرفته باشن. البته وقتی فعالیتی، هرچند غیر بحرانی، مقدار زیادی به تاخیر بیفته، احتمال بحرانی شدنش زیاده؛ به همین خاطر این حالت زیاد اتفاق نمیافته، مگر اینکه منطق اجرایی طور عجیبی باشه یا برنامه خیلی بد نوشته شده باشه.
شکل زیر این حالت رو نشون میده:
فرض کنین در زمانی که خط عمودی قرمز رنگ نشون میده …
یه مقدار در مورد محاسبه پیشرفت برنامهریزی شده مشکل وجود داره و میخوام تو این نوشته یه توضیح کوچیک در موردش بدم. در دو حالت با مقادیر برنامهریزی شده پیشرفت سر و کار داریم:
مقدار تجمعی پیشرفت برنامهریزی شده: وقتی میخوایم بگیم پروژه مثلا 45 درصد پیشرفت کرده، در حالی که برنامهریزی شده بوده که 50 درصد پیشرفت کنه. این حالت رو باید همونجوری که همه بلدن حساب کرد و میشه بعد از پایان برنامهریزی مقادیر تجمعی پیشرفت برنامهریزی شده رو تا پایان پروژه محاسبه کرد.
مقدار دورهای پیشرفت برنامهریزی شده: مثلا وقتی میخوایم بگیم این ماه 4 درصد پیشرفت کردیم، در حالی که برنامهریزی شده بوده که 5 درصد پیشرفت کنیم.
خیلیها دومی رو هم با روش اولی محاسبه میکنن، ولی من اصلا با این کار موافق نیستم. مثلا فرض کنین سرعت کار حدودا نصف بوده و به جای اینکه حدود 90 درصد پیشرفت داشته باشیم، 45 درصد پیشرفت کردیم. تو این حالت اگه پیشرفت برنامهریزی شده دورهای رو از مقدارهایی سادهای که برای مورد اول محاسبه کردیم به دست بیاریم، پیشرفت برنامهریزی شده برای دورهای در آینده پروژه که اتفاقا نزدیک به پایان پروژه هست و مقدارها هم افت کردن به دست میاد که هیچ معنایی نداره و بی دلیل وضع پروژه رو خوب نشون میده.
یه مثال دیگه براتون میزنم. فرض کنین پروژه بلوکهای مختلفی داره و میخواین اطلاعات پیشرفت اونها رو به …
دیروز انتشارات دیباگران به مناسبت انتشار هزار و صدمین کتابش، جشنوارهای برای تجلیل از مولفان و مترجمان برگزار کرد. تو این جشنواره، از هر موضوعی، یک یا چند مولف/مترجم به عنوان افراد برگزیده انتخاب شدن و بهشون لوح و سکه هدیه شد. به من هم لطف داشتن و تو گروه “کامپیوتر و IT” انتخابم کردن.
از این تریبون از تمام همکاران دیباگران، که فکر نمیکنم این مطلب رو بخونن، تشکر میکنم. کلا مجموعه خوبیه و همکاری باهاشون لذتبخشه.
کتاب راهنمای جامع برنامهنویسی VBA در پراجکت چاپ شد. بعد از صفحهبندی شد 422 صفحه.
لینک بالا صفحه این کتاب رو تو سایت ناشر باز میکنه. فهرست مطالب و بقیه مشخصات اونجا هست.
کسایی که بخوان کتاب رو تهیه کنن علاوه بر کتابفروشیها، میتونن از سایت دیباگران هم خرید کنن. ظاهرا سیستم کامل و بیدردسری برای فروش دارن؛ حالا اگه آزمایش کردین نتیجش رو به من هم بگین.