البرمجة من الصفر أم الاستعانة بالبرمجيات المفتوحة والجاهزة؟

meskineyasser

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

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

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


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

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

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

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

أنصح بالإعتماد على إطار عمل قوي، إطار لارافل مثلاً في PHP، واستخدام بعض المكتبات المكملة.

لا أنصح بكتابة كل شيء من الصفر بدون إطار عمل وكأننا في 2005.

المنتجات الجاهزة ليست أُطر العمل طبعاً، استخدام إطار عمل أرى أنه ضروري جداً ويختصر عليك الكثير من الوقت، ولا يحدك بأي شيء تقريباً، هو يعطيك canvas تبني عليه مشروعك بطريقتك انت، يجهز لك أساسيات الأساسيات التي من غير المجدي إعادة بنائها بنفسك مثل ال authentication, session, cache, database orm وغيره

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

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