أخطاء كلاسيكية

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

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

بالتالي زيادة عدد المبرمجين عندما يتأخر المشروع هو نوع من سكب البنزين علي النار المشتعلة بالفعل.

هذه الفكرة عرفت لأول مرة عام 1975 و حتي اليوم يقع فيها عدد محترم من مديري المشروعات. الكتاب الذي عرفت عن طريقه فكرة (الأخطاء الكلاسيكية) كان يضم 32 خطئاً كلاسيكياً في صناعة البرمجيات.

لفترة ظللت أفكر في الموضوع في نطاق أدارة مشروعات البرمجيات، و لكن تدريجياً إنتبهت لأنها مشكلة بشرية عامة. لو تتبعت التاريخ لوجدت الكثير من الأفعال التي تبدو بديهية منطقية إلا أن بعض التدقيق و الكثير من قراءة التاريخ يخبرونك أنها كارثية. Continue reading