الكثير يظن ان مهندس البرمجيات(او علوم الحاسبات) مجرد مبرمج

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

بالبداية صحيح مهندس البرمجيات لا بد ان يعرف البرمجة لان هذا امر اساسي

و لكن ما يتعلمه و ما يفترض ان يقدمه في وظيفته اكبر بكثير من مجرد كتابة كود برمجي!

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

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

فالمسألة في البرامج الضخمة ليست مجرد كتابة كود يقوم بالوظيفة المطلوبة, بل تتطلب ما يلي

1- فهم متطلبات البرنامج اي ما هي المدخلات و ما هي المخرجات المطلوبة و تصميم واجهة البرنامج للمستخدم

2- تصميم البرنامج تبعا للمتطلبات

3- تصميم البرنامج بحيث بالامكان بسهولة التعديل عليه و سهولة تتبع الاخطاء و اصلاحها او ترقية البرنامج لاحقا

4- تنفيذ التصميم اي كتابة الكود, و هنا الامر يتطلب احترافية ايضا فالمطلوب من الكود ان يتطلب اقل ذاكر و ينفذ باقصر وقت

هذه المسألة جدا مهمة فمثلا مبرمج هاوي قد يكتب البرنامج و لكن يتطلب 4 جيجا رام و بينما مبرمج محترف قد لا يتطلب اكثر من 1 جيجا

بالاضافة لامور متشعبة مثلا كتابة البرنامج كسورس كود و جعله مناسب لترجمته ليناسب اكثر من نظام تشغيل بل احيانا وضع في الحسبان امكانية تشغيله على عتاد ذو معمارية مختلفة

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

5- بعد تنفيذ البرنامج, ياتي دور فحص البرنامج للتأكد بانه يوافق المتطلبات و خالي من الاخطاء و اي خلل يتم التعديل من خلال الرجوع للنقطة 2 او 3 او 4

بالتالي هل شخص هاوي بامكانه تنفيذ كل ذلك؟! اشك بذلك جدا! الا لو كان يملك خبرة عشر سنوات او اكثر او تعلم اساسيات هندسة البرمجيات من خلال التعليم الذاتي

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