تعتبر الـ Agile منهجية (طريقة) لإدارة المشاريع البرمجية والغير برمجية تركز على بناء المنتج على عدة مراحل وبفترات زمنية قصيرة، وتوّلد كل مرحلة منتجاًً متميزً عن سابقه بخصائص إضافية. ويعتبرهذا المنتج (المرحلي) منتجاً حقيقياً يستطيع الزبون (العميل) التفاعل معه، والغاية من ذلك تقريب المنتج للزبون(العميل)لقياس رضاه بمراحل تطور منتجه، ويتم تطبيق الأجايل بطرق عدة منها الـ Scrum والـ Kanban

ماهي الـ Agile:

أحدثت Agile ثورة في إدارة المشاريع الخاصة بالبرمجيات، حيث كانت تستخدم الطرق التقليدية في بناء البرمجيات مثل Waterfall. والتي كانت عبارة عن تسلسل لمجموعة من الخطوات وهي: التحليل وجمع المتطلبات (والتي يتم بها كتابة جميع متطلبات البرنامج)، التصميم (والقصد منه تصميم النظام وليس التصميم الغرافيكي) ، التطوير (البرمجة)، الاختبار والدمج، ثم الصيانة.

الطرق التقليدية في بناء البرمجيات مثل Waterfall

لم تستطع الطرق التقليدية من مواكبة تطور البرمجيات وتغيرات الحياة السريعة ومواكبة تطوير وتغيير متطلبات المشاريع، فالاعتماد على الطرق التقليدية، فإن المشروع يحتاج إلى وقت طويل لإنجازه، وهذا يتطلب بالضرورة إلى تكلفة كبيرة، وتكون تكلفة إعادة التصميم والتطوير والتغيير(لتلائم تغير المتطلبات) كبيرة جداً.

طريقة Agile مختلفة تماماً عن الطرق التقليدية، فهي تركز على خصائص معينة، يتم تنفيذها بوقت قصير وعرضها على الزبون (العميل)، هنا يستطيع الزبون (العميل) أن يرى أكثر كيف تم تطبيق فكرته، ونستطيع نحن أن نرى ردة فعله عند رؤية المنتج، إن كان هناك تعديلات أو تغييرات فيمكن بسهولة وبسرعة أن نقوم بها، ومن ثم يتم الانتقال إلى خاصية تالية حتى يتم بناء المشروع بشكل كامل.

بشكل عام الزبون (العميل) لايستطيع التعبير عن فكرته ومايريده بالضبط من البداية، يكون لديه فكرة، وشرح عن فكرته وكيف يتخيل البرمجية، ولكن يبقى كيفية تطبيقها والخصائص التي يريدها ضبابية حتى يرى منتج بأم عينيه، ليستطيع التقييم هل هذا مايريد أم لا.

منهجية الآجايل

إذاً، الـ Agile تعتمد على تقديم منتجات أولية حقيقية خلال فترات زمنية متتالية للزبون (العميل)، والتي يستطيع الزبون (العميل) تجربتها وتقييمها وإعطاء الملاحظات أو الأخطاء الموجودة، وبالتالي من السهل تجاوز هذه الأخطاء أو الملاحظات كونك في مرحلة مبكرة من العمل، وتستطيع التقدم إلى الخطوة التالية بثبات أكبر وإنجاز النسخة التالية بإضافة بعض الميزات والخصائص إلى أن ينتهي المشروع.

في هذه الطريقة، فإنك تعلم بشكل جازم بأن المنتج الأولي الذي سيدخل في المرحلة التالية هو منتج فعّال وقابل للاستخدام وقابل للتطور، ويطابق مايتطلع له الزبون (العميل) وفق احتياجاته ومتطلباته.

هذا المفهوم، شائع جداً في ريادة الأعمال، ويستخدمه الكثير منرواد الأعمال في بداية مشاريعهم الناشئة، حيث تعتبر طريقة اختبار وقياس أصغر منتج MVP (لمعرفة المزيد عن MVP يجب قراءة التدوينة على منصة حرابيء) من أساسيات ريادة الأعمال اللينة leanstartup (أنصحكم بحضور دورة لين ستارت أب على منصة حرابيء)

اختبار وقياس أصغر منتج MVP، هي باختصار "بناء أصعر منتج قيمMVP"، أي منتج غير مكتمل له خصائص معينة بهدف اختباره مع العميل. أهم أهداف الـ MVP هو إتاحة الفرصة للعملاء لرؤية منتج حقيقي بأقصر وقت ممكن وذلك بغية الحصول على ردود أفعالهم Feedback، وهو بالضبط ماتعنيه منهجية Agile.

تركز منهجية الـ Agile على منتجات أولية حقيقة قابلة للقياس، وليس على المنتج النهائي.

قيم الـ Agile

وهي ماتسمى بيان مبادئ الأجايل (Manifesto for Agile Software Development)، وتتضمن أربعة مبادئ لإدارة المشروعات الرشيقة Agile.

  1. برمجية تعمل أهم من توثيق شامل (Working software over comprehensive documentation): أي أن في طريقة الـ Agile نهتم ونركز على أن يتم إنتاج برمجية (منتج) تعمل بخصائص أساسية معينة، ولايهم كتابة توثيق المرحلة مع التفاصيل، وهذا لايعني الابتعاد عن التوثيق، وإنما توثيق الأشياء المهمة فقط مثل طريقة تشغيل المنتج، وتتم عادةّ بعد التأكد من أن المنتج يعمل بالخصائص المطلوبة، يجب ألا نشغل الفريق بكتابة توثيق مفصل وممل للمنتج قبل أن يكون المنتج يعمل بشكل صحيح 100٪، فلايوجد أهمية لتوثيق مفصل ومنتج لايعمل!
    "يقصد بالتوثيق (Documentation) كتابة آلية عمل عمل كل جزء من المشروع بالتفصيل على شكل مستندات سواءّ ورقية أوإلكترونية"
  2. الأشخاص والتفاعل بينهم أهم من العمليات والأدوات (Individuals and interactions over processes and tools): أي الاهتمام والتركيز على أفراد الفريق والتفاعل فيما بينهم بدلاً من التركيز على أدوات العمل وسير العمليات المستخدمة ببناء المنتج، حيث أن الأدوات لن تفعل شيء بدون أشخاص قادرين على استخدامها بشكل صحيح لإنجاز الشيء المطلوب منهم.
  3. التعاون والمشاركة مع الزبون (العميل) في بناء المنتج أكثر أهمية من التفاوض على العقود (Customer collaboration over contract negotiation): العقود بشكل عام غير مرنة وخصوصاً في المشاريع الناشئة، عند شرح الزبون (العميل) لمنتجه وكيف يتصوره، فغالباً يكون المنتج غير واضح المعالم، أي أن الزبون (العميل) لايعطي التفاصيل الضرورية لبناء المنتج بشكل صحيح، لذلك عند توقيع عقد في بداية العمل (يتم تحديد المهام، التكلفة، الوقت) نكون قد حددنا ماذا سنفعل وماذا سيتم إنتاجه، وبالتالي التعديل يصبح صعب جداً لأن التعديل يحناج إلى وقت وجهد وتكلفة، وغالباً ماينتج مشاكل مع العميل، في الأجايل، يتم مشاركة الزبون (العميل) في كل خطوة، وهذا مايعطي الزبون(العميل) فهم أكثر مايريد لأنه يرى المنتج بعينه، وبالتالي التعديل أو الإضافة على المنتج أسهل ومرن أكثر، ويعطيه تصور كامل عن التكلفة التي سيقوم بدفعها.
  4. الاستجابة للتغيير أهم من اتباع الخطة الموضوعة في سير العمل (Responding to change over following a plan): أي الاهتمام بتنفيذ التغييرات التي يطلبها الزبون (العميل) عند عرض المنتج عليه، ملاحظاته لها الأولوية عن ماهو مخطط للمنتج. وهو كما ذكرنا سابقاً بأن الزبون (العميل) لايستطيع توصيف المنتج بشكل كامل من بداية المشروع، وهذا لايعني ألا يكون هناك خطة، الخطط في الأجايل تكون خطط عامة وعلى مستوى عال وليس خطة بالتفاصيل.

هذا لايعني أبداً أن النقاط التي تم التفضيل عليها (الأقل أهمية) لاقيمة لها، وإنما هنا تحديد الأولويات يكون لصالح قيم الـ Agile

مبادئ Agile:

يوجد 12 مبدأ لـ Agile كما ذكرهم موقع agilemanifesto

  1. كسب رضى الزبون (العميل) من خلال تقديم برنامج (منتج) فعال وصالح للاستخدام، والالتزام بأوقات التسليم.
  2. القبول والترحيب بالتغييرات في المتطلبات من قبل الزبون (العميل) حتى ولو بمرحلة متقدمة في التطوير.
  3. تسليم برمجيات صالحة للاستخدام في أقصر وقت ممكن وبفترات منتطمة.
  4. يجب أن يعمل المبرمجون والفنيون عن قرب ومع بعضهم البعض وبشكل يومي طول مدة المشروع.
  5. المحادثات المباشرة وجهاً لوجه بين أعضاء الفريق هي الطريقة الأفضل والأسرع لنقل المعلومات بين الفريق (عادة يجتمع أعضاء الفريق بشكل يومي صباحاً Stand-up Meeting لمدة 10-15 دقيقة)
  6. بناء المشاريع بالاعتماد على الأفراد المتحمسين، إعطاءهم البيئة والدعم الذي يحتاجونه، والثقة، التقدير والتمكين، هي البيئة المناسبة لتحفيزهم أكثر لإنجاح المشروع.
  7. برمجية تعمل (منتج صالح للاستخدام)، هي المقياس الرئيسي للتقدم.
  8. تشجع الأجايل على التطوير الدائم للأفراد ومهاراتهم ومعرفتهم، ينبغي على الرعاة والمطورين أن يكونوا قادرين على الحفاظ على نسبة تقدم ثابتة دوماً.
  9. الاهتمام المستمر بالتميز والجودة في التطوير التقني والتصميم.
  10. البساطة، هي جزء أساسي وحيوي ومهم في الـ Agile، أي تقليص الأعمال الغير مهمة والغير ضرورية،
  11. فرق العمل ذاتية التنظيم، تقدم أفضل متطلبات وهيكلية وتصميم.
  12. تقوم فرق العمل بتقييم ومراقبة عملها لتصبح أكثر فعالية، ثم تقوم بضبط الأخطاء والسلوك وذلك بفترات زمنية منتطمة.

الـ Agile تعتمد بشكل أساسي على الأفراد، لذلك يعتبر الاهتمام بالأفراد هو حجر الأساس لإنجاح المشاريع

فوائد استخدام أجايل:

لاستخدام منهجية الـ Agile فوائد ومزايا كثيرة في إدارة المشاريع، فهي تساعد فرق العمل على إدارة المشاريع بشكل أكثر كفاءة، مع تقديم منتجات بجودة عالية، والحفاظ على الميزانية ضمن الحدود المتوقع لها، تعمل الفرق كوحدة واحدة متناغمة مع بعضها، وتستجيب إلى التغيير في المتطلبات بشكل فعال، وهنا سنوضح بعض وأهم الفوائد الهامة لاستخدام الـ Agile:

  1. ثقة الزبون (العميل) وتقليل المخاطر: وذلك بإشراك صاحب العمل في المشروع في كل مرحلة من المشروع، توفر هذه الخطوة درجة عالية من التعاون بين الفريق والزبون (العميل)، وهذا يعطي فرصة جيدة للفريق على فهم رؤية الزبون (العميل) بشكل أكبر، وفرصة أيضاً للزبون بأن يعطي رأيه وملاحظاته المباشرة ليتم النقاش ويقوم الفريق بالتعديل، وهذا بالنتيجة يعطي ثقة أكبر من ناحية الزبون (العميل) للفريق الذي ينجز مشروعه، كما يتفهم الزبون (العميل) بأن مشروعه قيد العمل وينمو بسرعة كبيرة.
  2. تسليم مبكر لمنتج أولي: كما ذكرنا سابقاً، وذلك بالاعتماد على مراحل الزمنية في إدارة المشروع، وأن كل مرحلة ينتج عنها منتج أولي قابل للاستخدام، مما يوفر فرصة كبيرة للزبون بأن يقوم بإطلاق مشروعه بوقت مبكر ريثما يتم إطلاق النسخ النهائية منها.
  3. توقع للتكاليف: كون كل مرحلة محددة بفترة زمنية، ومحددة أيضاً بمهام معينة (أي أن الخصائص التي ستنتج في نهاية المرحلة تم وضعها منذ بداية المرحلة)، فهي قابلة لتوقع التكاليف بشكل كبير، وهذا يعطي العميل معرفة أكبر عن التكلفة التي سيدفعها مقابل كل مرحلة حتى إنهاء المشروع.
  4. السماح للتغيير في المتطلبات: كون العمل على مراحل، وكل مرحلة لها متطلباتها، فإن العميل قادر على التغيير سواء في نهاية المرحلة (حيث يجد بعض الأخطاء أو المشاكل) أو حتى في مرحلة متقدمة إن كان يريد بعض الإضافات فيتم جدولتها في مرحلة زمنية جديدة.
  5. التركيز على قيمة العمل: كون الزبون (العميل) منخرط في المشروع منذ بدايته، فإن هذه الخطوة تعطي الفريق فهم أكثر إلى أولويات الزبون (العميل) وماهو ذو قيمة لنشاطه، وهنا يتم العمل على توفير هذه الميزات والخصائص التي تعطي قيمة أكبر للزبون.
  6. التركيز على المستخدمين: كون كل مرحلة ينتج عنها منتج أولي، فهذا يعطي الزبون (العميل) والفريق فرصة كبيرة للعمل مع مستخدمين حقيقين لتجربة المنتج وإعطاء ردود الأفعال وفهم متطلباتهم بشكل أكبر، وهذا يعطي فرصة كبيرة للتغير للانتهاء من المرحلة خالية من الأخطاء.
  7. تحسين الجودة: استخدام طريقة الـ Agile ومفهوم المراحل الزمنية وتقسيم المشروع إلى وحدات تضم ميزات معينة، يصبح التركيز على التطوير والاختبار والتعديل كبير جداً، ويتم تحسين الجودة من خلال إيجاد المشاكل والعيوب بسرعة وتحديد إن كان هناك عدم توافق في وقت مبكر.
  8. منتج عالي الجودة: كون كل منتج مرحلي (أولي) يتم اختباره وتحسينه وفهم متطباته أكثر وتعديله بشكل مباشر، هذا يؤدي بطبيعة الحال إلى بناء منتج نهائي عالي الجودة.
  9. عائد استثماري سريع:من المراحل الاولى يتم بناء منتج أصغري، وهذا المنتج يحوي المتطلبات الهامة والأساسية بالنسبة للزبون، فإن الزبون (العميل) يستطيع أن يقوم بنشر البرنامج ويبدأ بالربح ، ويزداد الربح في كل مرحلة، كون كل مرحلة تعطي خصائص جديدة للمنتج.

باستخدام منهجية Agile، تعود الفائدة لفريقك، وللزبون أيضاً بإعطائه منتج يعمل من اول مرحلة

سلبيات الأجايل Agile:

بالتأكيد كل طريقة في إدارة المشاريع لها سلبيات، بعضها يبقى سلبي، وبعضها يتم تلافيه بعد العمل على مجموعة من المشاريع واكتساب الخبرة اللازمة لإدارة المشاريع، نذكر بعض السلبيات هنا:

  • في بداية المشاريع الكبيرة، لايستطيع الفريق بشكل عام تحديد الوقت والتكلفة الحقيقية لدورة حياة المشروع، وخصوصاً إن كان الفريق جديد في العمل في هذه المنهجية.
  • الالتزام بالاجتماعات اليومية (والتي تتم وجهاً لوجه) بين أعضاء الفريق كاملاً، نعم هذه الطريقة جيدة جداً، ولكنها مرهقة، يحتاج إلى وقت وجهد كبير من أعضاء الفريق.
  • أحياناً يكون صاحب العمل (الزبون أو العميل) غير متفرغ بشكل كامل لكي يقوم بالاجتماعات مع الفريق (كون الأجايل تحتاج إلى اجتماعات دورية وبفترات قريبة بين الفريق والزبون)، وأحياناً أخرى يقوم بندب أحد الأشخاص من طرفه ليتابع سير العمل، وتكون قراراته أو ملاحظاته في غير مكانها. وهذا يؤدي إلى التأخر في المشروع والإحباط لدى فريق العمل والتغيير الدائم في المتطلبات.
  • إن عدم وجود توثيق (Documentation) مفصل لمراحل المشروع، يؤدي إلى صعوبة في دمج أعضاء الفريق الجدد في العمل.
  • التغيير في متطلبات المشروع، أحياناً، تؤدي إلى تغيير مسار المنتج بشكل كامل إن كان الزبون (العميل) متجدد جداً في أفكاره.
  • عدم وضوح الزبون (العميل) بتعليقاته وملاحظاته على المنتجات الاولية، يؤدي أحياناً إلى التركيز على خصائص معينة من فريق العمل غير التي يطمح لها الزبون (العميل).

طرق ومنهجيات تطبيق الأجايل:

يوجد العديد من المنهجيات لتطبيق الأجايل، سنقوم بذكر الأكثر انتشاراً واستخداماً.

سكرام Scrum:

هي من أكثر الطرق المستخدمة لتطبيق منهجية الأجايل Agile، يتم الاعتماد في نموذج السكرام Scrum في تطوير البرامج والمنتجات المعقدة، يقسم المنتج (Product Backlog) إلى مجموعة أقسام (Sprint Backlog)، ويتم العمل على كل قسم في فترة زمنية تكرارية مابين الأسبوع والـ 4 أسابيع وتسمى الفترة الزمنية بالـ sprint.

يتم تكرار الـ sprint بخصاص جديدة (أوتعديلات على الـ Sprint السابق) حتى الوصول إلى المنتج النهائي.

في السكرام Scrum يوجد مجموعة من الأدوار Rules وهي:

  1. مالك المنتج Product Owner: هو صاحب المنتج، وهو من لديه المعلومات الكافية عن منتجه وكيف يتصوره.
  2. مدير السكرام Scrum Master: وهو الشخص الذي يدير عملية الـ scrum، لديه مهام عديدة ومنها الحقاظ على قيم الـ scrum، تسهيل الاجتماعات والعمل مع مالك المنتج، إزالة العقبات...إلخ
  3. الفريق Team: هم أعضاء الفريق الذين يعملو مع بعضهم لإنجاز المهام المطلوبة منهم، عادة يكون الفريق مؤلف من 5 إلى 9 أشخاص، وإن كان المشروع كبير يتم بناء فرق متعددة.

في السكرام Scrum يلتزم الفريق بالفترات الزمنية الموضوعة لإنتاج المنتج. ولايتم إجراء التعديلات إلا بعد انتهاء الـ sprint

يكون هناك منتج حقيقي في نهاية كل sprint حيث يستطيع الزبون (العميل) لمسه وإعطاء ملاحظاته عليه، ويتم الانتقال إلى ال sprint التالية بإضافة بعض الخصائص الجديدة أو تعديل على المنتج الذي تم إنتاجه مثلاً.

مهجية ال scrum

طريقة كانبان KANBAN:

وهي أيضاً من الطريق المستخدمة لتطوير المشاريع، وتعتمد مثل الـ scrum على التكرار في بناء المنتج، ولكن تختلف عنها ببعض المفاهيم، حيث في الكانبان Kanban لايوجد أدوار حقيقية مثل السكرام scrum، يوجد مدير مشروع فقط، كما أنو لايوجد تحديد لمدة زمنية (sprint) مثل السكرام scrum، وإنما تطوير مستمر وتسليم متدرج للمهام التي تم تطويرها، حيث تعتمد على عدد صغير من المهام المطلوب إنجازها.

تستخدم طريقة كانبان Kanban أداة تخطيط مرئية، تسمى لوحة كانبان Kanban Board، حيث تظهر كل مشروع (لوحة مستخدم User Story) على بطاقة، ويتم تحريك البطاقة من خلال أعمدة والتي تمثل التقدم في كل مرحلة، كما أن التغييرات والتعديلات في طريقة الكانبان Kanban تتم بأي وقت على عكس السكرام scrum يجب أن ننتظر نهاية ال sprint.

طريقة كانبان KANBAN - أجايل

يوجد طرق أخرى بالتأكيد لإدارة المشاريع باستخدام الـ Agile. وربما في تدوينات أخرى نقوم بالتفصيل في كل واحدة منهم.

والآن، أخبرونا عن تجاربكم في بناء مشاريعكم باستخدام الأجايل، وأي طريقة تستخدمون؟ وهل واجهتكم مشاكل أوعيوب باستخدامها؟

هل يوجد منكم من يستخدم الطرق التقليدية؟ ولماذا؟