حكينا “في مقال سابق” كيف بعض الشركات بتطبّق ممارسات الأجايل بدون ما تفهم الفلسفة. بهالمقال, رح نحكي كيف ممكن نبلّش نغيّر عقلية التخطيط لتمشي مع هالفلسفة فعلاً.


التخطيط بهندسات تقليدية: دقّة وتنبّؤ

خلينا نحكي شوي عن التخطيط بهندسات تانية غير هندسة البرمجيات متل الهندسة المدنية.

بهيك هندسات بيتم التركيز بشكل كبير على التخطيط قبل عملية البناء, بحيث بيتم تصميم مخططات بتفصل كل صغيرة وكبيرة بعملية البناء, شو رح نبني وكيف رح نبني بالزبط, وبيتم استخدام هي الخطة كاساس لعملية البناء بتفصيلاتها, هاد الشي بيخلي عملية البناء قابلة للتنبؤ من حيث الوقت والكلفة.


ليش هندسة البرمجيات مختلفة؟

هالحكي كتير جميل ومنطقي بالعالم الفيزيائي وعلى أرض الواقع، وقد اثبت كفاءة ونجاح على مر السنين, بس مالو انسب شي لعالم هندسة البرمجيات, طيب ليش؟ اول شي خلينا نشرح من وين اجت كلمة “برمجية” (Software) باللغة الانكليزية:

هي كلمة مركبة من كلمتين, Soft تعني مرن أو لين, Ware تعني منتج او سلعة فمن هالتعريف, منشوف انو تم ابتكار البرمجيات لتكون مرنة.
على عكس شو ياحزركن؟ على عكس العتاد او الاجهزة Hardware، يجب أن يكون تعديل أي ميزة أمرًا سهلاً، بحيث تتحدد صعوبة التنفيذ بناءً على حجم التغيير فقط, لانو لازم البرمجيات تكون قابلة للتغيير بسهولة, وهذا الشي يلي بيخليها soft!

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


التخطيط التنبؤي مقابل التخطيط التكيّفي

هاد الشي بياخدنا لمدرستين بالتخطيط التخطيط التنبؤي (Predictive Planning) والتخطيط التكيّفي (Adaptive Planning).

بالتخطيط التنبؤي، منرسم الخطة من الأول للآخر، ومنتوقع إنو نعرف كل شي من البداية:
شو بدنا نعمل، وكيف، وقديش بدو وقت، وكلشي خطوة بخطوة. وهالنوع من التخطيط بيفترض إنو المتطلبات واضحة وثابتة، وإنو فينا نتنبأ بالمستقبل بدقة.

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

هون بيجي دور التخطيط التكيّفي. الفكرة فيه إنو بدل ما نحاول نسيطر عكلشي من الأول، منشتغل بطريقة بتخلينا نضل نتعلّم ونعدّل طريقنا على حسب الواقع. منبلش بخطة عامة، بس منترك مجال كبير للتعديل والتكيّف مع كل خطوة جديدة، لأنو ما فينا نعرف كلشي من الأول، بس فينا نضل نراقب ونتعلّم ونحسّن.


التخطيط التكيفي: فلسفة مرنة للتعامل مع التغيير

بشوف بالسوق مشكلة بتكرر دائما, نفس القصة, المشروع علقان وما حدا مبسوط, لا الزبون, ولا الشركة, ولا الفريق, المبرمجين عم يشتكو انو السبب هو المتطلبات عم تتغير, مشان هيك في مشاكل وعم نتاخر.
بس هالشي مالازم يكون مفاجئ, المتطلبات اكيد رح تتغير, والمجال التقني وعالم الأعمال متغير كتير.

السؤال مو ليش المتطلبات عم تتغير, السؤال كيف فينا نستغل التغيير ونتعامل معو بشكل صحيح ونستفيد منو بدال ما نمنعه ونقاومه ونعتبره شي غلط او سلبي.

ببساطة، بدال ما نحاول نسيطر على كل شي من الأول، منشتغل بطريقة بتخلينا نتعلّم ونتكيّف مع كل خطوة.

التحوّل من عقلية التخطيط التنبؤي للتكيفي هو أول وأهم وأصعب تحدي بيواجه كل الأطراف. بس هو اهم واكتر تغيير اساسي في حال كنا حابين ننجح بالعالم التقني.


مبادئ أساسية للتخطيط التكيّفي

في كتير افكار ومبادئ بتساعدنا نشتغل بعقلية التخطيط التكيّفي, خلينا نذكر بعضها.

  • اللحظة المسؤولة الأخيرة (THE LAST RESPONSIBLE MOMENT)

يعني ببساطة: ما تستعجل القرار، بس لا تأجله أكتر من اللازم.

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

بس اهم شي انو نفرّق بين “اللحظة الأخيرة” و"اللحظة المسؤولة الأخيرة". ما منأجّل القرار للآخر بس لمجرد التأجيل، منأجّله لحد ما تصير الخيارات عم تنسد، وساعتها منختار بناءً على أوضح صورة ممكنة.

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

  • الخيارات (Optionality)

فكرة بسيطة بس قوية، اسمها “Optionality”, يعني نخلي معنا سلة خيارات مفتوحة قد ما فينا، ونأجّل القرار الحاسم لوقت نكون فيه شايفين الصورة أوضح (مبدأ اللحظة المسؤولة الاخيرة!).

ليش هالشي مهم؟ لأن المستقبل دايمًا فيه غموض، والقرارات اللي بناخدها اليوم ممكن تكون ضد مصلحتنا بكرا. بس إذا بنينا الأمور بطريقة بتخلينا نحتفظ بأكتر من احتمال، منقدر نعدّل المسار من دون ما نكب شغلنا أو نعيد كلشي من الصفر.

مثال: لا تربط النظام بمكتبة محددة من البداية. خليه مرن لحتى تقدر تغيّر لاحقًا إذا الظروف تغيّرت.

باختصار: كل خيار محتمل له قيمة، مو لأنك رح تستخدمه، بس لأنو بيعطيك حرية وتكيّف أكتر لقدام.

  • نهيّئ كل شي حوالينا لنتعلّم بسرعة.

يعني نشتغل بشكل تكراري (iteratively)، ننجز جزء صغير، نجرّبه، وناخد تغذية راجعة (feedback)، ونكمّل. نشتغل بشكل جزئي (incremental) بدل ما نرسم الخطة كاملة من الأول. الفكرة إنو شغلنا يصير سلسلة تجارب صغيرة ومنضبطة، وكل تجربة بتعلّمنا شي جديد.

  • إدارة التعقيد.

التعقيد إذا ما سيطرنا عليه من البداية، بصير كل تعديل مخاطرة. فلازم يكون في تجزئة واضحة (modularity)، كل جزء مسؤول عن شغلة وحدة (separation of concerns)، والتغييرات تضل محصورة ضمن حدود واضحة (abstraction, low coupling, high cohesion).

هاي بس لمحة صغيرة عن المبادئ اللي بتخلينا نشتغل بخطة تكيّفية، ورح نحكي عنهن تباعاً بمقالات جاية إن شاء الله.


شروط نجاح التخطيط التكيّفي

طيب، شو لازم يكون موجود قبل ما نبلّش نخطط بطريقة تكيّفية؟ مو أي فريق فيه يشتغل بهالطريقة، وفي شوية شروط لازم تكون موجودة من الأول, أهم الشروط:

  • قناعة من الإدارة وأصحاب القرار إنو التغيير مالو فشل، والتعلّم المستمر أهم من الالتزام الأعمى بالخطة.

  • قدرة الفريق يشتغل ويركز على شغلة وحدة، لأن التشتّت بيقتل التعلّم.

  • الزبون أو الإدارة لازم يتقبلوا إنو التغييرات شي طبيعي ومتكرر، مو شي طارئ أو مزعج، مو كل إصدار بده موافقات ومعارك.

  • ثقة حقيقية بالفريق ليقرّر ويجرّب، مو كل قرار بده لجنة.

  • خطة بتتراجع وتتعدّل بشكل دوري، مو خطة مقدسة من أول يوم.

بدون هالأساسيات، بيصير التخطيط التكيّفي مجرد فوضى مغلّفة بشعارات “أجايل”.


قصة Writely: التعلّم اهم من الكمال

واخير حابب اختم بقصة حقيقية لمنتج رقمي كتير ناجح وكلنا منستخدمو تقريباً كل يوم، بس بدايتو كانت بسيطة أكتر بكتير من ما بتتخيل.

بـ 2005، فريق صغير قرر يشتغل على برنامج كتابة أونلاين، وسمّوه Writely. وقتها، سوق برامج الكتابة كان مليان ومشبّع، فكان يبين إنو صعب تبني نسخة أولية (MVP) صغيرة بمنتج هيك، لأنو المنافسين عندن كلشي: تنسيقات، تدقيق إملائي، جداول، طباعة، صور… إلخ.

بس بدل ما يحاولوا يقلدوا الموجود، ركزوا على شغلات جديدة كانت ناقصة بالسوق:
إنو أكتر من شخص يشتغل على نفس الملف بنفس الوقت، يفتحوا الملف من أي مكان، وكلشي ينعمل بينحفظ لحالو عالنت، بدون وجع راس.

ركّزوا عالأساسيات اللي بتفرجي الفكرة، وطلّعوا أول نسخة تجريبية (alpha) بعد أسبوعين بس!

هل سمعت بـ Writely؟ الأغلب لأ. بس أكيد سمعت بـ Google Docs، صح؟.

لأن بعد ٨ شهور من إطلاق Writely، غوغل اشترتها…

وصارت هي الأساس لـ Google Docs اللي منستخدمو لهلأ.

الفكرة مو إنك تبلّش كبير، الفكرة إنك تبلّش صح، وتضل تتكيّف.


TL;DR - خلاصة المقال:

  • البرمجيات ما بتنفع معها نفس أساليب التخطيط التقليدي.

  • المتطلبات دايمًا بتتغير، فلازم نخطط بأسلوب مرن.

  • التخطيط التكيفي مو بس طريقة شغل، هو طريقة تفكير بتعترف إنو التغيير هو القاعدة، مو الاستثناء.

  • التخطيط التكيفي هو الرهان على قدرتنا نتعلم ونعدّل مو نتنبأ.

  • مبادئ مهمة مثل: اتخاذ القرار باللحظة المناسبة، إبقاء الخيارات مفتوحة، التكرار والتعلّم.

  • بدون بيئة مناسبة وثقة بالفريق، التخطيط التكيفي بيصير فوضى.

  • ما لازم نبدأ بشكل كبير، لازم نبدأ صح، ونضل نتكيّف. متل فريق Writely.


لأي استفسارات أو ملاحظات، يمكنك التواصل معي عبر لينكدإن أو من خلال صفحة عندك سؤال.
ولا تنسوني من دعائكم.
سلام!