نقطة البداية الحقيقية لتوصيل البرمجيات ليست الكود
كل عملية نشر قمت بها على الإطلاق بدأت من مكان ما. لكن هذا المكان ليس طلب سحب (pull request)، أو فرع (branch)، أو سطر كود. لقد بدأت قبل ذلك، غالبًا في محادثة لم يخطر ببال أحد توثيقها.
تخيل هذا: مستخدم يبلغ أن زر الحفظ لا يعمل. أو اجتماع فريق ينتهي بقول أحدهم "يجب أن نضيف إشعارات". أو سجل أخطاء يظهر أن قاعدة البيانات تنفد باستمرار من الاتصالات. هذه اللحظات هي نقاط البداية الفعلية لتوصيل البرمجيات. قبل وجود أي كود، قبل تشغيل أي خط أنابيب (pipeline)، يجب على شخص ما أن يقرر: أي فكرة سيتم بناؤها، وأيها سيتم تأجيلها أو إسقاطها بالكامل.
الفخ غير الرسمي
في الفرق الصغيرة، تبدو عملية اتخاذ القرار هذه طبيعية. شخص ما لديه فكرة، يتحدث مع زميل، ويبدأ في البرمجة. يبدو الأمر سريعًا وفعالًا. لكن هذه السرعة تأتي بتكاليف خفية.
الفكرة التي لم يتم التفكير فيها جيدًا تتحول إلى كود يضيع الوقت. قد يقوم شخصان ببناء نفس الميزة دون علم كل منهما بالآخر. فكرة جيدة تُفقد لأن أحدًا لم يكتبها. الفريق يُصدر الكود، لكن الكود لا يحل المشكلة الحقيقية.
رأيت فرقًا تقضي أسابيع في بناء ميزة لم يطلبها أحد، ببساطة لأن الفكرة الأصلية كانت غامضة ولم يتحداها أحد قبل بدء البرمجة. الكود كان يعمل. الاختبارات نجحت. لكن الميزة بقيت غير مستخدمة لأنها لم تتطابق مع ما يحتاجه المستخدمون فعليًا.
من الأفكار إلى عمل قابل للتتبع
مع نمو الفرق وزيادة جدية المنتجات، تتوقف المحادثات غير الرسمية عن أن تكون كافية. تحتاج إلى نظام لالتقاط الأفكار ومناقشتها وترتيب أولوياتها قبل أن تتحول إلى كود.
معظم الفرق تستخدم شكلاً من أشكال تتبع المشكلات: Jira، Trello، GitHub Issues، Linear، أو حتى مستند مشترك. كل فكرة تصبح تذكرة (ticket) مع وصف لما يجب فعله، ولماذا هو مهم، وأحيانًا كيفية التعامل معه. ثم يناقش الفريق: هل هذا مهم؟ هل هو عاجل؟ هل يمكننا فعله بما لدينا الآن؟
هذه المناقشة مهمة لأن فريقك لديه وقت وطاقة محدودان. لا يمكن بناء كل فكرة. عليك أن تختار. قد يعتمد القرار على أولوية العمل، أو الضرورة الفنية، أو من هو متاح للعمل عليها.
بعض الفرق تستخدم اجتماعات تخطيط السباق (sprint planning) لتقرير أي التذاكر تدخل دورة العمل التالية. البعض الآخر يستخدم التصويت غير المتزامن في الدردشة أو جلسات تنظيم الأعمال المتراكمة (backlog grooming) المنتظمة. الشكل أقل أهمية من عادة جعل القرارات واضحة قبل أن يكتب أي شخص كودًا.
العمل الخفي قبل الكود
إليك ما يسهل تفويته: في هذه المرحلة، لا يوجد كود بعد. ما يوجد هو ملاحظات ومناقشات وقرارات. لكن هنا تبدأ رحلة التوصيل الحقيقية. التذكرة التي تحصل على الأولوية تصبح المدخل للخطوة التالية: كتابة الكود.
كثير من المهندسين والمديرين يعتقدون أن التوصيل يبدأ عندما يفتح شخص محرر نصوص ويبدأ في الكتابة. هذا غير صحيح. قبل تلك الضغطة الأولى على لوحة المفاتيح، هناك بالفعل سلسلة من القرارات التي حددت ما إذا كان يجب كتابة الكود من الأساس، وماذا يجب أن يفعل، وكيفية التعامل معه.
الفرق التي تتخطى هذه المرحلة غالبًا ما تنتهي بكود لا يُستخدم، أو ميزات لا تحقق الهدف، أو إعادة عمل تحرق الوقت والروح المعنوية. قد يكون الكود ممتازًا تقنيًا. لكن إذا كان يحل المشكلة الخاطئة، فإن التميز التقني لا يهم.
لماذا هذا مهم لخط الأنابيب الخاص بك
قد تفكر: "هذا يبدو وكأنه إدارة مشاريع، وليس CI/CD." لكن إليك الصلة.
من المفترض أن يأخذ خط التوصيل الخاص بك فكرة ويحولها إلى برنامج يعمل بأمان وسرعة. إذا كانت الفكرة نفسها غير محددة بشكل جيد، يصبح خط الأنابيب الخاص بك آلة تشحن الأفكار السيئة بشكل أسرع. خط أنابيب سريع لا يساعد إذا كنت تشحن الشيء الخطأ.
لهذا السبب تستثمر الفرق الناضجة في المرحلة التي تسبق الكود. إنها تتأكد من أن الفكرة واضحة، والأولوية محددة، والنتيجة المتوقعة محددة. ثم تترك خط الأنابيب يقوم بعمله في شحن هذا التغيير المحدد جيدًا بكفاءة.
قائمة تحقق عملية قبل الكود
قبل أن يكتب أي شخص كودًا للميزة أو الإصلاح التالي، راجع هذه الأسئلة:
- ما المشكلة التي يحلها هذا؟ هل يمكنك وصفها في جملة واحدة دون استخدام مصطلحات تقنية؟
- من المستفيد من هذا؟ المستخدمون، الفرق الداخلية، أم مجرد راحة فريق الهندسة؟
- ماذا يحدث إذا لم نبني هذا؟ إذا كانت الإجابة "لا شيء سيء"، أعد النظر في الأولوية.
- هل هناك طريقة أبسط لاختبار الفكرة؟ هل يمكنك التحقق من خلال عملية يدوية، أو علامة ميزة (feature flag)، أو نموذج أولي قبل الالتزام ببناء كامل؟
- من يحتاج إلى معرفة هذا التغيير؟ فريق الدعم، التوثيق، ضمان الجودة، العمليات، أو فرق أخرى قد تتأثر.
تستغرق قائمة التحقق هذه خمس دقائق. يمكنها توفير أسابيع من الجهد الضائع.
الخلاصة
الكود ليس نقطة البداية للتوصيل. الأفكار هي. جودة توصيلك لا تعتمد فقط على مدى سرعة شحن الكود، بل على مدى جودة قرارك بشأن الكود الذي يجب كتابته في المقام الأول.
قبل أن تحسّن خط الأنابيب الخاص بك، حسّن عملية تحويل الفكرة إلى قرار. خط أنابيب سريع يشحن الشيء الخطأ هو مجرد طريقة أسرع لإضاعة الوقت. اجعل الفكرة صحيحة أولاً، ثم دع خط الأنابيب الخاص بك يقوم بما يجيده: شحن تلك الفكرة الصحيحة بأمان وبشكل متكرر.