کمک اسکرام به توسعه‌دهندگان

کمک اسکرام به توسعه‌دهندگان

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

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

 

تحویل یکباره پروژه های بزرگ و پیچیده به توسعه دهندگان:

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

 

ارائه زمان تحویل بدون دخالت توسعه دهندگان و بدون تخمین حجم کاری:

مشکل دیگری که اکثر برنامه نویسان دارند اینست که زمان تحویل پروژه‌ها بدون دخالت توسعه دهندگان بین شرکت و مشتری بسته می‌شود که اغلب این تخمین‌ها فضایی و بدون تحلیل و در نظر گرفتن حخم کار می‌باشد و توسعه دهنده مجبور است تحت فشار و استرس کار کرده تا بتواند پروژه را به زمان توافق شده برساند. جالب است که با وجود ریسک زیاد نرسیدن پروژه به زمان مقرر، شرکت یا مشتری بر روی آن زمان برنامه ریزی هم می‌کنند و اگر پروژه به زمان مورد نظر نرسد توسعه دهندگان بیچاره هستند که باید پاسخگو باشند. در متد اسکرام این مشکل تا حدودی حل شده است، در این متد تخمین زمانی کارها بر عهده خود توسعه دهندگان است و معمولا بعد از گذشت چند اسپرینت و بدست آوردن velocity تیم و شناخت میزان ریسک ها در این مدت، release plan انجام داده و زمان نسبتا دقیق با ریسک کمتر به مشتری داده می‌شود (نحوه انجام Release Plan را قبلا توضیح داده‌ایم). هرچه قدر این برنامه‌ریزی دقیق انجام شود و درصد اشتباه در تخمین زمانی کارها کمتر باشد زمان ارائه شده قابل اعتمادتر بوده و در این شرایط است که پروژه به صورت پیوسته و با سرعت نسبتا معقول پیش خواهد رفت و دیگر توسعه دهندگان تحت فشار و استرس مضاعف نخواهند بود و به مرور زمان دیگر انگیزه خود را از دست نخواهند داد.

 

ناراضی بودن مشتری از محصول:

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

 

نبود زمان کافی برای تست و طراحی مناسب:

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

 

وابستگی شدید پروژه ها به افراد:

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

 

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

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

“سمیرا نقی‌لو”

 

 

 

پاسخ دهید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *