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

1 - إعطاء الأولوية لجمعية السياق

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

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

استخدام المدونة نفسها كوثائق

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

فعلى سبيل المثال، قد تكون طريقة اسمها [(FLT:0]) قد كتبت لمعالجة ناقل حقن محدد من نوع SQL منذ عشر سنوات، علما بأن التاريخ يساعدك على توضيح السبب في أن المدونة الحالية لا تتبع ممارسات التصديق الحديثة - ولماذا يمكن أن يؤدي استبدالها عمياء بمكتبة أحدث إلى كسر المدخلات القائمة.

2- وثائق الغضب والاقتصاد التاريخي

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

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

عندما تخالف الوثائق المدونة

وفي نهاية المطاف، ستواجهون وثائق تتعارض مع التنفيذ الفعلي، وفي هذه الحالة، تثقون في المدونة وتلاحظون التباين، وعند الإجابة على سؤال، تشيرون إلى عدم الاتساق: " يتوقع الأطباء أن تكون نقطة النهاية هذه هي: " ولكن المعالج الفعلي يصف كيف يعمل حاليا " ، وهذا الصدق يحول دون الخلط ويساعد الفريق على تحديد ما إذا كان سيستكمل الأطباء أو يصلحون.

3 - سؤال توضيح المسائل دون تردد

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

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

وبدلا من " هل يمكن أن تعطيني سياقا أكثر " ، يرجى سؤال " هل يتعلق هذا بتدفق التوثيق من جانب المستخدم، أو بنموذج الإبلاغ؟ " هذا الاتجاه يوفر الوقت ويثبت انك منخرط.

٤ - نقر بما لا تعرفه

إن رمز المجازة واسع، ولا يعرف أحد كل شيء، وعندما لا تستطيع الإجابة على سؤال فورا، اعترف بذلك، " لست متأكدا من رأس رأسي، ولكن أعرف أين أنظر، واسمحوا لي أن أحقق وأعود إليكم في غضون ساعة " .

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

البدائل المعروضة

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

5- عرض الحلول العملية

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

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

تقديم أمثلة على المدونة

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

وقل " أن هناك نقطة انفصال هنا وأن يتحقق مما إذا كانت القيمة باطلة قبل العملية، وإذا كان الأمر كذلك، فإن تتبع طريقة الاتصال السابقة " .

6 - تعزيز ثقافة تعاونية خالية من اللوم

وكثيرا ما يصبح قانون المجاملة مصدرا للإحباط، فعند الإجابة على الأسئلة، تتجنب اللغة التي تلوم المطورين السابقين، أو " كان ذلك خطأ فظيعا " أو " من كتب هذا؟ " يخلق الدفاع ويغلق التعاون، بل بالأحرى، يُنظر في إطاره بحياد: " كان هذا النمط شائعا في ذلك الوقت " أو " ربما كان هناك قيود لا ندركها اليوم " .

تشجيع التفكير في مسألة طرح الأسئلة بشأن مدونة الإرث يعتبر قوة، وعندما يسأل مطور صغير " لماذا هذا المتغير العالمي؟ " يعتبره لحظة تعلم وليس مزعجا، فشرح السياق التاريخي - ربما الرمز يسبق المتغيرات الواسعة النطاق - ومناقشة كيفية إعادة تصنيعه بأمان، وبذلك تبني ثقافة يشعر فيها الناس بالثغرات الآمنة، التي تحسن في نهاية المطاف جميع قواعد القانون.

استخدام تقنية " ثلاثة لماذا "

وعندما يستكشف المرء لماذا توجد قطعة معينة من الرموز القديمة، يطلب " لماذا " مرارا )حتى ثلاث مرات( الكشف عن السبب الأعمق، مثلا:

  • لماذا هذا السؤال الذي يقوم على أساس الترددات العالية التي يتم التوصل إليها عن طريق تحديد الخيوط؟ لأنه كان مكتوبا قبل إعداد البيانات المشتركة في هذا الإطار.
  • لماذا لم ننتقل إلى بناية للاستفسار؟ ⁇ لأن السؤال ينطوي على أسماء طاولة دينامية لا يؤيدها البني.
  • لماذا تكون أسماء الجداول دينامية؟ لأن النظام يدعم تعدد فترات الدوام من خلال قواعد بيانات منفصلة لكل عميل.

والآن، تفهمون أن البيان البسيط الذي أعد لا يصلح للعمل؛ عليكم أن تتعاملوا مع أسماء الجسم الديناميكية، وهذا الأسلوب يمنع الإجابات الضحلة.

7 - إبقاء مهاراتك حادة مع التعلم المستمر

وتحسن القدرة على الإجابة على أسئلة الرموز القديمة من خلال الممارسة المتعمدة، وتحسن دراسة أنماط إعادة التصنيع من مصادر مثل مارتن فاولر ] ] أو مايكل فيذرز وتوضح بفعالية مدى سوء وضع مدونة الليغاسي [Fprisession:3].]

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

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

8 - الوثيقة: نتائجكم

بعد أن تجيب على سؤال، تدون ما تعلمته، ويمكن أن يكون هذا تعليقا موجزا في المدونة، أو دخولاً في شبكة ويك، أو رسالة التزام تشرح القرار، مثلاً إذا سأل شخص ما عن استثناء لاغي مكرر، وتتبعته إلى عملية أولية مفقودة في ملف تشكيلي، تضيف تعليقاً في نقطة الاستهلالية: "/مهمة: يجب أن يُستدعى هذا قبل أي عملية قاعدة بيانات؛ انظر تذكرة رقم 123 للتفاصيل " .

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

إنشاء " مدونة قواعد المساواة "

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

خاتمة

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

For further reading on legacy code strategies, see Martin Fowler’s article on Legacy Code] and Michael Feathers’ book ]Working Effectively with Legacy Code. For guidance on asking and answering technical questions effectively, the Stack