أهمية تحديد مسار
إذا وجدت جزء في الصفحة لم تفهمه لا بأس اسألني، وسنصل للمزيد من التوضيح في المقالات القادمة بإذن الله
مقدمة
في البرمجة هناك بعض المفاهيم والأدوات المشتركة، ولكن بعد معرفة الأمور المشتركة مهم اختيار مسار محدد تنطلق فيه بعد معرفتك مبادئ مفاهيم البرمجة الأساسية وأدواتها مثل الخوارزميات Algorithms والمتغيرات Variables وأنواع البيانات Data Types والدوال Functions والحالات Conditions وغيرها… وهذا ما يتم تدريسه عادةً في الجامعة مع مواد أخرى مثل الرياضيات وأساسيات الحاسب وغيرها.. ولكن بعد التخرج أو في حالة كان الشخص غير جامعي وتعلم مفاهيم البرمجة السابقة، عندها يريد الشخص أن ينطلق في عالم البرمجة بشكل قوي ولكن يجد الشخص نفسه ضائع وهنا يجب أن يحدد المسار الصحيح المناسب له في البرمجة والهدف من هذه المقالة معرفة المسارات في تطوير البرمجيات وكيف تختار أي مسار يناسبك من تطوير البرمجيات لذلك في نهاية قراءة هذه المقالة مهم أن تختار أحد هذه المسارات وذلك في بداية مسيرتك البرمجية حتى سنتين أو ثلاث سنوات (تتقنها وتكسب خبرة وتطور مشاريع بها وتحصل على شهادات متخصصة بها بنفس الوقت).
هناك مسارات فرعية تتفرع من هذه المهارات الأساسية ويجب اختيار مسار فرعي كذلك، سيتم عرضها في مقالة قادمة
من مسارات البرمجة الأساسية
التي سنركز عليها
برمجة المواقع وأنظمة الويب
برمجة تطبيقات iOS
برمجة تطبيقات Android
برمجة متعددة المنصات Cross-platform
كمية المعلومات وسرعة التحديثات وأهمية الاحتياج لكل مسار
إن تحديد مسار من الأمور المهمة في التقنية لأن هناك (سرعة كبيرة في التحديثات والتطورات في كل مسار) وكذلك هناك (كم كبير جداً من المعلومات والأدوات والمهارات والخبرات) التي تحتاجها المشاريع التقنية ويحتاجها السوق ومع تحديد المسار ستجد الكثير من المفاهيم التي يحتاج أن تتعلمها في المشاريع من ناحية مختلف الأفكار التي يطلبها جانب تحليل الأعمال (Business Analysis) وطريقة تنفيذها بما يتعلق بالمشاريع من ناحية المتطلبات وسير العمل والنماذج والرسوم التوضيحية ومن جانب التنظيم (Organize Team & Project) كمنصة التواصل ومنهجية إدارة المشروع والفريق والتحكم بالإصدارات والبنية والرفع وكذلك من الجانب الفني (Technical) البيئة التحتية والمنصات والتعامل مع قواعد البيانات وبيئة التطوير البرمجية واتفاقية كتابة الأكواد وتصميم المشروع وبناء عناصر واحتياجات الواجهات والتشغيل والتكامل والكثير… وذلك بالطريقة المناسبة (والمثلى) والحاجة لتصل بجودة عالية كنتائج المشاريع التي نراها على مستوى الشركات الكبيرة والجهات الحكومية المتميزة والمنشآت العالمية، لذلك يجب اختيار مسار محدد وكذلك يجب أن تؤمن بأهمية هذا المسار وتسعى للتركيز فيه وأن تسعى لأن تكسب أكبر قدر من (المفاهيم والمهارات والخبرات والشهادات) المتعلقة بهذا المسار أضف لذلك أنه من الأمور المعتادة أن يطرأ على نفس المسار الواحد بعض التطويرات التي تغير بنسبة معينة من طريقة التطوير والتي يجب على المبرمج أن يواكب هذه التغييرات ويتعلمها ويستفيد منها وذلك في كل إصدار.
قد يمتلك البعض عدة مهارات من عدة مسارات ويسمى هذا الشخص المتمكن بعدة مهارات أو مسارات في انشاء مشروع متكامل بمختلف احتياجاته بالمسمى Full Stack Developer والبعض ينصح ويطلب هذا النوع من المطورين والآخر لا ينصح بذلك ويطلب الشخص المتخصص بمسار محدد، وشخصياً بعد تجربة الاثنين أنصح بالمسار المحدد وذلك للأسباب المذكورة السابقة وستجد تفاصيل أكثر في تنوع المسارات بإكمال المقالة، ولكن يعتمد حسب إمكانيات الشخص والجهة وتوجه إدارتها وحسب نوعية وعدد المشاريع وحجمها والعوامل المتعلقة بذلك.
اذا انت راح تحل كل المشاكل اللي تواجهك في Back-end و Front-end في الغالب ماراح تختار الحل الصحيح بتختار الحل السريع وهنا مشكلة.
وفي الغالب ما فيه احد حقيقةً Full stack developer بالمعنى لا بد أن يكون مستواه في أمور معينة أكثر من أمور أخرى وأنواع المشاريع والتقنيات متعددة ومختلفة.
مختلف اللغات واختلاف الإمكانيات مع أهميتها جميعها
في مسار برمجة المواقع وأنظمة الويب لوحده هناك لغات برمجة وأطر عمل Frameworks كثيرة أشهرها JavaScript Node.js, Java Spring Boot, ASP .NET CSharp، PHP Laravel، Python Django … (وهناك كذلك أهمية في اختيار لغة برمجة واحدة والتركيز عليها) وهذا ما يسمى بالجانب الخلفي Back-end وكذلك هناك جانب أمامي Front-end وكل جانب عادة يكون بوظيفة مستقلة وله لغات وأدوات مختلفة مثل HTML, CSS, JavaScript ومختلف أطر العمل والمكتبات البرمجية Libraries الخاصة بها، وفي تطوير تطبيقات الأجهزة الذكية على نظام iOS أو Android تتم بلغة البرمجة الأم (Native) أي اللغة المعتمد عليها النظام بشكل رسمي فتوجد الأن لغة واحدة فقط، الأكثر اعتمادية وشهرة لكل نظام بشكل أساسي:
iOS (لغة Swift) بدعم Apple يجب يكون جهازك Mac
Android (لغة Kotlin) بدعم Google و Jetbrains
لتطوير Android في الفترة القريبة تغير الدعم والتركيز عن طريق Google من Java إلى Kotlin وهو المسار الأساسي لديها الأن والتوجه القادم لعدة أسباب أهمها فيما يتعلق بأنها لغة أكثر تطور في البرمجة والمزيد ولا يزال التطوير باستخدام لغة البرمجة Java لوجود مشاريع قديمة عليها ولحداثة دعم Kotlin مقارنة بـ Java المتقدمة حتى الأن ولكن بالمستقبل والله أعلم Kotlin، مثل ما كان مع Objective-C عندما تم استبدالها من Apple بلغة Swift وكمبتدئ الأفضل أن تبدأ باللغة الأقوى للمستقبل وعليها توجه كبير وطلب حالياً.
وهناك طرق برمجة أخرى بغير لغة الأم (Native) تسمى بطريقة برمجة متعددة المنصات (Cross-platform) وهذا التفاصيل فيها ستطول وهو مسار مختلف وفيه مزايا وعيوب وسأتكلم عنه قليلاً في الأسفل، ولكن في الأصل حالياً الأقوى والأفضل هو عمل تطبيقات بلغة الأم من نواحي كثيرة في المرونة والجودة والسرعة والإمكانيات، وهو ما تقوم به الجهات والشركات الكبرى وكذلك بعض الشركات المتوسطة والصغيرة، مع إمكانية تطوير الواجهات وعناصرها ووجود المصادر المختلفة الكثيرة كطرف ثالث للتعامل معها بشكل أسهل مباشرة بلغة الأم Native ولكن لا يعني هذا أنها الأفضل دائماً فبعض المشاريع تتناسب معها مشاريع (Cross-platform) لأنها تكفي بحاجتها وكذلك الأن يوجد دعم لتقنية من Google يصل جودتها للـ Native وهو Flutter فيمتاز بمزايا رائعة لكن يضل هناك عدة أمور يجب أن تأخذها في الاعتبار سأذكرها في الأسفل مع باقي تقنيات Cross-platform.
من المسارات المهمة كذلك في تطوير البرمجيات هو تحليل الأعمال وتحليل النظم… وهو مهم وبوظيفة مستقلة له يقوم بتوجيه المبرمج في بناء متطلبات المشروع.
كل المسارات لها حاجة وفرص وظيفية حالياً ولكن لا نعلم ما يكون في المستقبل