هو تحد صغير قمت به منذ سنة تقريبا، يتعلق بالـPHP... حيث دار النقاش بين وبين احد الاصدقاء انه علي تعلم اللغة بالكامل قبل ان ابدا بتطبيق مشروع متكامل، او حتى نصف متكامل، لذا كعادتي اخذت التحدي بعناد وبدأت العمل في مشروع دون ان اعرف ادنى معلومة في اللغة.

البداية:

  • لم يكن التحدي على ان ابدأ من الصفر، لذا كان من المسموح ان اعتمد على script او framework جاهز، ولكن على المنتج النهائي ان يمتلك ضعف الامكانيات على الاقل، ولا يشبه المنتج الرئيسي بواجهة المستخدم نهائيا.

  • التحدي تضمن، تغيير التصميم "وهو اسوأ مرحلة مررت بها"، تعديل السكربت ليتضمن ميزات جديدة، وتحسين الميزات الحالية.

  • لم اكن ذو خبرة في الPHP ومازلت قليل الخبرة فيها، حتى انني لا اعلم ما هي وظيفة بعض التعليمات التي استخدمتها، حفظتها فقط انها تعمل كذا او كذا "ثم اطلعت لاحقا على الانترنت لاعرف اكثر عنها"

  • اخترت اضعف سكربت جربته منذ بدايتي في عالم الانترنت باسم "master auto index" وهو سكربت لموقع واب قديم من انتاج هندي، بسيط جدا من كافة النواحي... متوافر مفتوح المصدر على GitHub

العمل:

  • في البداية كنت اعمل على التجريب، لدي فهم عام للمنطق البرمجي، بالاضافة لمعرفتي للبنية الخاصة باللغة "بشكل اساسي وغير متعمق" فكنت احذف الكود، ثم اجرب، واعيده، ثم اجرب، لاكتشف كل قطعة عما كانت مسؤولة عليه.

  • بدأت في فهم كيفية عمل السكربت تدريجيا، لاحظت بعض الاخطاء والحلقات التي لا فائدة منها "بالنسبة لي" وبدأت بازالة تلك البلوكات من الكود تدريجيا.

  • الجزء الاصعب كان التجريب بعد كل ازالة، لانني لا اعرف تماما ان كنت ازلت الكود بشكل صحيح ام هناك تبعات له.

  • بعد مرور اسبوع تقريبا انتهيت من الازالات، وكان علي الدخول في مرحلة اضافة الميزات.

  • التعريب كان سهلا، فقط قلب الCSS وترجمة الSTRINGS... تخزين اللغة العربية في قاعدة البيانات على الناحية الاخرى سبب لي مشكلة اضطررت وقتها لتعلم بعض المبادئ في MySql لاستطيع تفاديها... لم اتعمق ايضا في قواعد البيانات

  • اول ميزة كانت جعل الموقع متوافقا مع الحاسوب ":P اجل مع الحاسوب، السكربت كان مخصصا للهواتف فقط" وكان الموضوع صعبا قليلا، تم نصحي باستخدام الbootstrap... لم افهمها تماما لذا قمت بحركة بسيطة للالتفاف على الموضوع "قمت بعمل سكربتين داخل السكربت، والتبديل بينهما حسب الuseragint string الخاص بالمتصفح" مما زاد من حجم السكربت "اصبح الا2.5 ميغاباايت، حجم كبير وهائل"

  • استبدلت نظام تخزين الملفات على القرص الخاص بالاستضافة ثم ربطها بقاعدة البيانات بنظام ربط مع روابط خارجية "بدلا من تحميل الملفات من الاستضافة، يتم تحميل الملف من رابط خارجي" وهذا ايضا عن طريق خدعة بسيطة "عند اضافة الملف من قاعدة البيانات كان عليك سابقا تحديد ملف ورفعه، الان فقط عليك ادخال رابط" وهذا تطلب تعديل قاعدة البيانات واسلوب العرض

  • عداد التحميلات والمشاهدات، كان الموضوع سهلا، فقط قمت بالالتفاف على الموضوع، اضفت بعض الحقول لقاعدة البيانات.

  • التصميم... حسنا كان عذابا حقيقيا... المشكلة التي واجهتني هو ان السكربت ملتف على بعضه... بعض مكونات الواجهة موجودة بين اسطر الPHP وبعضها الاخر مفصولة حسب ملفات tpl... وهو المشكلة الوحيدة التي واجهتني ضمن كل المشروع

  • حسنت البحث في الموقع، خيارات ترتيب الملفات، وغيرها.

في النهاية استطعت ان انهي المشروع، اطلقه، احوله لمكتبة الكترونية تجذب 150 زائر يوميا على الاقل، بالاضافة لكونه مميز ومحبوب من الزوار "حسب ما اعرفه"

النهاية:

  • ربحت التحدي، قمت بانشاء مشروع بلغة لا اعرف فيها سوى الاساسيات، وذلك عن طريق البحث عن كل معلومة تفيدني في عملي "فقط" دون التوسع في اللغة بشكل كلي.

  • برأيي، من الممكن ان تنشئ مشروعا "متكامل الى حد ما" في لغة برمجة لا تدري عنها سوى الاساسيات، بشرط ان تتعلم تدريجيا ما تحتاجه في المشروع... بالاضافة للصبر الطويل... والوقت، الكثير من الوقت

  • لا يعني هذا ان تترك التعمق في اللغة التي تستهدفها، او ان تكتفي بالقشور، ولكنه يعني انه بامكانك البداية الان، والزيادة لاحقا، والتطور مع الوقت ولكن الامر ليس سهلا

ما رأيك انت؟ هل تعتقد بانني احمق وقد ضيعت وقتك في هذا الموضوع ووقتي في عمل المشروع؟ ام تعتقد ان الطريقة جيدة -التعلم خلال العمل- في البرمجة؟