أشهر تخصصات البرمجة المطلوبة بكثرة في سوق العمل, نجد أن تخصصات البرمجة، لها حاضر زاهر ومستقبل زاهر . كذلك فعليها طلب كبير في وقتنا الحاضر والإحصاءات، تتوقع أن يزداد هذا الطلب في المستقبل القريب والبعيد . وهذا أمر طبيعي كون العالم يتجه إلى الإعتماد الكبير على التكنولوجيا ، في مختلف المهام سواءا من طرف الشركات أو الأفراد وحتى الحكومات .
ما هي تخصصات البرمجة :
لتحديد ماهي أشهر تخصصات البرمجة فأولا علينا تحديد ما هي البرمجة :
البرمجة أو برمجة الحاسوب ببساطة وبشكل موجز هي عملية إعطاء أوامر معينة للكمبيوتر (مدخلات)، حتى يقوم بتنفيذها وإخراج نتائج معينة (مخرجات).
ويتم هنا استخدام لغة معينة من لغات البرمجة التي يفهمها الكمبيوتر لإعطاء هذه الأوامر.
أما بالنسبة لمفهوم تخصص البرمجة فيقصد به مجموعة من التقنيات والمعارف التي يتم استخدامها لتنفيذ عمل برمجي محدد.
فللبرمجة عدة مجالات أو تخصصات, لكل تخصص وظيفة معينة وتقنيات وأيضا لغات برمجة مختلفة.
ونظرا لتعدد تخصصات البرمجة سنقوم في الأسطر القادمة بتعريف أشهر وأهم المجالات البرمجية الموجودة.
مجال تطوير المواقع الإلكترونية :
مجال تطوير المواقع الإلكترونية هو مجال يهتم بتطوير ، وبرمجة المواقع ، والتطبيقات التي تشتغل على شبكة الإنترنت. أو شبكة الإنترانت مع ازدياد حجم مرتادي شبكة الإنترنت، و ظهور مفهوم الحوسبة السحابية . زاد اهتمام الشركات ،والمهنيين بالترويج لأعمالهم عبر هذه الشبكة . نتيجة لهذا زاد حجم الطلب على هذا المجال ، حتى أنه في استبيان جديد منشور على الموقع الشهير Stackoverflow . لوحظ أن معظم المشاركين في الاستبيان يعملون في أحد المجالات الفرعية لهذا التخصص .
وفي إحصاء في عام 2021 تم تقدير حجم هذا السوق بقيمة 56 مليار ، بالتالي فحجم الفرص المتوفرة في هذا التخصص . قد تكون أعلى مقارنة بـ تخصصات البرمجة الأخرى، ( هذا يعتمد على متطلبات بلدك طبعا ).
ساعد أيضا في إزدياد حجم الطلب على هذا المجال أنه شهد تطورا تقنيا عملاقا في الآونة الأخيرة، حيث أدى هذا إلى ظهور العديد من التطبيقات القوية. التي لم يكن من الممكن تشغيلها في المتصفح سابقا ، تطبيقات مثل التعديل على الصور ، والفيديوهات. تطبيقات تحرير النصوص…إلخ بالتالي صارت لتطبيقات الشبكة العنكبوتية، العديد من الاستخدامات عكس ما كان في الماضي. إذ كانت تقتصر على عرض معلومات معينة فقط وبعض الاستخدامات البسيطة جدا.
ينقسم مجال تطوير المواقع الإلكترونية إلى قسمين :
قسم خاص بتطوير الواجهات الأمامية (Front end أو Client side), ويهتم بتصميم هيكل وشكل الموقع بما يسهل على المستخدمين النهائيين . (أنت) التعامل معه بسهولة يتم استخدام تقنيات محددة كلغة HTML, لغة CSS, لغة Javascript…إلخ في هذا القسم.
ملاحظة: قبل الاستمرار في المقالة من الضروري أن تعلم أن هناك فرق، بين تخصص تصميم المواقع (UX/UI). الذي يهتم بتصميم شكل الموقع على برامج معينة مثل الفوتوشوب أو Figma وغيرها.
فهو بالتالي ليس من تخصصات البرمجة
وبين مجال تطوير الواجهات الأمامية الذي يقوم بأخذ هذه التصاميم وينفذها على أرض الواقع.
القسم الآخر لمجالنا خاص بتطوير الواجهات الخلفية ( Back end أو Server side ), الخاص بالتعامل مع السيرفر ومع قواعد البيانات . هنا يتم عادة استخدام لغة PHP ، وقاعدة بيانات معينة مثل MySQL .
في حالة قيام الشخص بالجمع بين مهارات تطوير الواجهات الأمامية، و مهارات تطوير الواجهات الخلفية، فإنه يًُطلق عليه مطور ويب شامل ( Full Stack developer).
بالإضافة إلى تلك التقنيات السابقة, يتم استخدام أنظمة إدارة المحتوى، لتسهيل عملية إدارة والتعديل على الموقع والمقصود بأنظمة إدارة المحتوى هنا. برنامج يساعد على إدارة والتعديل على الموقع الإلكتروني، بدون الحاجة إلى التعديل المباشر على الأكواد البرمجية الخاصة به.
من مميزات هذا النوع من البرامج:
- عدم الحاجة إلى فهم التقنيات البرمجية للتعديل على أكواد الموقع.
- المواقع الإلكترونية التي تبنى عليها تكون صديقة لمحركات البحث.
- زيادة الأمان للموقع.
أشهر هذه الأنظمة هي ووردبريس :
ويتم استخدام هذه البرامج بشكل ضخم, إذ تم الإعلان أن عدد المواقع، التي تستخدم إحدى أنظمة إدارة المحتوى هي 73 مليون موقع . لكن ينبغي العلم أنها ليست مناسبة لكل المشاريع, فبالنسبة لبعض المشاريع الكبيرة قد يكون من الأفضل الاستغناء عنها.
مجال تطوير تطبيقات الهواتف الذكية :
ثاني تخصص لدينا يُعتبر أيضا من تخصصات البرمجة التي عليها طلب عال في سوق العمل ، وهو تخصص قائم على تطوير تطبيقات الهواتف الذكية. للنظامين الأندرويد أو IOS الخاص بالأيفون، وأيضا ما لا يعلمه معظم الناس, أن هذا المجال أيضا يتضمن تطوير التطبيقات الخاصة بالمساعد الرقمي كالذي تستخدمه الشركات.
لهذا المجال فرص واعدة كون عدد مستخدمي الهواتف يزداد شيئا فشيئا, بالتالي الطلب على مطوري تطبيقات الهواتف الذكية. سيزداد بدوره عند حديثنا عن تطوير تطبيقات الهواتف, فإنه علينا التوقف قليلا والتحدث عن نظامي التشغيل أندرويد و IOS ، الخاص بهواتف آيفون.
النظام الأول و الأكثر شعبية أندرويد الذي تم تطويره من شركة جوجل, نظام مجاني ومفتوح المصدر, أي يمكن لأي شخص رؤية كود المصدر الخاص به والتعديل عليه.
أما النظام الثاني الخاص بشركة آبل فهو عكسه تماما, فهو محتكر من الشركة ولا يمكن استخدامه من غيرها.
هناك أنظمة تشغيل أخرى لكن معظم الهواتف تعمل بإحدى هذين النظامين.
سنعود إلى صلب موضوعنا :
مع اختلاف هذين النظامين فإن التقنيات المستخدمة، في كل واحد منهما مختلفة ( على الأقل لتطوير تطبيقات أصلية ) .إذن فإن مجال تطوير تطبيقات الهواتف الذكية، متفرع إلى قسم خاص بتطوير تطبيقات الأندرويد وأخرى خاصة بالآيفون . ولكل واحد منهما تقنيات مختلفة، عن الآخر فالأول يعتمد على تقنيات مثل لغة Kotlin ـوبرنامج Android studio . أما الثاني فيعتمد على لغة Swift وبرنامج Xcode ، هذه التقنيات هي المدعومة من الشركات المطورة لهذه الأنظمة. وهي المستخدمة بشكل أساسي لها، لكنك لا تستطيع إنشاء تطبيق أصلي متوافق مع كلا النظامين عبر هذه التقنيات.
أنت مجبر على تطوير تطبيق خاص للأندرويد بتقنياته الخاصة، وتطبيق خاص للأيفون بتقنياته الخاصة. بشكل منفصل حتى تضمن أن يكون تطبيقك متوافقا مع كلاه النظامين، لكن في الآونة الأخيرة . ظهرت طرق وتقنيات جديدة جعلت من الممكن القيام بهذا وتطوير تطبيقات، تتوافق مع كلا هذين النظامين وأكثر. وكما هو واضح فهي أقل في التكلفة وأسرع في التطوير ، التطبيقات الهجينة نحن نتحدث حول مصطلح التطبيقات الهجينة, أي التطبيقات التي تعمل على أكثر من نظام تشغيل.
بعضها يعتمد على تقنيات مثل إطار العمل flutter و لغة Dart وغيرها ( Cross-Platform Applications ).
وبعضها يعتمد على استخدام تقنيات الويب، التي سبق ذكرها في الجزء الخاص بتطوير المواقع الإلكترونية. مثل لغة HTML, لغة CSS و لغة جافا سكريبت ( Hybrid-Web Applications ) ، بالإضافة إلى إطار العمل React Native . لكي لا نقلل من شأن التطبيقات الأصلية, فلهذا النوع من التطبيقات مميزات متعددة لا تتوفر في التطبيقات الهجينة, على سبيل المثال:
- قدرتها على استخدام جميع موارد الجهاز عكس التطبيقات الهجينة.
- تجربة استخدامها أفضل تقريبا.
- أسرع من التطبيقات الهجينة.
فالاختيار بين التطبيقات الأصلية أو الهجينة يعتمد إذن على عوامل متعددة مثل ميزانية المؤسسة/صاحب المشروع و حجم التطبيق المراد إنشائه…إلخ.
الآن لننتقل إلى تخصصات البرمجة الأخرى
مجال تطوير برامج سطح المكتب :
يُعتبر مجال تطوير برامج سطح المكتب من أقدم المجالات البرمجية :
فهو مترافق نوعا ما مع ظهور الكمبيوتر ،ففي بدايات ظهور الحواسيب لم تكن شبكة الإنترنت موجودة ولا أيضا الهواتف الذكية. بالتالي البيئة الوحيدة التي يمكن فيها تشغيل البرامج هي الحواسيب ، لكن في بدايات الحواسيب لم تكن البرامج ذات الواجهة الرسومية. ظهرت بعد, أي البرامج التي على هيئة واجهة تتكون من رسوميات، يمكن التفاعل معها من المستخدم . وكما هو واضح كانت معقدة بعض الشيء لذلك بعد ظهور أنظمة التشغيل . ذات الواجهة الرسومية، تم الاستغناء بشكل كبير عن هذا النوع وتطوير نوع البرامج المذكورة سلفا . وهنا بدأ مجال تطوير برامج سطح المكتب، بالنمو لمدة طويلة نسبيا . حتى ظهرت تخصصات البرمجة الأخرى، مثل تطوير تطبيقات الويب, التي أدت إلى تناقص الإعتماد على برامج سطح المكتب، والاعتماد كليا أو جزئيا على تطبيقات شبكة الإنترنت.
لكن لا يزال هذا المجال مهما, والدليل وجود عدة برامج سطح المكتب، في حاسوبك التي لا يمكنك الاستغناء عنها . كذلك ما يميز معظم تطبيقات سطح المكتب.، بعدم اعتمادها على الإنترنت كي تؤدي وظيفتها, فهي تعمل بدون الحاجة إلى إتصال بالشبكة العنكبوتية.
وهذا من ضمن ما يميز هذا النوع من التطبيقات عن تطبيقات الويب, لأنك تحتاج إلى إتصال قوي بالإنترنت . لتشغيل بعض تطبيقات الويب وبدون هذا الشرط ستكون تجربتك بطيئة وسيئة للغاية.
إلى جانب هذا فبرامج سطح المكتب أكثر أمانا من تطبيقات الويب, لأن بيانات البرنامج تخزن محليا في جهازك ولا تغادرها عادة.
التقنيات التي عادة ما يتم استخدامها في هذا المجال أحدها يعتمد على نفس المبدأ المذكور سابقا .في جزء تطوير تطبيقات الهواتف ، وهي تطوير برامج أو تطبيقات سطح المكتب متوافقة مع مختلف أنظمة التشغيل.
ويُستخدم لهذا الغرض أيضا تقنيات الويب من لغة HTML,لغة CSS، و لغة جافا سكريبت، والأهم من ذلك إطار العمل electron . أو غيرها ممن يؤدي نفس الغرض، ولهذه الطريقة تقريبا نفس السلبيات والإيجابيات المذكورة سابقا . أما عن الطريقة الأساسية, فلنظام التشغيل ويندوز يتم استخدام لغة برمجة معينة مثل C++ ، أو جافا وغيرها و أطر العمل الخاصة بهذه اللغات . أما لنظام التشغيل ماك فيتم استخدام لغة Objective-C و برنامج XCode.
مجال تحليل البيانات :
يقال أن البيانات هي نفط هذا العصر, وهذا صحيح كون الاستخدام الصحيح لهذه البيانات، يمكن أن يحقق للشركات مبالغ طائلة جدا . والبيانات هي مجموعة من المعلومات الغير منظمة، التي يتعين تحليلها وترتيبها حتى نتمكن من إيجاد المعلومات المرجوة منها . البيانات قد تكون على سبيل المثال عن أعمار مشتري منتج معين, المنصات التي يستخدمونها (أندرويد, ويندوز…) وهكذا . ساهم الإنترنت في ازدياد حجم هذه البيانات، مما جعل نتائج تحليل البيانات أكثر كفاءة . وأهمية وكذلك جعل هذا من وظيفة تحليل البيانات أكثر التخصصات البرمجية طلبا . حيث ستجد أعداد ضخمة من البيانات التي يمكن استغلالها لعدة أغراض مثل:
- مساعدة الشركات في اتخاذ القرارات الصائبة;
- فهم العملاء بشكل أكبر, فهم سلوكهم, أنماطهم…إلخ;
- تحسين كفاءة وإنتاجية الشركات;
تحليل البيانات مختلف عن تخصصات البرمجة الأخرى كونها لا تركز بشكل كبير على المفاهيم البرمجية .
وإنما تركز بشكل أساسي على الرياضيات والإحصاء ، لكنها حاليا مليئة بالمفاهيم والتقنيات البرمجية الحديثة . التي تساعدها على تحسين كفائتها وسرعتها ، من الضروري أن نفرق بين محلل البيانات وعالم البيانات . فالأول يقوم بتحليل البيانات، ومعالجتها أما الثاني فيقوم ببناء نماذج وخوارزميات تفيد في تحليل البيانات . فهما مرتبطان ببعضهما البعض لكنهما ليسا نفس الشيء . يقوم محلل البيانات باتباع خطوات معينة في عمله حتى يضمن الاستفادة الأمثل من البيانات المتوفرة لديه.
هذه الخطوات هي:
- طرح سؤال والبحث عن إجابته: وهذه الأسئلة تتعلق بالمجال الذي يعمل فيه محلل البيانات. كمثال: كيف يمكننا تطوير منتج الشركة, ماذا يفضل العملاء…إلخ.
- جمع البيانات المناسبة: وهناك عدة مصادر لهذه البيانات, فقد تكون من قاعدة بيانات الشركة. أو يمكن شراؤها من مؤسسة متخصصة في ذلك…إلخ.
- تنظيف وترتيب البيانات: هنا يقوم محلل البيانات بتنظيف البيانات من المعلومات. الغير مفيدة وترتيبها مما يضمن أن تكون عملية تحليلها أكثر دقة.
- تحليل البيانات: وهنا يبدأ العمل الأساسي لمحلل البيانات وهو تحليل البيانات. حتى ينتهي بإجابة عن الأسئلة التي تم طرحها في الخطوة الأولى.
- عرض نتائج التحليل على هيئة رسومات بيانية: آخر خطوة تتمثل في عرض نتائج التحليل . على متخذي القرار في الشركة أو المؤسسة المعنية بالأمر على هيئة رسومات بيانية من أجل توضيح أفضل لنتائج التحليل.
أما عن التقنيات التي يستخدمها محلل البيانات فهي متنوعة بين لغات البرمجة مثل لغة بايثون و لغة SQL . وبين بعض المفاهيم في الرياضيات مثل التفاضل والتكامل والجبر الخطي وعلم الإحصاء
ثم بعض الأدوات مثل برنامج Excel وبعض المهارات مثل مهارة حل المشكلات. فهذا التخصص إذن قد يكون من أصعب المجالات التي يمكن تعلمها مقارنة بـ تخصصات البرمجة الأخرى . لكنه يستحق بشكل كبير تعلمه لما له من فرص عظيمة في الحاضر والمستقبل.
مجال الـ Devops :
مجال Devops هو مجال حديث نسبيا وهو حل لمشكلة كانت تواجه الشركات المطورة للمشاريع البرمجية في منهجية Agile.
وهي منهجية لإدارة المشاريع البرمجية تقوم على فكرة تقسيم المشروع إلى عدة وحدات وإنهاء كل وحدة تلو أخرى.
بمعنى أن كل جزء من هذا المشروع سيتم العمل عليها على انفراد وستمر على دائرة: التخطيط -> التصميم -> التنفيذ -> الإختبار -> الصيانة والتطوير.
عوض العمل على المشروع قطعة واحدة كما كان يتم في منهجية Waterfall.
المشكلة في هذه المنهجية أنها تؤدي إلى تعامل مستمر بين فريق التطوير المسؤول عن التخطيط للمشروع وتطويره وتصميمه واختباره.
وبين فريق العمليات الذي يقوم بتجهيز وإدارة ومراقبة البنية التحتية التي يعمل عليها هذا المشروع.
وهذا سبب لظهور مشاكل ونزاعات كثيرة بين الفريقين. لحل هذه المشكلة تم اقتراح مفهوم Devops الذي هو عبارة عن فلسفة للتعامل بين هذين الفريقين.
حيث يقوم هذا المفهوم على تقريب الفريقين والتنسيق بينهم لضمان التعاون التام لإكمال المشاريع بأسرع وقت وبأفضل جودة وأيضا لتسهيل العمل على فريق العمليات.
فهو إلى حد الآن ليس تخصصا من تخصصات البرمجة, وإنما فقط فلسفة أو منهجية. لكن بسبب ظهور عدة ممارسات وتقنيات في هذا الإطار إستدعى هذا إنشاء إسم وظيفي جديد يدعى Devops engineer أي مهندس Devops.
وهو شخص يجمع بين مهارات التطوير ومهارات تقنية المعلومات ومهارات إضافية أخرى.
من ضمن وظائفه الأساسية نجد أتمتة مراحل إنتاج المشروع البرمجي لتسريع وتيرة إنهاء المشاريع البرمجية ولضمان التنسيق بين فريق التطوير وفريق العمليات. أي جعل هذه المراحل تتم بشكل تلقائي وبدون تدخل بشري . تُستخدم العديد من التقنيات في تخصص Devops تماما مثل تخصصات البرمجة الأخرى مثل لغة برمجة مثل Python و Github و أدوات الأتمتة مثل Bitrise.
ينبغي العلم أن تخصصات البرمجة كثيرة ومتنوعة لا نستطيع ذكرها كلها ضمن هذه المقالة كتخصص الذكاء الإصطناعي, لكننا اكتفينا بالحديث عن 4 مجالات الأشهر بينها.