كفرد في فريق يعمل بأسلوب الإدارة الرشيقة (أجايل)، مالذي تقصده بالضبط عندما تقول أن قصة المستخدم قد إنجزت؟
هل عادة تقول : قصة المستخدم أنجزت ولكن تحتاج إلى الاختبار!
بعض الأفراد في فرق العمل يعبرون عن نهاية المهمة بإحدى الطرق التالية:
- لقد تمت ولكن أحتاج لبعض الوقت في إعادة ترتيب الشفرة البرمجية (الكود) و رفع مستواه
- لقد تمت ولكن أريد أن أقوم بإرسال الشفرة البرمجية (الكود) إلى مستودع الكود الرئيسي وأدمج العمل مع الفرع الرئيسي (ماستر) ثم أقوم بتحميله على المخدم وبعدها يستطيع الزبون الاطلاع على الميزة المنجزة
- لقد تمت ولكن لم أعمل بعد على التصميم الخارجي، أحتاج وقت إضافي لذلك
كل فرد في الفريق نفسه له طريقة التعبير المختلفة عن معنى إنجاز وإنهاء العمل المطلوب منه.
بداية لنتفق على أمر هام
لنتفق أنه من غير المنطقي أن نضع كلمة “لكن” بعد كلمة “تمت”
فيما يلي مثال عن حديث في فريق تطوير منتج رقمي:
مالك المنتج: لقد حاولت تجريب قصة المستخدم ألف-باء-4 ولكن يبدو أنها ليست متواجدة على المخدم (السرفر) بعد، أنا لا أراها ! 🤔
عضو فريق: لقد أخبرتك سابقاً أنه تم إنجازها ولكن لم أتمكن بعد من رفع التعديلات إلى المخدم لذلك لم تجدها! 😑
مالك المنتج: ولكنك قمت بإسناد حالة “تم” على اللوح المشترك (الداشبورد) ولذلك من الطبيعي أن اتوقع وجودها على المخدم😤
عضو فريق: لا ! لقد أوضحت ذلك بشكل قاطع في الاجتماع السابق للفريق، لقد قلت أنها تمت ولكن المتبقي هو رفع التعديلات على المخدم.😡
مالك المنتج: لم أكن في ذلك الاجتماع، ولذلك اكتفيت بالاطلاع على اللوح المشترك بيننا (الداشبورد) والمذكور هناك أنها تمت ، 🥺حسناً حسناً !!! على أية حال متى ستقوم برفع التعديلات إلى المخدم؟؟
عضو فريق: أنا أعمل حالياً على قصة أخرى ، سأنهي القصة الحالية وسأرفع كلا القصتين معاً إلى المخدم. 😖😩
وبعد فترة
عضو فريق: قصة المستخدم الف-باء-4 قد تم رفعها إلى المخدم، بإمكانك التحقق منها الآن.😎
مالك المنتج: صحيح لقد حاولت تجريبيها ولكنها تعيد الخطأ المعتاد الذي ينتج عن عملك 500 HTTP status code
عضو فريق: غريب! لقد كانت تعمل بشكل جيد على جهازي الخاص، ربما هناك بعض المشاكل المتعلقة بقاعدة بيانات المخدم، دعني أنهي العمل الذي أقوم به الآن ثم سأصلحها لك، أنت تعلم يجب أن ننظم عملنا وأن لا ننتقل بين المهمات بشكل فوضوي!!
انتهت القصة!
إن كنت تسمع الكثير من هذا النوع من الحوارات، هذه التدوينة ستساعدك على التخلص منها، المشكلة في هذه الحوارات في الفريق هو عدم وجود تعريف موحد وواضح لمعنى الإنجاز وإنهاء المهمة في الفريق
عندما يقولها أحد أفراد فريق أجايل أو إطار العمل سكرم أن المهمة أو قصة المستخدم قد تمت فإن كل أفراد الفريق لديهم فهم واضح وموحد بين الجميع عن المقصود بذلك، هذا التعريف يكون موجود في وثيقة اسمها : وثيقة تعريف “تم” ، أو باللغة الانكليزية Definition Of Done (DOD).
ماهي وثيقة تعريف تم؟
هي عبارة عن مجموعة من الشروط التي يجب أن تتوفر في العمل المنجز كقصة المستخدم حتى نتمكن من اعتبارها أنها تمت.
يتم تطوير هذه الوثيقة من قبل فريق أجايل ويتم اعتمادها ووضعها في مكان يمكن الوصول إليه عند الحاجة من قبل أي فرد بالفريق.
من الجميل أن يتم وضعها على الحائط في غرفة الفريق في مكان واضح أيضاً!
ما أهمية وثيقة تعريف “تم” في فريق أجايل أو فريق العمل سكرم؟
- تحسين طريقة التواصل والتفاهم بين أفراد الفريق، فكلمة تم يصبح لها معنى محدد وواضح بين الجميع
- تطبيق هذا المفهوم سيضمن وجود مستوى واحد من الجودة في المنتج الرقمي في جميع قصص المستخدم التي أنجزت
- سيزيد من دقة التقييم الزمني للعمل اللازم إنجازه فكل فرد في الفريق سيعلم أن عليه مجموعة من الشروط قبل أن يقول أنه أنجز المهمة
- التقليل من سوء الفهم واختلاف وجهات النظر مع الزبون في تعريف قصة المستخدم والغرض الرئيسي منها حيث ستضم وثيقة تعريف تم أيضاً شروط قبول “Acceptance Criteria” خاصة بكل قصة المستخدم
مثال عن بعض الشروط التي ستحويها وثيقة تم:
- تم إرسال الشفرة البرمجية إلى المستودع الرئيسي (remote repo)
- تمت مراجعة الشفرة البرمجية من قبل فرد آخر في الفريق وتم التعديل على الشفرة إن لزم الأمر
- تم التأكد من أن شروط القبول الخاصة بقصة المستخدم متوفرة (Acceptance Criteria)
- لقد تم تشغيل عملية بناء للشفرة البرمجية بشكل تلقائي ولم تتواجد أي أخطاء (Pull request automated build)
- تم تشغيل وحدات الاختبار الخاصة بالشفرة البرمجية Unit Tests ونجحت بشكل كامل
- تم تشغيل وحدات الاختبار الخاصة بالدمج بين عدة شفرات برمجية Integration Tests ونجحت بشكل كامل
- تم رفع التعديلات إلى المخدم ليتم اختبارها من قبل فريق ضمان الجودة ولم يجد فريق الجودة أي خطأ وقام بمراجعة ال Acceptance Criteria الخاصة بقصة المستخدم
- تم تعديل حالة قصة المستخدم على اللوح المشترك للفريق (Dashboard) إلى حالة تم
أود أن أؤكد على أهمية البند الثالث في المثال السابق، من أهم فوائد هذه الوثيقة هو أنها ليست جامدة وثابتة لكل قصص المستخدمين، حيث تتضمن هذه الوثيقة جزء ديناميكي مرتبط بكل قصة مستخدم على حدا وهو ال acceptance criteria الخاصة بكل قصة.
💯ومرت الأيام وقام الفريق بتبني معنى واضح لإنجاز العمل ووضع وثيقة تم💯
لنعد الآن إلى نفس الحوار السابق الذي جرى بين مالك المنتج وأحد أفراد الفريق:
عضو فريق: قصة المستخدم ألف-باء-4 تمت
مالك المنتج: شكراً لك، لقد رأيتها على المخدم وسأقوم بالتحقق منها وأعود إليك في حال وجود أي ملاحظات.
كما هو ملاحظ، الحوار مختصر جداً ولا مجال لوجود سوء تواصل بين أفراد الفريق.
أخيراً أود التاكيد على عدة نقاط:
- وثيقة تم ليست سياسة مفروضة من قبل الشركة فقط، بل يجب أن تكون جزء من ثقافة الشركة واللغة المشتركة فيها وأن يقتنع أفراد الفريق بأهميتها
- تطبيق أساليب الإدارة الرشيقة هو تحدي كبير في بعض الشركات، أعتقد أن البدء بتبني “وثيقة تم” له أثر كبير في ضبط عملية تطوير وجودة المنتج الرقمي لأن هذه الوثيقة ستؤثر في كل المراحل التي يمر بها المنتج من تحليل المتطلبات وكتابة قصص المستخدم وطريقة كتابة الشفرة البرمجية واختبارها وانتهاء بطرق رفع التعديلات المنجزة إلى المخدم.
- تبني هذه الوثيقة قد يتطلب تدريب أفراد الفريق قبل تطبيقها، وجود تقييم لجهوزية الفريق لهذا النوع من التغيير في طريقة العمل أمر ضروري لتفادي أي نتائج عكسية
هي وثيقة متفق عليها من قبل أفراد الفريق وتحوي شروط يجب توفرها في أي قصة مستخدم أو عمل قبل أن يعتبر أنه مكتمل وتم إنجازه على أكمل وجه.
يقوم بتصميم هذه الوثيقة أفراد الفريق الذين سيطبقونها ومن المفيد الاستعانة بخبراء لذلك، كذلك من المهم أن يكون الملف متوافق مع ثقافة الشركة وقوانينها وبالتالي هو ليس ملف منعزل عن أهداف الشركة.
– تحسين طريقة التواصل والتفاهم بين أفراد الفريق، فكلمة تم يصبح لها معنى محدد وواضح بين الجميع
– تطبيق هذا المفهوم سيضمن وجود مستوى واحد من الجودة في المنتج الرقمي في جميع قصص المستخدم التي أنجزت
– سيزيد من دقة التقييم الزمني للعمل اللازم إنجازه فكل فرد في الفريق سيعلم أن عليه مجموعة من الشروط قبل أن يقول أنه أنجز المهمة
– التقليل من سوء الفهم واختلاف وجهات النظر مع الزبون في تعريف قصة المستخدم والغرض الرئيسي منها حيث ستضم وثيقة تعريف تم أيضاً شروط قبول “Acceptance Criteria” خاصة بكل قصة المستخدم
هذه المقالة تمت قرائتها 🙂