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


السلام عليكم
لقد دار نقاش بيني وبين مجموعة من الطلاب حول الفرق بين مهندس البرمجيات ونظم المعلومات وبين المبرمجين. وهل يمكن للشخص العادي تحصيل معرفة مهندس البرمجبات من خلال مجموعة من الدورات.
ولكن أريد أن استمع لآراءكم قبل أن أضع وجهة نظري بالموضوع.
يكون الصمت فأساًأو براويز نجومأو مناخاً لمخاض الشجرةمحمود درويش
والله يا د.طارق أنا ما أعلمه أن الفرق بين مهندس البرمجيات والمبرمج:
أنا المبرمج هو الشخص الشخص اللذي يدعى بال (Coder)
أي هو فقط يكون على معرفة تامة بال Syntax للغة برمجة معينة ويقوم بتنفيذ المشروع المطلوب منه وأنا تقريبا أشبه هذا الشخص بالعمال اللذين يعملون لتشييد البناء فهم مايطلب منهم يقوموا بتنفيذه
أما عن مهندس البرجيات (كالمهندس المعماري) هو المسؤول عن تحليل ودراسة مشروع يطرح عليه من صاحب الشركة من جميع زواياه من الناحية المادية من ناحية السرعة في التنفيذ ...الخ
هذا ما أعلمه حول هذا الموضوع
إذا كان هناك أي شي غير دقيق في كلامي ياريت اتنبهني عليه يا د.طارق لأنو ما كتبته هو ليس الصحيح 100 %
وشكرا لهذا الموضوع لأهميته
......................إذا أتـتـنــــــي مــذمـــــة مـن نـاقــــص.................................................. ..............فـهـــي الشـهــــــادة لـي بـأنــــي كـامـــــل

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



الدراسة الأكاديمية مو هدفها تعليم لغة معينة... و إنما تعليم طريقة التفكير السليم و حل المشاكل بشكل منطقي ... بحيث بيقدر المهندس يتأقلم مع أي لغة بشوية جهد طالما عندو الأساس.
أما الشهادات من معاهد برمجة معناها انك بتعرف تستخدم اللغة الفلانية مو أكتر...والمنهاج هو أقرب لكونو catalog لهاللغة ...وما بيحتوي على مواد علمية تقريباً أبداً و حامل هالشهادة حيكون أفقو محدود جداً... يعني بتغيير شغلة بسيطة بيوقف و بيصفن "مع احترامي طبعاً"...
يعني المهندس فيو يشتغل على مشروع لحالو تماماً ... بينما حامل شهادات البرمجة بدو مين يشرف عليه و يوجهو...
هاد رأيي :)
Never tell your problems to anyone...20% don't care and the other 80% are glad you have them
أول شي بحب اشكرك أستاذ طارق عالموضوع
وبالنسبة للرأي
أنا بتفق مع big boss2 بالرأي
انو مهندس البرمجيات هو اللي عليه تحليل ودراسة المشروع من جميع نواحيه وكمان أكيد بتكون خبرته كتير كبيرة بالنسبة للمبرمج لانو ممكن غير دراستو الجامعية يكون عامل دورات ومشتغل على حالو
أما المبرمج فممكن يكون مساعد للمهندس وتحت اشرافة في عمل الكود
وبانتظار وجه نظرك
......................إذا أتـتـنــــــي مــذمـــــة مـن نـاقــــص.................................................. ..............فـهـــي الشـهــــــادة لـي بـأنــــي كـامـــــل

انا اسف كتير بس كلامك غير دقيق ابدا...بدنا نسمع رأي د.طارق بركي أنا كلامي غير دقيق 100%
اول شي خلونا نعرف المهندس: هو كل شخص بيدرس دراسة اكاديمية لتحصيل خبرة
علمية دقيقة بهدف بناء خبرة عملية بالمستقبل بتمكنو من ادارة و تنظيم خطط المشاريع و ادارة الموارد التقنية المتاحة و الاشراف على العمال.
مثال:
مهندس الشبكات بيبدأ بدراسة الموقع و حساب المواد اللازمة و طريقة و آلية التمديد
و الانظمة اللي رح يستخدما بعد دراسة الهدف من المشروع و بالنهاية بحط خطة عمل
على اساس بيشتغل العمال(هنن اللي دارسين كم دورة شبكات).
بعد هالمقدمة هلأ لازم نعرف مهندس البرمجيات
هو مهندس يمتلك القاعدة المعرفية اللي بتمكنو من التخطيط و وضع الاسس و البنى
لانشاء برامجيات ذات استعمالات تطبيقية(نظام ادخال معلومات عن المرضى في مستشفى)
أو (نظام لقراءة الصور الشعاعية و تشخيص الخلل).
هلأ السؤال هو كيف بيتم و ضع الاسس هي و شو هي القاعدة المعرفية اللازمة؟
طبعا على مهندس البرمجيات ان يكون على دراية بانواع البرمجة بشكل عام و ان يعرف
كيف يختار النوع المناسب للبرنامج المناسب كأن يعرف مثلا ان يستخدم البرمجة غرضية التوجه(OOP)
لهذا البرنامج و البرمجة المنطقية لذاك او ان يستخدم لغة التجميع(Assembly) لهذا و ....
و بالنسبة لمهندسي المعلوماتية هي الاشياء بنبدا نتعلما من البرمجة1(PR1) و حتى نوصل
لـ لغات البرمجة(PL) (اللي اغلب الطلاب لقوها بلا طعمة للاسف) و كمان بغير مواد.
الشغلة التانية اللي لازم مهندس البرمجيات يكون على دراية فيها هي الخوارزميات, و بكلمات
تانية كيف لازم يكتب برنامج ذو كفاءة اعلى بتكلفة اقل باستخدام انسب الـ(Data Structures)
المتاحة او تصميم انواع جديدة في حال عدم توافر الانسب و طبعا هالشي منتعلمو بمادتين
(ADS; Algorithms and Data Structures و مادة AAD Algorithms Analysis and Design)
و من الشغلات المهمة كمان اللي لازم يتعلما مهندس البرمجيات هي تصميم و تحليل النظم
(System Analysis and Design;SAD)
و هي كيف المهندس لازم يبدا تصميم نظام و كيف رح يدير الموارد ضمن هالمشوع ليوصل
لاحسن النتائج مع اقل كلفة ممكنة
بالاضافة لاشياء كتيرة تانية كالمعرفة الاكاديمية لتصميم قواعد البيانات(DB1,DB2,ADB) و امور الشبكات(NS,CN) و انظمة التشغيل(SP,OS1,OS2)
و الامن بالاضافة لاخلاقية العمل و تاثيرو عالمجتمع(C&S) و البيئة(Ecology) و الاقتصاد و ....
اكيد هي الامور ما ممكن يتعلما الانسان الا من خلال الدراسة الاكاديمية الطويلة
بالجامعة اما انو يتعلم لغة برمجة و يحفظ كيف ممكن يعمل نظام لمحل البسة فهادا
امر سخيف و بعيد جدا عن مهندس البرمجيات وهادا هو اللي بصير فعلا بالدورات اللي بسمي
طلابا حالن للاسف مبرمجين.
اما بالنسبة للكودر فهو شخص على علم بلغة برمجة(ربما مبرمج تحت التدريب)
و المطلوب منو هو انو ياخد برامج مجردة و يكتبا بلغة البرمجة المطلوبة و هادا العمل
اكيد بدأ بالتلاشي بسبب التقنيات الحديثة كاستخدام الـ (UML) و غيرا من التقنيات
اسف عالاطالة بس الموضوع فعلا مهم و بحاجة لشرح اكتر لسى
و بتمنى اني كون فدت الكل
Do not fear the darkness... fear what hunts in itThe Devil Is Mine
لا أعلم إن كان يسمح لي بالمداخلة و أنا من خارج الجامعة , لكن قد يكون لعلاقة الصَّداقة مع الأستاذ طارق ما يشفع لي :) .
الأكاديميّون مؤمنون تماماً أنَّ مهندس البرمجيّات يضع مخططات uml في أحسن الأحوال و المبرمجون يضربون بهذا الكلام عرض الحائط ..
سأدلي برأيي كسؤال :
هل يمكن لمن لم يلطِّخ يديه بآلاف الأسطر البرمجيّة أن ينشئ تحليلاً ناجحاً لمشروع ؟
و اللَّبيب يجيب .
شكراًَ
موقعي الشخصي
السلام عليكم ...
في رأيي المتواضع أن مرحلة المبرمج هي مرحلة ضمنية من مراحل مهندس البرمجيات الناجح , يحصد نتائجها في اطار توسيع افاقه , ولا يقف عندها كمن يعمل تحت مسمى مبرمج ....
فتعقيدات البرمجيات اليوم تحتاج منا الكثير من التحليل , ففي رأيي كل دقيقة في التحليل توفر مئات الاسطر البرمجية (لطالما وجدت مبرمجين محترفين جداً , أعادوا كتابة الكود عدد من المرات !!!!!) اضافة الى وجود الكثير من أدوات نمذجة الكود(متل Code Smith الجبار).
ختاماً , مفهوم الانتاجية في المشاريع البرمجية أصبح اليوم يعتمد على دقة الحل وعائده على محتاجه وليس على كمية الكود المكتوبة كما كان في السابق , والاهم في ذلك هو أن لا نقوم بعزل مفهومي هندسة البرمجيات و البرمجة , لانها الاخطاء البرمجية الحالية ستوفر بيئات هندسة الحلول المستقبلية .
شكراً جزيلا أستاذ طارق