فريق يعتمد عليه..Agile ليه تشتغل
ليه نشتغل Agile ، عشان الAgile هي انسب طريقة اننا نشتغل في مجال متغير زي الsoftware زي ما اتكلمنا هنا و عشان بيدينا فرصة نكتشف التحديات اللي قدامنا و نحلها بدري زي ما اتكلمنا هنا و فيه ميزة رهيبة كمان هي اننا بعد فترة من شغل الAgile مش بنشيل هم الفريق و انهم لسه محتاجين micromanagement و follow up كتير و هم بيكونوا مسئولين عن شغلهم و المشروع و تسليمه زي ما هم تعهدوا و مش بنكون محتاجين مجهود عشان نعرف ايه التحديات اللي بتواجههم و مع الوقت بيبقي عندنا ثقافة اننا نركز علي التعليم و التطوير و نحل مشاكلنا عشان نوصل لهدفنا كفريق في المشروع و اننا نبقي self organizing team .
عشان الفريق يتعلم و يوصل انه يبقي self organizing دي مسئولية كبيرة علي الفريق و علي الادارة ، الادارة لازم تثق في الفريق ، اولا في الAgile الفريق هو اللي بيقول هيشتغل ازاي و هو اللي بيحط الtime estimate مش بيتفرض عليه ، طبعا بيبقي فيه خبراء زي ال consultant او الarchitect او ال technical manager بيساعدوا الفريق و يعلموه بس في الاخر اللي بيعمل الشغل هو اللي بياخد القرار و بيكون مسئول عنه و مسئولية الادارة هي الدعم و التوجيه ، عشان كده مسئولية الفريق انهم يكونوا مسئولين عن شغلهم و مسئولية الادارة هي دعمهم و الصبر علي فترة التعليم و تشجيعهم انهم يتعلموا و يجربوا لو حاجة جديدة فيها فايدة و توفير بيئة تركيز ليهم.
و اهم حاجة اننا نتطور اننا نحط التعليم و التطوير كهدف في حد ذاته عشان كده دايما بنعمل ده علي iterations صغيرة و نتعلم من كل iteraion و بنعمل Inspect and adapt لشغلنا و للprocess اللي ماشيين بيها و هي دي الخطوة اللي لو اهتمينا بيها و موقعناهاش نضمن ان الفريق يتطور مهما كانت مشاكله في البداية.
هنتكلم عن شوية امثلة حقيقية حصلت مع فرق و ايه المشاكل اللي قابلتهم و ازاي تجاوزوها .
اول تحدي هو ان ال developer يقول انه خلص task معينة و ييجي الtester يشتغل يلاقي حاجة غير اللي هو متصورها او حاجات ناقصة متعملش و دي اتحلت باننا بقينا نتفق قبل ما نشتغل في اول الiteration علي تعريف ان الscenario خلص و دي ممكن نسميها Acceptance criteria و بتتراجع مع الناس بتوع الbusiness و الناس بتبقي قايلة انها تقدر تعمل ده و وقته قد ايه ، في الاول فيه تفاصيل زيادة كانت بتتكتب و حاجات بتعدي علي الناس او الناس كان ممكن متحققش الacceptance criteria كاملة بس مع الوقت و التعليم و التركيز بقي الفريق عارف ازاي يكتب acceptance criteria صح مناسبة للمشروع و يلتزم بيها من غير مشاكل ولا تدخل من مدير.
تاني تحدي برده بين الdeveloper و الtester بيبقي ايه bug و ايه مش bug و ايه اهمية كل واحدة ، و دي بتتحل بالنقطة الاولي بتاعت الacceptance criteria لانه بيعرف حاجات كتير و نقدر ناخده كقياس ، ده غير ان بيكون الفيصل هو الاهمية للعميل و دي بيحددها برده بتوع الbusiness اللي في الاول بنسالهم كتير بس مع تكرار الموقف و التعليم بنتعود و نفهم العميل و احتياجاته و بنعرف نركز عليها.
تالت تحدي هو تقسيم الtasks و الdependency بينهم ، و دي بتتحل بالdaily standup meeting و ده انه كل يوم كل واحد بيقول هو بيعمل ايه و واقف في ايه ، ده بيساعد انه يحل مشاكل زي ان حد هيتاخر و حد تاني معتمد عليه او حد عنده مشكلة و ازاي نساعده و دي حاجة عشان تطبق صح محتاجة وقت و ان الفريق كله يبقي عارف قيمة الAlignment ده و تاثيره علي شغله و علي هدف الiteration اللي شغالين فيها ، يعني في الاول ممكن الناس متكونش مركزة بس لما يقعوا في مشكلة بسبب انهم مش aligned يركزوا ، او ممكن يكونوا بيقولوا تفاصيل كتير و يتوهوا بس مع الوقت بيتعلموا يستغلوا الdaily stand up صح ، المهم نركز علي التعليم .
رابع حاجة ان كل فريق ممكن يحط الrules اللي تناسبه زي مين مسئول عن activity معينة زي الbuild machine مثلا او حتي الغرامات زي غرامات التاخير عن الاجتماعات ، في بعض الفرق ممكن تبقي 5 جنية او ان اكتر واحد بيتاخر بيعزم الفريق علي حاجة ، كل ده بيخلي الفريق مسئول اكتر و مرتاح في شغله اكتر.
ده غير ان الفريق بيبقي عارف لو متاخر فاضل ايه لاننا بنبص علي scope صغير بتاع iteration و كل الفريق بيكون aligned و كمان ممكن هم يقرروا يتعبوا يوم عشان يخلصوا scope الiteration اللي احنا فيها .
دي بعض التحديات اللي تقريبا بتقابل كل الفرق ، بيبقي فيه تحديات اكبر زي اختيار الtechnology او تطبيق حاجة جديدة زي الtest-driven development او اقتراح تغيير في الscope او refactoring ممكن نتكلم عنها في مقال تاني بس كل ما الفريق بيتعلم اكتر كل ما بيقدر ياخد قرارات احسن بشكل effective اكتر.