أحد أصدقاء البرنامج، كان عنده تساؤل منطقي:
ايه الفرق بين اني اشتغل علي ال legacy code واني ا build system من اول وجديد!! في الحالتين هعيد صياغة الكود وتقريبا 90% من كل حاجه عشان اخليها علي المبادئ الاساسيه لل clean code؟
السؤال كان لطيف الحقيقة، فرديت عليه كالتالي:
السؤال فيه كمية افتراضات كتير مخفية، خليني أحاول أوضح حبة منهم:
-
أنت مفترض أنك فاهم الـ legacy system ده كويس لدرجة أنك تقدر تبنيه من أول وجديد، في ٩٠٪ من الحالات الكلام ده مش صح، كلمة legacy system مش معناها أنه مجرد قديم (شغال بقاله (س) من السنين)، معناها حاجات كتير من ضمنها أنه في حاجات كتير مخفية في ال legacy system ده بس شغالة بشكل ما. بالتالي في ٩٠٪ من الحالات أنت مش هتقدر تعرف كل الـ use cases اللي في الـ legacy system أصلًا عشان تقدر تعملها من أول وجديد.
-
أنت مفترض أنك عندك وقت متاح أنك تعمل system من أول وجديد، في معظم الحالات الفرضية دي مش صح، لأن الـ bussines side في الأغلب عنده pipeline من الأفكار والحاجات اللي عايز يعملها/يجربها عشان يزود ربحية المنتج، ده لو شغالة في شركة بمنتج خاص بيها، لو شغال في شركة بتعمل applications/system للشركات الأخرى فحرفيًا الوقت بيساوي فلوس! الوقت اللي ممكن تعمل فيه system من أول جديد ممكن تعمل فيه ٣ systems جداد بفلوس أكتر، ده غير أنك لازم تقنع الـ customer بحاجة زي كده عشان يدفع فلوسها، ودي تحدي مش سهل.
-
أنت مفترض أن حجم الـ legacy system بتاعتك مش كبير، الـ legacy system بتتكون عبر سنين من البناء، بالتالي ممكن تحتاج سنين مماثلة عشان تعملها من أول جديد بكفاءة مشابهة. (ده مش دايمًا حقيقي، بس موجود)
-
الـ customer بتاعك (سواء شركة تانية أو الـ bussines side في شركتك) مش بيكون شايف مشاكل الـ clean code، بالنسبة له الـ system شغال اهو وزي الفل، مش شايف المشاكل المخفية في الكود السيئ، ودي (التواصل بين السادة المبرمجين والسادة العملاء) واحدة من أصعب مشاكل الصناعة بدون مبالغة، ففي الحالة دي أنت محتاج العميل يفهم يعني إيه كود نضيف وكود سيئ، وليه الكود السيء بيسبب مشاكل علي المدى البعيد، وهو هيستفيد إيه لما نحسن جودة المنتج، ومحتاج تعمل كل ده وأنت بتضيف حاجات جديدة للـ system بتاعتك، أو بتصلح حاجات قديمة فيه. لأن بيكون صعب جدًا أنك تروح لعميل تقوله: بص، اديني كده ٦ شهور مش هنضيف ولا نصلح ولا نعمل أي حاجة جديدة في ال system اللي موجود ده، وبعد الـ ٦ شهور دول - في أحسن الأحوال - هنديلك نفس الـ system هو هو! بالنسبة له كده (لو مفهمش الكلام اللي فوق ده) دول ٦ شهور من الفلوس مرمين في الأرض، يعمل كده ليه؟
يعني، دي أهم النقط اللي على بالي دلوقتي، لو افتكرت حاجة تانية هضيف مقالات لاحقة..