تصميم البرمجيات هو بناء معرفي تراكمي، مش مجرد تشغيل لنظم
المقال ده بيتكلم عن اهمية نقل المعرفة والفهم العميق للمشاريع خلال ال handover والتأثير الكارثي اللي ممكن يحصل لو ده ماتمش بشكل كويس. تخيل ان مشروع SVC اللي شركة ORG بنته كبديل لخدمة SaaS عشان يوفّروا تكاليف. اللي بنا المشروع ده مهندس اسمه X10، وهو مهندس شاطر جدا، خلّص المشروع لوحده في وقت قصير وتحت ضغط الديدلاين، وبعد ما خلّص وساب الشركة، اتولّى فريق جديد (TEAM) مسؤولية النظام. الفريق واجه صعوبات شديدة في عمل تعديلات بسيطة عليه بسبب إنهم ما عندهمش نفس الفهم العميق للفكرة والتصميم اللي في دماغ X10، فالنظام بقى بالنسبة لهم زي “صندوق أسود.”
الفكرة الأساسية في المقال إن البرمجيات مش مجرّد كود شغّال، لكنها نظرية أو نموذج ذهني للـمطورين. بمجرد ما يسيب الفريق اللي عنده الـ”نظرية” المشروع، النظام بيموت “نظريًا” حتى لو الكود لسه بيشتغل، لأن محدش في الفريق الجديد فاهم كويس السبب ورا كل سطر كود أو تصميم. وعلشان كده، إعادة إحياء النظام بتتطلب إعادة بناء نفس النظرية دي خطوة بخطوة، وده بيكون صعب وممكن ياخد وقت طويل. الفكرة دي بتوافق مفهوم “البرمجة كنشاط بناء نظرية” اللي اتكلم عنه Naur، وكمان كلام Parnas عن إن التعديلات اللي بيعملها ناس ما شاركوش في التصميم الأصلي بتسبب “شيخوخة” للبرنامج. باختصار، المقال بيوضّح قد إيه نقل المعرفة والفهم العميق بيكون أهم من مجرد تسليم كود شغال، عشان النظام يفضّل قابل للتطوير على المدى الطويل.
المقال الاصلئ:
https://olano.dev/blog/software-design-is-knowledge-building/