دخلت عالم التطوير منذ أن كان عمري (14) عاما، حيث تعلمت في معهد خاص بالكمبيوتر في إحدى العطل الصيفية لغة البرمجة (Basic)، ولأصدقكم القول كنت أصغرهم سنا بفارق لا يقل عن عشر سنوات وحصلت على المرتبة الأخيرة من ناحية الدرجات ولكن بفارق (درجة واحدة) عن آخر (طالبين) قبلي في الترتيب حسب ما أذكر.

مجموع خبرتي في عالم الكمبيوتر (30) سنة تقريبا في حال حسبت دورة ذلك الصيف،- أرجوك لا تحاول أن تخمن كم هو عمري -، واحتفظ فقط بفكرة أني أملك خبرة تقارب (30) سنة متراكمة منذ بدايات علوم الكمبيوتر والذي حسب قياس باقي العلوم فإن علوم الكمبيوتر مازالت طفلا يحبو وأنا كنت معاصرا له أكثر من نصف حياته.

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


خارطة الطريق التقنية

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

الأساس الذي بدأتُ به هو توحيد التقنيات والأدوات واختيار الأفضل لي ولفريقي ولنوع عملي، وليس أفضل تقنيات موجودة في السوق –أكاد أجزم بأني قد اخترت أفضل التقنيات ولكني لا أود أن أدخل في جدال معكم في هذا المقال حول إن كانت التقنيات التي استخدمتها هي الأفضل وسأتركها لمعركة \ مقالة أخرى – 

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


دائم التجديد

الهدف من هذا الدليل هو أن يكون المرجع الأساسي للمطورين في الشركة وآخر نسخة محدثة منه كانت في شهر (أكتوبر 2021) مع العلم أنها كانت التحديث رقم (4) في عام (2021). التحديث بشكل عام ليس في تقنية محددة بل في أدوات جديدة أو استراتيجيات متبعة أو إضافة أقسام أو تحديث في الوصف الوظيفي. فهو دليل كبير نسبيا امتلأ خلال سنوات بالكثير من المعرفة والذي يساعد المطورين من أبسط أداة مثلا اختيار محرر النصوص وبرنامج ضغط الملفات بما فيها إصدار نظام التشغيل وحماية البيانات وحتى قائمة المراجعة لتسليم مشروع برمجي واختباراته مثل اختبار التحمل واختبار الاختراق وغيره.


ماهي أفضل لغة تطوير للويب؟

نبدأ من الحقائق، أكثر من (79%) من الإنترنت اليوم تعمل بواسطة لغة (PHP) وهي التي أثبتت أنها الأفضل والأشهر لتطبيقات ومنصات الويب، ولكي أكون منصفا فهي فقط مناسبة لـ (99%) من المشاريع، أي أن هناك (1%) من المشاريع التي تتطلب منك استخدام  لغات برمجة أخرى كخيار أفضل أو وحيد، فإن كنت متأكدا بأن مشروعك من ضمن الـ (1%) فعلا، فلا مشكلة إذاً في أن تتحمل أيضا تكلفة (الندرة) التي تأتي معها، فمتطلبات وتكاليف الوصول للمهارات والإمكانيات لمشروع يقع ضمن الـ (1%) من المشاريع مرتفع. بالمناسبة خلال رحلتي العملية كلها لم أصادف أي مشروع يقع ضمن الـ (1%).


لماذا هي الأفضل؟

لن أدخل في تفاصيل لغة البرمجة وبنيتها ومعماريتها وبالتأكيد أعي أنه مرت بضع سنوات لم تكن فيها (PHP) هي الأفضل في كل شيء ولكنها كانت الأنسب دائما، فعند صدور تحديث خفيف كان يفي بكل ما تحتاجه المرحلة ولكن تلك الأيام ولّت والنسخة الأخيرة (8) التي ظهرت في (نوفمبر 2020) أعادت اللغة لتكون الأفضل برأيي بلا منازع.

عندما أتحدث عن لغة البرمجة فهي لوحدها لا تكفي حتى أستطيع الحكم عليها، بل أحكم على نظام بيئي (Ecosystem) ومجتمع (Developer community) كامل مبني حولها، بدءاً بأطر العمل مثل (php cake, CodeIgniter, Symfony, Laravel) وغيرها التي توفر عليك أكثر من (90%) من وقت التطوير وتساعدك في تلافي المشاكل والثغرات الأمنية والمنطقية وتكاملها مع الكثير من الخدمات.

بالمناسبة مدونتي هذه التي تقوم بالقراءة منها قمت بتطويرها بواسطة إطار العمل (LARAVEL)، وهنا كتبت مقالة عن هذه التجربة (تجربة نقل المدونة من WORDPRESS إلى LARAVEL).


إطار العمل (Laravel)

  • ظهر إطار العمل (Laravel) منذ (2011) كمشروع مجاني لموظف أراد أن يغطي فيه بعض القصور في إطار عمل (CodeIgniter) وقد تم بناؤه بنمط (MVC) مبني على إطار عمل (Symfony).
  • تم رصد أكثر من (140 ألف) موقع عامل بإطار عمل (Laravel) منها (100 ألف) تقع ضمن أول (مليون) موقع على الإنترنت، أي قرابة (10%) بناءً على موقع (similartech).
  • داخليا في الشركة أستخدم هذا الإطار منذ أكثر من ثماني سنوات ومازلت أرى أنه الأسهل والأفضل بالإضافة إلى كونه أيضا مصحوبا بالكثير من المواقع والخدمات (Ecosystem) الداعمة وأهمها برأيي هو الأكاديمية التعليمية التي تساعد أيّ مطور بأيّ لغة لأن يتقنها خلال فترة زمنية قصيرة جدا.


الخدمات الرسمية المدعومة (Ecosystem) في نفس موقع (Laravel) في ازدياد حتى أنها تخطت حاليا (18) خدمة لمساعدة المطورين العاملين بواسطة هذا الإطار، على سبيل المثال:

Laravel Dusk

أحد أجمل الأدوات المساعدة للمطورين من أجل بناء اختبارات آلية مؤتمتة بالكامل مبنية على تقنية (selenium) لتنفذ آلاف الاختبارات في ثوانٍ والتأكد من عمل مشروعك بشكل جيد.

Laravel Telescope

أداة رائعة وقت التطوير للمساعدة في مراقبة أداء السيرفر والنظام ومعرفة ماذا يحدث بالضبط والموارد المستخدمة وكيفية تحسن أداء مشروعك بناء على التقارير التي تظهر لك.

Laracasts

أحد أهم وأفضل الخدمات الداعمة، حيث وفرت أكاديمية بعدة مستويات للتعليم عبر دروس فيديو ومجتمع كبير متفاعل معها.

Laravel Nova

تساعد المطورين على بناء لوحة تحكم رسومية بسرعة فائقة لا تتعدى دقائق لإدارة أي مشروع بالأذونات الأساسية والصلاحيات للمستخدمين.

Envoyer

تساعد المطورين على إدارة عمليات الـ (Deployments)  وتوفير وقت توقف السيرفر ورفع النسخة الجديدة.

Laravel forge

تساعد المطورين على التعامل مع السيرفرات وتركيبها وإدارتها بواجهة رسومية  سهلة.

Laravel Scout

حلٌّ مساعد لتوفير خدمة البحث والفهرسة للنصوص بشكل كامل وسهل دون إرهاق للنظام بالعمليات العادية.

Laravel Cashier

حلٌّ سريع للربط مع بوابات الدفع دون الدخول في التعقيدات المصاحبة لهذا العالم.

Socialite

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

هناك المزيد

مازال هناك الكثير من الخدمات الرسمية الداعمة يمكنك الرجوع إليها عبر الموقع والعشرات من الخدمات المدعومة من قِبل مجتمع المطورين والتي يعتمد عليها أيضا.


تحديث: اقرأ المقال عن الإصدار الجديد (Laravel 9) من هنا


كيف تتعلم Laravel

إن كنت مبرمجا سابقا ولديك الخبرة الكافية للانتقال إلى لغة برمجة جديدة فعليك بأكاديمية لارافيل الرسمية من هنا (laracasts.com) أما في حال كنت مبتدئاً وتودّ الدخول فيها فأنصحك بهذا الكورس (PHP with Laravel for beginners - Become a Master in Laravel).


إطار الواجهات للويب (Bootstrap)

منذ أن وفرته شركة (Twitter) عام (2011) للمطورين وهو في اتساع وتطور مستمر، حيث تجد الكثير من التصاميم الجاهزة المبنية بواسطته مما يسهل عليك التلاعب بالواجهات والأشكال المبنية عليه، ومن أهم مميزاته هو المبدأ الذي قام على تقسيم الشاشة على شكل  (12) عمود وتكامل بهذا آليا مع كل مقاسات الشاشات دون الحاجة لتصميم أكثر من نسخة.

لكي أكون منصفا معكم فهناك أطر عمل للواجهات قد توفر ميزات أفضل وأسرع ولكنها تحتاج إلى استثمار أكبر في فريق العمل وإدارتها أصعب بعض الشيء، وهنا أتحدث عن (React) كبديل لـ (JQuery)  المعتمد عليه من قبل (Bootstrap) مثلا ولنفس الأسباب السابقة تجد أن عدد المواقع المعتمدة على (Bootstrap) هو أربعة أضعاف أكثر من المعتمدة على (React) ويمكن الرجوع للإحصائية من هنا (similartech)، بل إن (Bootstrap) مازالت تُستخدم كإطار واجهة مع (React) حيث إنها تعمل كالمحرك البرمجي للواجهات بدلا عن (Java Script).


ماهي أفضل لغة تطوير لتطبيقات الهواتف الذكية؟

هناك العشرات من لغات وبيئات التطوير التي تمكنك من التطوير للهواتف الذكية ولكن أفضلها هي تلك المدعومة من الشركات الخاصة بها والتي تقدم بناء تطبيقات أصيلة (Native) مثلا (Swift) لنظام تشغيل (iOS) الذي يشغل (iPhone) أو (Java) أو (Kotlin) لنظام تشغيل (Android).

التطبيقات الأصيلة (Native) تعد الأفضل حيث تستفيد من موارد الجهاز بشكل جيد مع إمكانية الوصول للموارد بشكل كامل، إلا أن الكثير من المطورين يقوم بالتطوير بواسطة التقنيات الهجينة (Hybrid) التي يمكنك التطوير فيها لكل من نظامي تشغيل (iOS) و (Android) في نفس الوقت لتوفير الوقت والتكلفة إلا أنها أقل من ناحية الأداء.


بيئة Flutter

قامت جوجل بتوفير تقنيات تطوير بواسطة (Flutter) مع لغة البرمجة (Dart) والتي قامت بحل المعضلة السابقة, حيث تقوم بتطوير تطبيق بنفس فكرة الهجين (Hybrid) أي تطور مرة واحدة ويعمل على كل المنصات بما فيها ( iOS و Android) ولكن المخرج النهائي يكون أصيلا (Native) مع إمكانية أن يتم دمج أجزاء من (Swift أو Java) في حال كان هناك أي قصور في (Flutter). في حال أردت أن تتعلم كورس فإنه سبق وأن نصحت به من هنا (Flutter & Dart - The Complete Guide ).


ماذا بعد الأساس؟

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