لقب مهندس البرمجيات هو واحد من أكثر الوظائف إثارة للجدل ، ويمكن للمرء أن يحملها في صناعة البرمجيات ، يستلزم هذا المنصب وظيفة متطابقة إلى حد كبير مع مطور البرامج ، وكثيرا ما يتم استخدام الاثنين بالتبادل ليعني الشيء نفسه.وبشكل أساسي ، فإن لقب مطور البرامج هو الأكثر قبولًا مقارنة بمهندس البرمجيات ، حيث لا يزال الأخير قيد الجدل الدائم حول طبيعته الوظيفية.
أسباب الجدل القائم بين وظيفة مهندس البرمجيات ومطور البرامج
مهندس البرمجيات ليس مهندسًا حقيقيًا ، ولا يمكن تجميعه في مهن مدنية ، وكهربائية ، وإلكترونيات ، وميكانيكية وغيرها من المهن الهندسية ، فقد جاء لقب مهندس البرمجيات ، بينما كان المختصون في هذا المجال يحاولون الهروب من أن يطلق عليهم (مبرمج) ، والذي يحمل دلالة سلبية على امتلاك القليل من المهارات والقدرات ، وانطلاقا من التوازي بين المهمة الفطرية للمهندسين في البناء، وعمل بناء البرمجيات من الصفر ، بدا من المنطقي وصف الأشخاص الذين يبنون البرمجيات كمهندسين للبرمجيات.ويجادل الكثير من الناس بأن مهندسي البرمجيات ، يستخدمون المفاهيم ، والأفكار الهندسية في تصميم وبناء البرمجيات ، فالبعض يقولون أنه لم يتم تطبيقه من قبل مطوري البرامج ، والحجة الرئيسية ضد ذلك هي حقيقة أن الغالبية العظمى من مهندسي البرمجيات ، لم يخضعوا لدورة هندسة ، وبالتالي فهم غير مطلعين على المفاهيم ، والأفكار المذكورة.ومعظم مهندسي البرمجيات هم من خريجي علوم الكمبيوتر ، والقليل منهم فقط لديهم خلفية هندسية ، على الرغم من أن برامج هندسة البرمجيات ، بدأت في الظهور في عدد من المدارس ، إلا أنه لا يزال من غير المقبول عالميًا للخريجين ، حمل لقب مهندس ، وعلى الرغم من ذلك تكتسب هندسة البرمجيات ، شعبية على نطاق واسع ، ويبدو أنها مسألة وقت فقط ، قبل أن تصبح تخصصًا هندسيًا مقبولًا.وفي النهاية ، هذه مجرد معركة مربكة بين اسمين لنفس الوظيفة بالضبط ، كلاهما لا يزالان معنيين بتصميم برامج ، تلبي احتياجات المستخدم النهائي مع المستوى المتوقع من الموثوقية ، والسرعة ، والتكلفة.[1]
وظيفة مطور البرامج
مطورو البرامج هم العقول الإبداعية خلف برامج الكمبيوتر ، فيقوم البعض بتطوير التطبيقات التي تسمح للأشخاص ، بالقيام بمهام محددة على جهاز كمبيوتر ، أو جهاز آخر ، بينما يقوم البعض الآخر بتطوير الأنظمة الأساسية ، التي تقوم بتشغيل الأجهزة ، أو التي تتحكم في الشبكات.مهام وظيفة مطور البرامجعادةً ما يقوم مطورو البرامج بما يلي:
وظيفة مهندس البرمجيات
مهندسو البرمجيات هم محترفو علوم الكمبيوتر ، الذين يستخدمون المعرفة بالمبادئ الهندسية ، ولغات البرمجة لبناء منتجات البرمجيات ، وتطوير ألعاب الكمبيوتر ، وتشغيل أنظمة التحكم في الشبكة.ووفقًا لوزارة العمل الأمريكية ، كان هناك أكثر من مليون شخص ، يعملون مهندسو برمجيات في عام 2019م ، وذلك نظرًا لاعتماد المزيد منا على الأجهزة الذكية ، ومن المتوقع على مدى السنوات التسع القادمة ، ازدياد عدد مهندسو البرمجيات بنسبة 21 بالمائة.أنواع مهندسو البرمجياتمجال هندسة البرمجيات واسع ، يمتلك المهندسون مجموعات مختلفة من الخبرة التقنية ، من بناء أنظمة معلومات الكمبيوتر ، إلى الحفاظ على أمان الشبكة ، إلى إنشاء صفحات الويب التي تواجه العملاء ، هناك نوعان أساسيان من مهندسي البرمجيات:1- مهندسو النظميقوم مهندسو النظم بتنسيق إنشاء وصيانة ، ونمو أنظمة الكمبيوتر الخاصة بالعمل أو المؤسسة ، ينسقون احتياجات كل قسم ، ويقترحون التوجيه الفني ، ويقيمون أي شبكات تربط أجهزة الكمبيوتر بالشركة.[3]كما أن تكون مهندس برمجيات النظم هو خيار مهني رائع ، لشخص جيد بشكل استثنائي في التفكير الأيمن أي (المهارات التحليلية بالإضافة إلى مهارات حل المشكلات) ، ومهندسو البرمجيات النظم هم محللون غريزيون للمشكلات ، يجيدون العمل مع الآخرين ويركزون على رؤية المشكلات حتى إتمامها بنجاح.كما يجب أن يكون مهندس البرمجيات على دراية جيدة بما يلي:1- البرمجة والتشفير.2- أساسيات علم الحاسوب.3- التصميم والعمارة.4- الخوارزميات وهياكل البيانات.5- تحليل المعلومات.6- برنامج التصحيح.7- اختبار البرمجيات.2- مهندسو برمجيات التطبيقاتيقوم مهندسو التطبيقات بإنشاء ، أو تكييف التطبيقات للشركات والمؤسسات ، من خلال تحليل احتياجات المستخدم النهائي، ومن ثم يقومون بتصميم هذه التطبيقات ، أو البرامج وبناؤها وتثبيتها ، وصيانتها.مهام وظيفة مهندس البرمجياتعند العمل مع أحد العملاء ، يقوم مهندس البرمجيات عادةً بتحليل احتياجات العميل ، ثم تصميم برامج الكمبيوتر واختبارها وتطويرها من أجل تلبية تلك الاحتياجات ، فمهندسو البرمجيات هم خبراء في أنظمة الحوسبة ، وهيكل البرمجيات ، وإدراك قيود الأجهزة الموجودة ، وفي العمليات المعقدة ، وبالتالي فإن استخدام المخططات الانسيابية ، وإنشاء خوارزميات لإعلام الكمبيوتر بما يجب القيام به يتم إنشاؤه ، وعادة ما يتحمل مبرمج الكمبيوتر مسؤولية تحويل هذه التعليمات إلى لغة كمبيوتر (برمجة).[4]كما يجب أن يمتلك مهندسو البرمجيات أيضًا مهارات التعامل مع الآخرين ، وأن يكونوا قادرين على التواصل الفعال مع المستخدمين ، من أجل تدريب البرامج واختبارها وتصحيحها على طول الطريق حتى المنتج النهائي ، فهم غالبًا ما يشاركون من المراحل الأولى لتخطيط البرامج ، وصولًا إلى مراحل الاختبار والتطوير والتدريب والدعم.