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

روش نادرست: اجرای همزمان
روش نادرست برای برنامهریزی چند پروژه این هست که همه اون پروژهها رو به وظایف کوچکتر تقسیم کنید و بعد تلاش کنید که در یک مقطع زمانی مشخص بخشی از هر کدام از اونها رو انجام بدید.
این روش به این معنی هست که اگر مثلاً 3 تا پروژه دارید که هر کدام یک ماه زمان میبرند و در نهایت قرار هست 3 ماه زمان صرف اجرای اونها بشه، در 2 هفته اول مثلاً 20 درصد از تمام پروژهها رو پیش ببرید و در 2 هفته بعدی 20 درصد دیگه از تمام پروژهها و به همین ترتیب پیش برید و در 2 هفته آخر رفع عیوب همه اینها رو انجام بدید.
در عمل چی میشه؟ هیچکدام از پروژهها طبق برنامه پیش نخواهند رفت.
این کار یعنی سوییچ کردن بین وظایف بدترین روش برای مدیریت زمان پروژههاست. در بحث مدیریت زمان یک مثال برای روشن شدن مضرات سوییچ بین task ها مطرح میشه. در این مثال به روش زیر عمل کنید:
1- روی یک کاغذ سفید در سطر اول عبارت "من میتوانم همه پروژهها را در زمان مشخص به اتمام برسانم" را بنویسید و زمان نوشتنش رو اندازهگیری کنید.
2- در سطر دوم اعداد 1 تا 46 رو بنویسید و زمان نوشتنش رو اندازه بگیرید.
3- حالا در سطر 3 و 4 به این صورت عمل کنید که یک حرف از عبارت سطر اول رو در سطر 3 بنویسید و یک عدد از اعداد سطر دوم رو در سطر چهارم بنویسید و به همین ترتیب تا انتها پیش برید تا عبارت سطر اول در سطر سوم و اعداد سطر دوم در سطر چهارم نوشته بشوند و زمان اجرای این مرحله رو هم اندازه بگیرید.
خواهید دید که زمان اجرای مرحله سوم به مراتب بیشتر از زمان اجرای تک به تک پروژههاست. حالا چه کار باید کرد؟
روش درست زمانبر: اجرای یک به یک پروژهها
اگر مثال قبلی در خصوص مدیریت زمان رو در نظر بگیرید، روش درست این هست که در هر بار فقط یک کار رو انجام بدید.
در دنیای واقعی فقط کامپیوترها در ظاهر میتوانند چند کار را به صورت همزمان انجام بدهند. تاکید میکنم که این مساله هم ظاهری هست و در عمل CPU در هر زمان مشغول محاسبه یک عملیات است.
آدمها به صورت پیشفرض نمیتوانند چند کار را به صورت همزمان انجام بدهند. اگر هم در این مسیر تلاش کنند نتیجهاش میشه یک کار بیکیفیت که خیلی بیشتر از زمان پیشبینی شده وقت میگیره.
اگر 3 تا پروژه دارید که هر کدام 1 ماه زمان میبرند، در هر ماه یکی از اونها رو انجام بدید. این روش درست اما برای یک تیم نرمافزاری بهینه نیست.
اگر مشتریان شما نمیتوانند بپذیرند که کارشون کمی دیرتر (به نسبت روش اجرای همزمان کارها از همه پروژهها) اما با کیفیت بهتر انجام بشه، شاید اجرا نکردن این پروژه بیشتر به نفعتون باشه.
روش درست بهینه: اجرای یک به یک پروژهها به همراه شناسایی وظایف مشترک
برای بهینه کردن روش اجرای یک به یک پروژهها در یک تیم نرمافزاری اول باید نقاط مشترک پروژهها رو شناسایی کنید. مثلاً اگر 3 تا پروژه وب سایت دارید ممکنه همه اونها نیاز به بخش اخبار داشته باشند.
وقتی بخشهای مشترک رو شناسایی کردید، پروژه اول رو شروع کنید و برنامهریزی رو طوری انجام بدید که ضمن اجرای موارد خاص پروژه اول، موارد مشترک با پروژههای بعدی هم انجام بشه. این کار مسلماً بیشتر از یک ماه مورد نظر ما به طول خواهد انجامید ولی نتیجهاش اینه که در اجرای دو پروژه بعدی زمان کمتری صرف میشه.