در طول پروژه، همواره در چرخه برنامهریزی کردن و سپس انجام کاری برای بهم زدن برنامهریزی در حال حرکت هستیم. شاید متوسط عمر یک برنامه را بتوان ۴ ساعت دانست. پس از ۴ ساعت، معمولا به نحوی اتفاقی میافتد که این برنامه نیازمند تغییر خواهد شد. این اتفاقات انواع مختلفی دارند. گاهی از ابتدا اشتباه برنامهریزی میکنیم، گاهی یک مشکل جدید را شناسایی میکنیم، گاهی مشکلی برای اعضای تیم بوجود میآید و خیلی اوقات نیازهای جدیدتری مطرح میشوند و یا اولویت کارها تغییر میکند. این موارد تنها نمونهای از اتفاقاتی هستند که با خط قرمز به سراغ برنامه تمیز ما میآیند.
تغییر غیر قابل اجتناب است و بخش جدی از فعالیت روزانه بازیسازی است. شاید بتوان گفت که اگر اینچنین تغییرات روزانه وجود نداشته باشد باید کمی نگران شویم. به قول دوستان چابک: Embrace the Change.
یک نکته ولی بسیار مهم است. برای انجام خود تغییرات نیز میتوان برنامهریزی کرد. در واقع برنامهریزی برای تغییر برنامهریزی فعلی. به عنوان مثال، با پیدا شدن یک نیاز جدید، چندین راهحل ممکن است وجود داشته باشد، یکی از این راهحلها ممکن است از بقیه بهتر باشد. سوال اصلی این است که چطور میتوان متوجه شد که کدام راهحل مناسبتر است؟
برای باز کردن مساله از یک مثال استفاده میکنم. در وسط فاز تولید پروژه هستیم، متوجه میشویم که واسط کاربری بازی از نظر تجربه کاربری (UX) مناسب نیست (این اتفاق در واقعیت نیز چندین بار برای ما افتاده است). تغییرات جدی در آن لازم است، تغییراتی که نیازمند به تولید کار جدید برای برنامهنویس، آرتیست و طراح بازی است. سوال اینجاست: دقیقا چه زمانی و با چه ترتیبی باید روی این مساله کار کنیم؟ در اسرع وقت؟ فردا؟ هفته آینده؟ تبعات این مجموعه از کارها روی پروژه چیست؟ چه کارهای دیگری عقب میافتد و به چه اندازه؟ آیا فیچری از بازی که در زمانی مقرر باید آماده میشد ممکن است به دلیل این کارها به عقب بیفتد؟ با درگیر شدن آرتیست در این کارها، دقیقا چند نفر دیگر که کارشان وابسته به این آرتیست بود در دو هفته آینده ممکن است بدون کار بمانند؟ آیا طراح بازی درگیر مسالهای است که نیازمند به صرف زمان پیوستهای است و درخواست اضافه شدن او به این مشکل تجربه کاربری، در کار او خللی جدی ایجاد خواهد کرد؟ با توجه به کارهای سه هفته آینده، برنامه نویس اول را روی این کار قرار دهیم یا برنامه نویس دوم را؟ کدام برنامهنویس بهتر است که در این زمینه نیز تجربه کسب کند؟ مقوله آموزش نیروی انسانی چقدر امروز مهم است؟ آیا اضافه کردن این کار در این هفته روحیه کسی را بالا یا پایین خواهد برد؟
اگر بیش از یک راهحل برای برطرف کردن مشکل تجربه کاربری داریم، هر کدام از آنها دقیقا روی وضعیت پروژه و موارد ذکر شده در بالا چه تاثیری میگذارد؟ با ارزش دادن به اثر هر راهحل، میتوان راهحل بهتر را انتخاب کرد. این فرآیند تفکر و شبیه سازی تاثیر راهحلهای جدید روی آینده پروژه در واقع همان برنامهریزی برای تغییر برنامهریزی است. یک مکانیزم ارزشگذاری روی پارامترهای پروژه لازم داریم و هر راهحل را باید بررسی کنیم که چه تاثیری روی ارزش میگذارد. آن راهحلی انتخاب شود که با ارزشتر باشد.
به عنوان مثال فرمول ارزش ممکن است اینگونه باشد:
ارزش = کمترین درگیری Lead Programmer + عدم تغییر در زمان تکمیل کاراکتر Joey + بیشترین امکان تست سیستم جدید UX
بر اساس فرمول ارزش بالا میتوان راهحلهای پیشنهادی را سنجید و بهترین راهحل را انتخاب کرد.
با زیاد شدن اینگونه تغییرات در پروژه، آگاه بودن از تبعات هر تغییر روی کل پروژه و تیم بسیار مهم میشود و این نیز از مواردی بوده است که من به خوبی نتوانستهام در پروژه اجرا کنم، موارد بالا بهصورت ضمنی و ذهنی در نظر گرفته شده است ولی بهتر آن است که بهصورت عینی در پروژه اجرا شوند.
به نظر من ابزارهای جدیدی برای کمک به شبیهسازی تاثیرات تغییرات روی پروژه لازم است. ابزارهای فراتر از گانتچارتهای استاندارد در نرمافزارهای کنترل پروژه و Kanban Board و یا Task Manager.