تفاصيل هامة عن تخصص هندسة برمجيات جامعة الملك سعود

Nice Topic 18 يوليو، 2022

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

هندسة برمجيات جامعة الملك سعود

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

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

طبعاً التخصص يُدرس بشكل رسمي في جامعات قليلة في السعودية منها جامعة البترول – جامعة الملك سعود – جامعة الأمير سلطان وغيرها .. ولاحظت تشابه بين أغلب المواد في الخطط الدراسية اللي تقدمها هذه الجامعات .. فـ رح تكون المهمة أسهل في شرح المواد

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

  • عملية تطوير البرمجيات في بداية الستينات واجهت عدة تحديات أهمها:

1- قلة المبرمجين الأكفاء في ذلك الوقت وإرتفاع أجورهم .. وبالتالي الأخطاء المتكررة مرفوضة لأنها رح تكلف أكثر

2- قلة إعادة إستخدام البرنامج مرة أخرى .. كان البرنامج يتم بنائه مجدداً في كل مرة

3- عدم وجود خطط واضحة ممكن يمشي عليها الفريق البرمجي لبناء المنتج .. فاتسمت المرحلة بالعشوائية

هذه المشاكل كانت السبب وراء بناء مجموعة من الاطارات والـ ” قوالب ” الجاهزة اللي ممكن تُتبع من قبل فريق التطوير لضمان بناء برنامج بشكل سريع وموثوق وبنتائج مضمونة نوعاً ما ..

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

نلاحظ إن التخصص يركز بشكل كامل على دورة حياة البرنامج المراد تطويره بدءاً من فهم أهم مميزات البرنامج المراد تطويره وانتهاءً بتسليمه للعميل

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

  • نقطة مهمة جداً ..

التخصص يغلب عليه طابع الحفظ بشكل كبير وخصوصاً في بداياته .. رح تبدأ تتعرف أكثر على الاطارات المستخدمة في تطوير البرمجيات .. ومميزات كل اطار وعيوبه .. وغيرها من المعلومات النظرية البحتة .. الجانب العملي موجود في التخصص ولكنه مختزل في المشروع النهائي لكل مادة

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

ياخذوها طلاب هندسة البرمجيات .. مثل الشبكات وقواعد البيانات والـ data structure وغيرها .. لكن المواد اللي رح نتكلم عنها هي مواد التخصص الأساسية.

  • مقدمة في هندسة البرمجيات

هذه المادة رح تعطيك نبذة عن التخصص والهدف منه ورح تكون مدخل لواحد من أهم الإطارات المشهورة وهو إطار الـ waterfall بمراحله الخمسة مع شرح موجز لكل مرحلة .. وممكن تتطرق لإطارات ثانية مثل الـ agile – spiral وغيرها

  • متطلبات البرامج (Requirements)

أهم وأدسم مادة في كل التخصص .. تركز بشكل أساسي على طرق جمع متطلبات البرنامج من العميل (Requirements Gathering) وطريقة تفنيدها وتحليلها ومعرفة ما اذا كان في نقص أو تناقض في المتطلبات .. أيضاً رح تتوسع في لغة الـ UML اللغة الأم لكثير من الـ diagrams

أمثلة لأهم الـ diagrams اللي ممكن تاخذها (Activity diagram – Class diagram – Level 0 diagram – Sequence diagram – State diagram) .. وهذه الـ diagrams رح تبدأ تتعامل معها بشكل متكرر في أغلب مشاريع مواد التخصص .. مهم جداً فهمها بشكل جيد.

  • تصميم البرامج (Design)

لا يروح بالك لمفهوم الـ UI design وتصميم الواجهات .. المقصود بتصميم البرامج هنا هو تصميم الهيكل اللي رح يقوم عليه البرنامج .. الهيكل يتضمن الكلاسات اللي رح تحتاجوها .. الدوال .. البكجات .. المكتبات .. كل شي لازم يكون مشمول داخل التصميم

مرحلة التصميم تعتبر من أعقد المراحل .. لازم تركز على عدة أمور أهمها:

– هل التصميم شمل كل الـ requirements المطلوبة ؟

– هل مستوى الـ abstraction فيه عالي بحيث ممكن نعيد استخدام بعض الـ components في مشاريع مستقبلية ؟

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

مرحلة التصميم ممكن تتعدى مرحلة الهيكلة المنطقية (السوفتويرية) للبرنامج إلى الهيكلة الهاردويرية .. بحيث لازم نوفر شرح لطريقة عمل deploy للبرنامج على الهاردوير حتى يشتغل بطريقة سليمة .. هل البرنامج يشتغل على كل أنظمة التشغيل .. هل السيرفر X مناسب للبرنامج ولا سيرفر Y وغيرها.

بعد الانتهاء من مرحلة التصميم بشكل كامل .. يتم إسناد المهمة للمبرمجين حتى يحولوا الأفكار والـ diagrams المرسومة على ورق إلى أكواد شغالة بشكل صحيح

– إختبار البرامج (Testing)

في هذه المادة رح تبدأ تاخذ أهم الطرق المتبعة لإختبار البرامج والتأكد من عملها بشكل سليم .. بالإضافة إلى معرفة الطريقة الأفضل لكتابة test-cases بحيث تمتاز بالشمول والدقة في استخراج الأخطاء

– إدارة المشاريع (Project management)

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

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

  • إنتهينا من الجانب الأكاديمي .. وصار لازم نركز في الجانب الأهم .. الجانب التطبيقي والعملي .. والمستقبل اللي ينتظر طلاب هندسة البرمجيات ..

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

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

نصيحتي لك في أول سنة من التخصص .. حاول تدور على شغفك وعلى المسار اللي حابب تركز فيه ..

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

أمثلة على المسارات اللي ممكن تركز فيها:

– تطوير تطبيقات الهواتف

– تطوير تطبيقات الويب

– الأمن السيبراني وأمن المعلومات

– الحوسبة السحابية

– الألعاب والـ AR والـ VR (مستقبله واعد وخصوصاً مع قدوم الـ 5G)

– الشبكات

– إنترنت الأشياء IOT

– علم الآلة والـ AI

– المسار الأكاديمي

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

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

العائق الأكبر اللي نواجه بعد التخرج هي الخبرة .. وخصوصاً في المسارات اللي تتعلق بالتطوير .. الحل يكمن في البحث عن وظائف part-time واللي توفرها الشركات الناشئة (start-ups) بشكل كبير ولو بدون مقابل أو حتى مقابل بسيط .. الخبرة اللي رح تحصل عليها في هذه المرحلة أهم من أي عائد مادي.

كثير من الشركات التقنية الناشئة تدور على طلاب يشتغلوا على تطوير تطبيقاتهم .. والكل مستفيد .. الشركات رح تستفيد من ناحية التوفير .. وإنت رح تستفيد كـ خبرة عملية في بيئة عمل حقيقية ..

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

الخبرة العملية مهمة عند التوظيف بس بعض الشركات بدأت تفضل الـ soft-skills على الخبرات العملية ولو كانت جيدة .. مهارات مثل التقديم (presentation) العمل ضمن فريق والـ business fundamentals .. قابلية التعلم بشكل سريع .. العمل تحت الضغط .. كلها مهارات لا تقل أهمية عن خبرتك العملية.

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

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

 

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

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

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