العودة إلى المدونة

البرمجة10 فبراير 20264 دقائق قراءة

مراجعة الكود ثقافة، لا بوابة

أسامـــة الدروشـــي

فريق من المطوّرين يعملون معًا حول طاولة خشبية

رأيتُ مراجعة الكود تنقذ مشاريع، ورأيتها تقتل مشاريع أخرى بصمت. والفرق لم يكن يومًا في الأدوات، ولا في استراتيجية الفروع، ولا في قائمة التحقق داخل قالب الـ PR؛ الفرق كان في نظرة الفريق نفسها: هل المراجعة حوار، أم بوابة يجب عبورها؟

كيف تبدو المراجعة حين تصير بوابة

تعرف هذا المشهد جيدًا. طلب دمج (PR) يبقى معلقًا ثلاثة أيام، وصاحبه انتقل ذهنيًا إلى مهمة أخرى. ثم يفتحه مهندس أقدم أخيرًا، فيتصفّح على عجل ٩٠٠ سطر من التغييرات، ويترك إما LGTM أو جدارًا من الملاحظات الشكلية التي كان يُفترض أن يلتقطها الـ linter. يصلح الكاتب الملاحظات دون أن يقرأها فعلًا، ثم يدمج. حدثت المراجعة؛ ولم يُراجَع شيء.

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

ما كسر الدوّامة لم يكن أداة جديدة، بل قرار صريح ومُعلَن: المراجعة هي الطريقة التي يفكر بها الفريق معًا. النموذج الذهني للنظام في رؤوس المهندسين الأقدم، وقواعد المجال المدفونة في متطلبات تقارير الجهة التنظيمية، وسبب صياغة استعلام على هذا النحو دون غيره؛ المراجعة هي المكان الذي تنتقل فيه هذه المعرفة فعلًا من رأس إلى رأس. أما البوابة فلا تنقل شيئًا؛ إنها تبطئ الطابور فحسب.

زمن الاستجابة: مؤشر الصحة الذي لا يرسمه أحد

لو استطعت وضع رقم واحد عن أي فريق على لوحة قياس، لاخترت الوسيط الزمني بين «طلب المراجعة» وأول تعليق ذي معنى. ليس زمن الموافقة؛ بل أول تواصل.

في Byanat كانت المراقبة مهنتنا: نتتبع تدهور أبراج الاتصالات وصحة نحو ٣٠٠ ألف شريحة SIM لأجهزة إنترنت الأشياء، وكان يدهشني دائمًا أننا نقيس بنيتنا التحتية أفضل بكثير مما نقيس أنفسنا. زمن استجابة المراجعة هو أقرب ما أعرفه إلى مؤشر حيوي واحد لصحة الفريق: حين يكون قصيرًا فهو يقول إن تحرير زميل عالق أهم من حماية تدفّقك ساعة إضافية؛ وحين يمتد أيامًا فهو يقول إن المراجعة ضريبة تُدفع على مضض، وكل ما بعدها يرث هذه النظرة.

المراجعة التي تصل خلال عشرين دقيقة تُعلّم؛ والتي تصل بعد ثلاثة أيام تُصدر حكمًا فحسب.

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

تغييرات صغيرة وجُمل لطيفة

زمن الاستجابة وحجم الـ PR يغذّي كل منهما الآخر، فعليك مهاجمتهما معًا. قاعدتي التقريبية: إذا عجز المراجع عن استيعاب التغيير كاملًا في ذهنه، فسيراجع الأجزاء التي يفهمها ويوافق على الأجزاء التي لا يفهمها. دون نحو ٣٠٠ سطر يقرأ الناس الكود فعلًا؛ وفوق ذلك يكتفون بمطابقة الأنماط.

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

  • اذكر السبب لا الطلب فقط. «افصل هذا» لا يعلّم شيئًا؛ أما «هذا يكرر التحقق الموجود في ReportService وسينحرف الاثنان مع الوقت» فيُعلّم شيئًا عن قاعدة الكود كلها.
  • ميّز بين المُلزِم والتفضيل. أستهلّ الملاحظات غير المُلزِمة بـ nit: وأعنيها فعلًا: يستطيع الكاتب تجاهلها والدمج.
  • اطرح أسئلة حقيقية. سؤال «لماذا اخترت هذا المسار؟»، حين يُطرح بصدق، كشف لي أكثر من مرة أن الكاتب يعرف شيئًا لا أعرفه.
  • امدح بدقة. جملة «ترتيب خطوات الترحيل هنا ذكي» تستغرق خمس ثوانٍ وتشكّل ما سيفعله الناس في المرة القادمة.

تعليقات المهندس الأقدم تحدد سقف نبرة الفريق كله؛ فالجدد يقلّدون ما يتلقّونه.

متى تكون المراجعة الأداة الخاطئة؟

بعض طلبات الدمج ما كان ينبغي أن تكون طلبات دمج أصلًا. إذا تجاوز النقاش ثلاث جولات ذهابًا وإيابًا حول سؤال التصميم نفسه، فقد فشلت الوسيلة. توقّف عن الكتابة، وافتح مكالمة، وشارك شاشتك، واعمل مع زميلك ثنائيًا نصف ساعة. المراجعة غير المتزامنة ممتازة للتحقق ونقل المعرفة؛ لكنها رديئة للتفاوض على التصميم. حين كنت أقود الفريق في Sagan World، عن بُعد بالكامل وعبر مناطق زمنية متباعدة، كانت لدينا قاعدة ثابتة: ثلاث جولات في نقاش واحد، ويحق لأي طرف الدعوة إلى جلسة عمل ثنائية دون أي تبرير. وفّرت علينا هذه القاعدة أيامًا كل شهر، وأنقذت أكثر من علاقة زمالة.

المغزى من هذا كله، من زمن الاستجابة والحجم والنبرة ومعرفة متى تلجأ إلى العمل الثنائي، واحد: المراجعة هي تفكير الفريق معًا كتابةً. عاملها كبوابة فستحصل على طابور؛ وعاملها كثقافة فستحصل على فريق أذكى من أي فرد فيه. بعد ست سنوات في هذه المهنة، ما زالت هذه أعلى الممارسات الهندسية أثرًا فيما أعرف.