مصاحبه با مدیر تیم تولید نرم افزار

با رادنتی همراه باشید تا بیشتر با اصول طراحی و تولید نرم افزار در این شرکت برنامه نویسی آشنا شویم.
امروز وارد تیم تولید این شرکت شده ایم و در خدمت مدیر پروژه های نرم افزاری شرکت رادنت هستیم و درباره ساختار تولید و واگذاری وظایف در تیم تولید اطلاعاتی کسب می کنیم.


همانطور که می دانیم Taskپایین ترین سطح در انواع Work Item در Agile Template است.
Task : کوچکترین واحد عملیاتی در تیم توسعه است. در اصل تیم توسعه با استفاده از Task مشخص میکند چه کارهایی برای انجام لازم است ،چه کسی این کار را انجام میدهد ، این کار چقدر زمان میگرید و تا کنون برای این کار چقدر زمان صرف شده است.
مالک Task در تیم توسعه مسئولیت بروزرسانی اطلاعات Task را بعهده دارد.
در انتهای DAILY MEETING اعضای تیم توسعه Task هایی که در روز قبل انجام داده اند را بروز رسانی میکنند و عدم بروزرسانی به موقع منجر به نمایش مقادیر اشتباه در BURN DOWN CHART میشود.

همانطور که در تصویر زیر مشاهده میکنید Task ها در Agile Template ، چهار وضعیت دارند.

هر Task در زمان ایجاد خود در وضعیت New قرار دارد. در صورت انجام اولین فعالیت روی Task توسط شخصی که Task به او محول شده ،تسک باید در وضعیت Active قرار گیرد و در صورت اتمام فعالیت یک Task ،در هر زمان Task باید در وضعیت Close قرار گیرد؛ اگر بعد از اعلام تکمیل Task مشخص شود که در تکرار جاری نیاز است برای این تسک فعالیت دیگری انجام شود باید Task از وضعیت Close به وضعیت Active منتقل شود. طول عمر یک Task حداکثر یک تکرار است و اگر نیاز است در رابطه با Task در تکرار بعد فعالیتی انجام شود؛ Task مورد نظر باید بسته شود و Task جدیدی ایجاد شود.هر Task در زمان ایجاد خود در وضعیت New قرار دارد. در صورت انجام اولین فعالیت روی Task توسط شخصی که Task به او محول شده ،تسک باید در وضعیت Active قرار گیرد و در صورت اتمام فعالیت یک Task ،در هر زمان Task باید در وضعیت Close قرار گیرد؛ اگر بعد از اعلام تکمیل Task مشخص شود که در تکرار جاری نیاز است برای این تسک فعالیت دیگری انجام شود باید Task از وضعیت Close به وضعیت Active منتقل شود. طول عمر یک Task حداکثر یک تکرار است و اگر نیاز است در رابطه با Task در تکرار بعد فعالیتی انجام شود؛ Task مورد نظر باید بسته شود و Task جدیدی ایجاد شود.
برای تعریف یک Task باید بدانید که هر Task مشخص کننده چه اطلاعاتی از فعالیت های تیم توسعه است و هر کدام از این اطلاعات چه کاربردی در پیش برد وظایق تیم توسعه بر عهده دارند.

هر Task میشخص میکند  یک فعالیت :

۱-چیست؟ (Subject & Description)
۲-از چه نوعی است؟ (Activity)
۳-توسط چه کسی انجام میشود؟ (Assign)
۴-در چه تکراری انجام میشود؟ (Iteration)
۵-در چه ناحیه ایی تاثیر گذار است؟ (َArea)
۶-چقدر زمان برای انجامش لازم است؟ (Original Estimate & Remaining)
۷-چقدر زمان برایش صرف شده است؟ (Completed)
۸-اهمیت آن چقدر است؟ (Priority)

هر Task شرح میدهد که شامل چه فعالیتی است و دو فیلد اطلاعاتی Subject & Description برای این منظور در نظر گرفته شده است.
فیلد Title مختصری توضیح در رابطه با فعالیت مربوط به Task میدهد و برنامه نویسان رادنت در تعیین محتویات این فیلد باید به دو نکته توجه دارند :

۱-در هنگام مطالعه والد تسک (User Story) با مشاهده عنوان Task لازم است بتوان متوجه شد حدودا Task شامل چه فعالیتی بوده.

۲-در تسک های بدون والد، title باید بتواند به طور کامل فعالیت را شرح دهد.

فیلد Description به صورت تفضیلی مشخص میکند فعالیت مربوط به Task چیست و به معنای انجام چه کاری است.در تعیین محتوای این فیلد باید به سه نکته توجه داشت :

۱- کاربرد اصلی این فیلد برای شخصی است که فعالیت به او محول شده و محتوای این فیلد لازم است بتواند به صورت شفاف برای این شخص مشخص کند چه کاری را انجام دهد.

۲- در بررسی فعالیت های گذشته این فیلد باید گویای فعالیتی باشد که در طول حیات Task انجام شده و این نکته به این معنی است که Description یک Task در طول تکرار کامل میشود تا مشخص باشد در Task مورد نظر چه فعالیتی انجام شده.

۳-محتوای این فیلد باید برای سایر افراد تیم قابل درک باشد.

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

هر Task فقط میتواند شامل فعالیتی باشد که توسط یک نفر انجام میشود. رادنت اگر فعالیتی داشته باشد که انجام آن نیاز به دو نفر داشته باشد باید به ازای هر نفر یک Task تعریف کرد. نحوه ی برخورد با assign تسک به اعضای تیم توسعه در agile به دو صورت انجام میشود: یا درابتدای طرح تکرار برای Task مورد نظر شخصی که فعالیت به او محول شده هم تعیین میشود و Task به او متصل میشود یا مجموعه ای از Task های که به هیچ شخصی متصل نیست تعریف میشود و در طول طرح تکرار خود اعضای تیم توسعه Task ها را به خودشون assign میکنن.

تکرار (Iteration): کوچکترین و تنها واحد تحویل یک فعالیت در تیم توسعه است. فعالیت های تیم توسعه در طول یک تکرار انجام می شود و به پایان میرسند اما تنها در انتهای تکرار فعالیت های انجام شده به مشتریان رادنت تحویل داده میشود. معمولا آنچه به مشتریان رادنت تحویل میشود User Story است و نه Task ؛ اما بدلیل وجود Task های بدون والد ممکن است در انتهای یک طرح تکرار Task نیز به مشتریان تحویل شود.

ما در رادنت برای تعیین Iteration یک Task موارد زیر را در نظر می گیریم:

هرگز نباید یک Task را برای تکرار آینده ایجاد کرد.
هرگز نباید یک Task را در تکرار BackLogs قرار داد.
تقریبا میتوان گفت همراه تکرار یک Task که در وضعیت New یا Active قرار دارد تکرار جاری تیم است.
در طول چرخه حیات یک Task تکرار آن نباید تغییر کند.

 

ناحیه (Area) : تقسیم بندی محصول رادنت از لحاظ منطقی است. تنها نوع WorkItem هایی که میتوانند در Area غیر از Area پیشفرض تیم قرار بگیرند Task و Bug است.هر Task تنها میتواند یک Area داشته باشد به همین خاطر در تعریف Task باید تلاش شود که Task شامل یک Area باشد. در صورتی که Task شامل چند Area میشد ،Area آنرا باید به گونه ای انتخاب کرد که تمام Area های را تحت تاثیررا پوشش دهد.

واحد محاسبه زمان برای Task ساعت است و دو فیلد Original Estimate و Remaining برای تعیین زمان مورد نیاز Taskاستفاده میشود.

تیم توسعه در هنگام تعریف Taskبا توجه به نوع و جزییات فعالیت؛ برآوردی از زمان مورد نیاز برای انجام Taskدارد. این تیم بر اساس این برآوردها در ابتدای هر تکرار ظرفیت خود برای توسعه را اعلام میکند و بر اساس آن تعهد میدهد.
توانایی تیم توسعه در تخمین های دقیقتر کمک زیادی به مدیریت تعهدات تیم توسعه میکند. فیلد Original Estimate محل نگهداری زمانی است که تیم توسعه در هنگام تعریف Taskبرآورد کرده است و نباید این مقدار در طول چرخه حیات Task تغییر کند. در انتهای تکرار تیم توسعه با توجه به زمان صرف شده برای Task میتواند انحراف خود از زمان تخیمینی را مشخص کند و با توجه به دلایلی که منجرب به این انحراف شده اند در تکرار بعد تخمین دقیقتری بدهند.

Remaining مشخص میکند در هر لحظه چقدر زمان دیگر برای انجام Task مورد نیاز است. بنابراین بر خلاف Original Estimate ؛ Remaining باید به ازای انجام هر فعالیت در Task توسط کسی که Task به او محول شده بروزرسانی شود .در اصل شخصی که Task به او محول شده، بعد از انجام هر فعالیت بر روی Task دوباره تخمین میزند که چقدر زمان همچنان برای تکمیل Task مورد نیاز است. بروزرسانی روزانه باعث میشود مقادیر Burn Down Chart واقعی باشد.این چارت کمک بسیار زیادی به تیم توسعه در مدیریت زمان خود میکند.

همکاران ما در رادنت در تعریف Remaining به نکات زیر توجه می کنند:
وقتی تسکی Close یا Remove میشود باید مقدار Remaining آن صفر باشد.
تسکی که در وضعیت New یا Active قرار دارد حتما باید مقدار Remaining آن مخالف با صفر باشد.
تسکی که وضعیت New دارد مقدار Remaining آن برابر با مقدار Original Estimate است.

Completed : برای نگهداری زمانی که تا کنون برای یک Taskصرف شده از فیلد Completed استفاده میشود. این فیلد به ازای هر فعالیتی که بر روی Task انجام میشود باید بروزرسانی شود. برخلاف Remaining مقدار این فیلد همراه در حال افزایش است و به ازای هر فعالیتی که بر روی Task انجام میشود باید زمان انجام آن به این فیلد اضافه شود.

Completed از دو جهت اهمیت دارد :
۱-تیم توسعه در برآورد انحراف تخمینش از این فیلد استفاده میکند
۲-مدیران رادنت در برآورد هزینه واقعی تیم از این فیلد استفاده میکنند.
با توجه به موارد بالا برخلاف Original Estimate و Remaining که فقط کاربردشان در تیم توسعه رادنت است؛ Completed در خارج از تیم توسعه هم اهمیت دارد.
در تعیین محتوای Completed به نکات زیر توجه می شود :
۱-Task هایی که در وضعیت New قرار میگیرند مقدار Completed آنها صفر است.
۲-با انجام اولین فعالیت بر روی TASK هم وضعیت تسک Active میشود و هم Completed مقدار میگرد.
در صورتی که یک تسک Close شود حتما باید مقدار Completed داشته باشد و اگر هیچ فعالیتی برروی تسک انجام نشد مقدار آن صفر است.

اولویت (priority): در Task فقط برای تیم توسعه رادنت کاربرد دارد. اعضای تیم توسعه برای اینکه بتوانند نسبت به الویت یک فعالیت دید مشترکی داشته باشند از الویت استفاده میکنند.Priority در تمپلیت Agile دارای ۴ مقدار عددی از ۱ تا ۴ است. که مقدار ۱ با الویت ترین و مقدار ۴ کم الویت ترین است.

تیم محتوی رادنت

شرکت فناوری اطلاعات رادنت آتیه از سال 1389 فعالیت خود را در تشکیل و جمع آوری تیم نرم افزاری از دانشگاه های رتبه اول کشور آغاز نمود و بعد از انجام چندین پروژه موفق و مشاوره های سودمند به دولت خدمتگذار و به منظور پاسخدهی کلان نرم افزاری اقدام به ثبت نام رادنت در روزنامه رسمی شماره 20316 مورخ 12/09/93 نمود.

پاسخ دهید

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