تخصص هندسة البرمجيات رحلة ممتعة مليئة بالعلم والإبداع, مقال بعنوان ما هو تخصص هندسة البرمجيات | ما وظيفتك بعد التخرج وماذا ستتعلم؟ ما هي أهم المفاهيم التي يجب ان تعرفها مثل SDLC وغيرها, بالإضافة للتخصصات المنافسة وكيف تطبق العلم.
انا حسام صالح درست هندسة البرمجيات في 3 سنوات ونصف بمعدل امتياز وسأتكلم في هذا المقال عن التخصص وعن الدراسة الجامعية لهذا التخصص بالتحديد.
مجموعة فيديوهات تشرح تخصص هندسة البرمجيات في هذه القناة
ننصحكم بمتابعة هذه الفيديوهات وايضا دراستها جيداً
تعريف تخصص هندسة البرمجيات
تخصص هندسة البرمجيات هو تخصص من تخصصات تكنولوجيا المعلومات (IT) القوية جداً, وله تخصصات منافسة مثل تخصص علم الحاسوب, الذكاء الإصطناعي, علم البيانات وغيرهم.
ما هو التخصص بأبسط تعريف ممكن وماذا تستطيع ان تقوم به بعد التخرج ؟
ما هو التخصص بأبسط تعريف ؟
لنتفق في البداية ان البرمجة هي كتابة برمجية بلغة برمجة معينة لنقوم بعمل منتج نهائي يقوم بوظيفة معينة بغض النظر عن اذا كانت تحل مشكلة ام لا, اما الهندسة فهي تصميم وبناء الأشياء باستخدام المفاهيم الرياضية والعلمية.
الآن ندمج الهندسة مع البرمجة يمكننا ان نقول هندسة البرمجيات
ماذا تستطيع ان تقوم به بعد التخرج وما هي وظيفتك ؟
وظيفتك كخريج هندسة برمجيات تعتمد عليك وعلى سوق العمل ! كيف ؟
كما عرفنا سابقاً ان الهندسة هي بناء الأشياء باستخدام المفاهيم العلمية لذلك يمكنك تعلم البرمجة في فرع معين وتطبيق هندسة البرمجيات عليها
مثلاً: هناك عدة اختصاصات برمجية مثل
1. تطوير الويب
2. تطوير التطبيقات
3. تطوير الألعاب
4. علم البيانات وتحليل البيانات
5. الذكاء الاصطناعي
6. أمن المعلومات
7. تطوير البرمجيات الخاصة
8. تطوير الألعاب الواقع الافتراضي
9. تطوير برامج إدارة الأعمال
وبهاذا يمكنك ان تقوم بتطبيق المفاهيم على هذه الاختصاصات
في الأردن تقوم الشركات بتوظيف مهندس البرمجيات في البداية في البرمجة فقط دون الدخول في دوامة دورة حياة تطوير البرمجيات SDLC وهو ما سنتطرق اليه بعد قليل, وبعد ان يتعلم اساسيات ومفاهيم هندسة البرمجيات مع الوقت سيتم ترقيته الى منصب من مناصب مهندس البرمجيات
هل تخصص هندسة البرمجيات خيار جيد ؟
إذا كنت تستمتع بحل المشاكل وتمتلك مهارات تحليلية قوية، فربما تجد في مجال الهندسة البرمجية خيارًا مثيرًا لمستقبلك، خاصةً في ظل تقدم التكنولوجيا السريع والطلب المتزايد على مطوّري البرمجيات بوتيرة أسرع من المعدل الوطني (التوجيهي).
اختيار مهنة مهندس برمجيات يمنحك الفرصة للعمل في مجموعة متنوعة من المجالات والصناعات، حيث يعتمد العديد على البرمجيات في مختلف نواح حياتهم. سواء كنت مهتمًا بالمال والأعمال المالية، أو الرفاهية، أو الرياضة، أو حتى العقارات، ستجد فرصًا وظيفية واسعة المدى تنتظر مهندسي البرمجيات.
وتضاف إلى ذلك، يوفر هذا المجال مرونة كبيرة في مكان العمل، حيث يُمكنك العمل من المنزل لصالح شركات في مناطق أخرى أو حتى دول أخرى، شرط أن تكون قادرًا على احترام المواعيد النهائية وتسليم المشاريع في الوقت المحدد.
ما هي أهم 3 مهارات يجب ان تمتلكها كمهندس برمجيات؟
حل المشكلات (Problem Solving)
– مفهوم أساسي لكل مهندس برمجيات، حيث يتعين عليه فهم وتحليل التحديات التقنية.
– القدرة على تقسيم المشاكل الكبيرة إلى مشاكل صغيرة قابلة للحل.
– استخدام التفكير النقدي لتحديد الأخطاء وتصميم حلول فعالة.
برمجة كائنية التوجه (Object-Oriented Programming)
– نهج برمجي يركز على تنظيم البرنامج حول “الكائنات” التي تجمع البيانات والوظائف ذات الصلة.
– يسهم في تنظيم الشيفرة وجعلها قابلة لإعادة الاستخدام وصيانتها بشكل أفضل.
– يعزز فهمًا أعمق للبرنامج ويسهم في تطوير تطبيقات مرنة وقابلة للتوسع.
الخوارزميات (Algorithms)
– تصميم وتحليل الخوارزميات الفعّالة لحل المشكلات بشكل أمثل.
– فهم الأساسيات مثل البحث والفرز يعزز الأداء البرمجي.
– القدرة على اختيار الخوارزمية المناسبة لحل مشكلة محددة.
قواعد البيانات (Database)
– فهم كيفية تخزين واسترجاع البيانات بشكل فعّال وآمن.
– استخدام لغات استعلام قاعدة البيانات مثل SQL.
– قدرة على تصميم وصيانة قواعد البيانات وفهم مفاهيم العلاقات بين البيانات.
ما هي هو العلم المكتسب من هندسة البرمجيات وما هي المفاهيم الخاصة فيه ؟
فلنبدأ بمتى بدأ علم هندسة البرمجيات ولماذا تم اصداره ؟
هندسة البرمجيات من أوسع التخصصات التي تم البدء فيها وفي دراستها والعمل بها بعد ما يسمى “software Crisis” ما يعني أزمة البرمجيات وبدأت هذه الأزمة في 1960 وذلك بأن المشاريع البرمجية كان تضع الشركات البرمجية لإنهاء برنامج ميزانية مالية معينة ووقت معين لإنهاء هذا المشروع ولكن كان يأخذ أضعاف ما كان يخطط له, لذلك تم استنتاج انه نحن في حاجة لتخصص ليقوم بدراسة كافة مراحل المشروع البرمجي وما يسمى ب “SDLC : Software Development Life Cycle” دورة حياة تطوير البرمجيات وهذا مفهم مهم جداً ويجب على كل مبرمج معرفته مهما كان تخصصه.
دورة حياة تطور البرمجيات SDLC :
قبل قراءتك لدورة حياة التطوير يجب ان تعلم أنه لم يتفق جميع مهندسي البرمجيات على مسميات هذه الخطوات او فصلها او جمعها فبعضهم يجمع خطوتين او ثلاث في خطوة واحدة, ويعتبر كل هذا صحيح ما دام يحقق المطلوب من العلم.
الخطوات:
التخطيط (Planning):
- تحديد نطاق المشروع والأهداف والجداول الزمنية والموارد المطلوبة.
- تحديد متطلبات المشروع والقيود.
- وضع خطة المشروع، بما في ذلك الميزانية والجدول الزمني.
دراسة الجدوى (Feasibility Study):
- تقييم الجدوى التقنية والتشغيلية والمالية للمشروع.
- تحديد المخاطر والفوائد المحتملة.
- اتخاذ قرار بشأن ما إذا كان يجب متابعة المشروع.
تحليل المتطلبات (Requirements Analysis):
- جمع وتحليل متطلبات التفصيلية من أصحاب المصلحة.
- تحديد وظائف النظام والقيود وتوقعات المستخدم.
- إعداد وثيقة المتطلبات التفصيلية.
تصميم النظام (System Design):
- وضع هندسة النظام الكلي.
- تحديد هياكل البيانات ومكونات البرمجيات والواجهات والخوارزميات.
- إعداد مواصفات التصميم التفصيلية.
التنفيذ (Coding):
- كتابة وبرمجة واختبار مكونات البرمجيات استنادًا إلى مواصفات التصميم.
- إجراء اختبارات الوحدة للتأكد من عمل وحدات البرنامج الفردية بشكل صحيح.
الاختبار (Testing):
- إجراء مستويات متعددة من الاختبار
- Unit testing “اختبار الوحدة”
- model testing “اختبار الاندماج”
- system testing “اختبار النظام”
- acceptance testing “اختبار القبول”
للتأكد من أن البرمجيات تلبي المتطلبات المحددة وخالية من المشاكل المنطقية.
- تحديد وإصلاح العيوب.
النشر (Deployment):
- نشر البرمجيات في بيئة الإنتاج (مثل رفعها على استضافة اذا كانت موقع او رفعها على سيرفر او على App store, Google play اذا كان تطبيق موبايل.
- إجراء جولة نهائية من الاختبار للتأكد من أن النظام المنشور يعمل بشكل صحيح في بيئة الإنتاج.
الصيانة والدعم (Maintenance and Support):
- التعامل مع الأخطاء والمشكلات التي تظهر بعد النشر.
- إجراء تحسينات على البرمجيات لتلبية المتطلبات المتغيرة.
- تقديم الدعم والصيانة المستمرة حسب الحاجة.
ما هي مهامك اليومية كمهندس برمجيات ؟
- تصميم وصيانة أنظمة البرامج
- تقييم واختبار برامج البرمجيات الجديدة
- تحسين أداء البرامج من حيث السرعة وقابلية التوسع
- كتابة واختبار الكود البرمجي
- التشاور مع العملاء والمهندسين وخبراء الأمن وأصحاب المصلحة الآخرين
- عرض الميزات الجديدة لأصحاب المصلحة والعملاء الداخليين
كم راتب مهندس البرمجيات؟
- راتب مهندس البرمجيات في الأردن يبدأ من 750 ويصل حتى 3000 دينار
- في الولايات المتحدة الأمريكا يبدأ من 70 ألف دولار سنويا أي 5000 دولار شهرياً ويصل 220 ألف دولار سنويا أي 18 دولار شهرياً وهذا كله دون الحوافز
ما هي المهارات التي يجب ان تمتلكها كمهندس برمجيات ؟
مهارات وصفات مهندسي البرمجيات
مهندسو البرمجيات يقومون بتصميم وتطوير البرمجيات للمساعدة في حل المشكلات، ولذلك يتطلب الأمر مستوى معين من الخبرة التقنية إلى جانب مهارات التواصل العالية. لذا يجب أن يمتلك مهندسو البرمجيات كل من المهارات التقنية والمهارات اللينة.
فيما يلي قائمة بمختلف المهارات والصفات التي يجب أن يمتلكها مهندسو البرمجيات:
1. المعرفة بلغات البرمجة وبرمجة الكائنات مثل Python، JavaScript، C أو C++.
2. الانتباه العالي للتفاصيل مطلوب لدى مهندسي البرمجيات، حيث يجب عليهم تتبع تفاصيل معقدة متعددة تتعلق بمشاريعهم.
3. المعرفة الأساسية في علوم الحاسوب بمفاهيم تشمل أنظمة التشغيل، نظم قواعد البيانات، وشبكات الحواسيب.
4. يجب أن يكون معظم المحترفين في هندسة البرمجيات على دراية بمجموعة من أنظمة التشغيل، بما في ذلك Linux، واستخدام أنظمة إدارة قواعد البيانات مثل SQL.
5. نظرًا لأن مهندسي البرمجيات نادراً ما يعملون بمفردهم، فإن مهارات التواصل أمر بالغ الأهمية في جميع أدوار هندسة البرمجيات. حيث يتحملون مسؤولية شرح أهداف مشاريعهم بشكل فعّال لأفراد الفريق والمعنيين بالمشروع بلغة فنية وغير تقنية.
6. مهارات حل المشكلات هي الأكثر أهمية لهذا الدور حيث يتعين على مهندسي البرمجيات حل مشاكل البرمجة والأخطاء بشكل متكرر.
7. يتعين على مهندسي البرمجيات الاستمرار في تحديث وصيانة مجموعة مهاراتهم لتلبية متطلبات التكنولوجيا المتغيرة.
8. يجب أن يكون لديهم معرفة بهندسة وتصميم قواعد البيانات.
9. يجب أن يكونوا ملمين بإدارة المشاريع بطرق Agile وScrum.
10. يجب على مهندسي البرمجيات على الأقل معرفة مبادئ أساسية لحوسبة السحابة، نظرًا لارتفاع الطلب في السوق على مطوري ومهندسي السحابة.
11. يحتاجون إلى معرفة في التحكم في الإصدار لمساعدة فرق البرمجيات في إدارة التغييرات على شيفرة المصدر على مر الوقت.
12. يجب عليهم أن يكونوا خبراء في استكشاف الأخطاء واختبار البرمجيات، حيث يمكنهم إصلاح الأخطاء في برنامج البرمجيات قبل إطلاقه للجمهور.