لماذا المهندسين هم الذين يقومون ببرمجة كبار البرامج وليس المبرمجين
- محمد القيسي
- 2014-07-14T18:58:30+00:00
ارى ان اكثر لغات البرمجه ونظم التشغيل كانت من صنع المهندسين وليس المبرمجين وان كبار الموضفين في الشركات الكبرى هم مهندسين فهل هذا يعني ان المهندسين افضل من المبرمجين في برمجة مثل هذه البرامج الكبيره
هل لديك دلائل لدعم هذه الكلام ؟
اول دليل هو المسمى "مهندس البرمجيات" و "مبرمج".
مهندس البرمجيات هو الذي المسؤول عن انشاء البرنامج كاملاً توفير المتطلبات، الخوارزميات، الرسوم البيانية، التسنيد (Documentation) في المقابل المبرمج يتعامل مع لغة البرمجة. أي يترجم الخوارزميات المكتوبة أمامه الى شفرة برمجية فقط. ولا يطلق على المبرمج مهندّس ولا اظن هناك تخصص جامعي فقط يعلم البرمجة.
أعتقد أن الخط الفاصل بين مهندس البرمجيات والمبرمج شبه معدوم كمبرمج أستطيع القيام بالعديد من الأمور التي من المفترض أن يقوم بها مهندس البرمجيات وليس ذلك فحسب بل تتداخل الأدوار ويصبح المبرمج مديرا لقواعد البيانات إن إقتضت الحاجة.
في الوقت الحالي أصبحت هناك إلى شخص يستطيع إرتداء أكثر من قبعة بل أن هذا النوع يعتبر مطلوباً أكثر من المتخصص البحت.
ليس معدوماً هنا أقصد، يستطيع المبرمج عمل تطبيق بدون الحاجة الى مهندس برمجيات وينجح في عملة وكما قلت يستطيع ان يرتدي أكثر من قبعة ولكن في بعض الحالات.
فمثلاً: عندما يريد المبرمج عمل تطبيق مثل المدونة او مشابه لـ Arabia.io قد ينجح في هندسته لوحده او مع فريق مبرمجين كلهم يلبسون أكثر من قبّعة ولكن تخيل عمل شركات البرمجيات الكبرى مثل Adobe و Google.
المبرمج فنّي يتعامل مع لغة البرمجة، كأغلب الهواة. ولديه معلومات عامة عن التحليل والتصميم. (لا اقصد تصميم الواجهات هنا)
مهندس البرمجيات: يتعامل مع التحليل والتصميم، ولديه معلومات لابأس بها عن لغات البرمجة. (بحكم دراستة الجامعية)، ومهندس البرمجيات قد درس مناهج علمية لضمان عمل البرنامج لمدة طويلة وقد تكون مدى الحياة. وبتحديثات مستمرة لاتنقطع.
فتخيّل ان مبرمجاً بداء في كتابة كود وصمم ايضاً قاعدة بيانات وصنع برنامج مثل Photoshop في اول اصدار تجريبي له. وانتهت مدة عمل هذا المبرمج في الشركة. ثم احتاجت الشركة تطوير هذا المنتج للأفضل واستدعتني الشركة كمبرمج. (أحتاج وقت لكي أفهم ماكتبه المبرمج السابق) حتى استطيع التطوير حتى ولو كان التطوير شيئاً يسيرا. فعندما انتهي من عملية التطوير. تستدعي الشركة مبرمج اخر فليكون أنت. تحتاج مدة قرابة ضعف المدة التي قضيتها أنا في دراستي لشفرة المبرمج السابق ويحتاج المبرمج الذي سوف يأتي بعدك قرابة أربع اضعاف المدة. على حسب معدّل تضخم البرنامج.
لذلك وجد علم (هندسة البرمجيات)، فما دور مهندس البرمجيات هنا. هو تقليص وقت دراسة الشفرة (بالنسبة للمبرمج) فبعد عمل مهندس البرمجيات. المبرمج يحتاج فقط دراسة الجزئية التي سوف يعمل عليها ويعرف مالذي يضيف لها ولا يحتاج التفرع الى جزئيات أكثر.
ماهي الاشياء التي يقوم بها مهندس البرمجيات بالضبط ؟ سوف أستحق ساندويتش شاورما على حسابك في موضوع سوف اطرحه لاحقاً أوضح فيه ما اعرف عن عمل مهندس البرمجيات واتبادل مع الجميع الخبرات في هذا المجال.
ولكن هل الكاتب يقصد مهندس حاسوب او مهندس برمجيات ؟
اذا كان يقصد مهندس برمجيات فكلامه صحيح نسبيا و لكن كل مهندسي البرمجيات هم مبرمجين و هندسة البرمجيات هي تخصص من تخصصات علوم الحاسوب ( و ليس هندسة الحاسوب )
نعم اخي لدي دلائل فمخترع ال #c هو مهندس وهو نفسه من اخترع تيربو باسكال ومطوري نظام الاندرويد هم مهندسين (هذه ما قرأته في الكثير من المواقع اما بلنسبه لكونهم مهندسي برمجيات ام حاسوب فالحقيقي لا علم لدي ولكن اضنهم مهندسي حاسوب)
نقطتك ليست واضحة, ماذا تقصد بمهندس؟
المهندس فى عرفنا هو المتخرج من كلية الهندسة, أما فى العالم الغربى فالمهندس هو أى شخص يعمل فى مجال الصناعات الهندسية, و غالبا ما يكون فى الغرب فنى بلا شهادة علمية و لكن ذو خبرة, أو لديه بضع كورسات.
يطلق على المبرمج أو المطور أيضا Software Engineer, و بحسب معرفتى فان معظم المبرمجين يكتبون مهنتهم كمهندس برمجيات أو software engineer.
لو كنت تقصد المهندسين الغير متخصصين فى الحاسوب, فكانت لهم اسهاماتهم المهمة فى عالم البرمجة, مثلا ستيف ووزنياك هو مهندس الكترونيات, و هو من صمم نظم تشغيل أبل الاولية كلها DOS 3.3 و Prodos و هى نظم التى كانت تعمل عليها اجهزة أبل 2 (قبل الماك).
بقية المبرمجين المهمين ليسوا مهندسين, بعضهم لم ينل شهادة فى اى شىء حتى, مثل أندرس هيزنبرج الذى كتب و أشرف على تطوير معظم لغات البرمجة التى نستخدمها اليوم مثل دلفى, و فيجوال سى#.
السلام عليكم اخي نعم قصدت بالتحديد أندرس هيزنبرج فقد قرأت انه مهندس (واعتقدت انه مهندس كمبيوتر ) هذا رجل رائع فقد مجرد قرات سيرته الذاتيه وقرائت لقب مهندس تجعلك تشك في امكانيات المبرمج ولكن هل انت متاكد انه لا يحمل شهاده ابدا
"المهندس" أو يمكن أن يكون مبرمج.
مثلا خوارزميات الحماية و التشفير قام بابتكارها خبراء في علم التشفير، و هم طبعا يعرفون البرمجة، و يطبقون نظرياتهم، هذا يعني أنهم كذلك مبرمجين.
لكن ليس كل مبرمج مهندس.
اليلام عليكم
من أين لك هذا الكلام؟
اخي الكثير من الذين قامو باختراع لغات البرمجه ونظم التشغيل هم مهندسين ولا اضنهم نهندسين برمجيات بل كمبيونر فمن قام باختراع #c هو مهندس في مايكروسوفت اسمه اندرس وقام باختراع تيربو ياسكال فبلها ومن اخترع نظام التشغيااندرويد هنم مهندسين
أنا أدرس البرمجة بشكل مستقل
و أدرسها بشكل أكاديمي بحكم دراستي الجامعية
و أجزم لك بأن هناك طلاب سوف يتخرجون بشهادة هندسة معلوماتية لا يستطعون برمجة أكثر من آلة حاسبة
و هناك أشخاص لم يدرسوا في الجامعات أبدا و لا يحملون شهادة الهندسة و لكن حبهم للبرمجة جعلهم يتفوقون على المدرسيين الجامعيين
الميزة التي قد يملكها المهندسون هي معرفتهم بالخوارزميات عكس أغلب المبرمجين الغير أكادميين و الذين بدأو تعلمهم بلغة برمجة معينة دون الرجوع للخوارزميات و لكن بالنهاية الخوارزميات هي طريقة تفكير و مع الممارسة سوف لن يحتاجها المبرمج الغير أكاديمي كثيرا
أنا أعرف المناهج و أرى كيف يجلب الطلاب العلامات التي تؤهلهم لعمل الماجستر و الدكتوراة
و ما الدراسة الجامعية سوى عملية حفظ معلومات ثم استرجاعها + إعطاء الطالب جميع اللغات البرمجية تقريبا و الكثير من المواد التي ليس لها علاقة بالبرمجة و بالتالي يصاب بالتشتت
أما المبرمج الغير أكاديمي إن أحب المجال فهو سوف يتفرغ له و يختص بلغة واحدة و يكون مقياس نجاحه هو إبداعه و عمله و ليس علاماته
وأنا لا أعمم المسألة فقد يوجد من يتفوق على المدرسيين الجامعيين و يوجد من لا يقارن بهم (فالتعميم دائما خاطئ )
مهندس البرمجيات ينصب عمله على دورة حياة البرنامج فهو الذي يقابل العميل ويفهم منه ماذا يريد
يقوم بالتخطيط والتصميم والتكويد ( وربما مهمة التكويد تحال الى مبرمج ) ومن ثم الاختبار والصيانة
في تخصص هندسة البرمجيات نأخذ مواد برمجة ولكن مقارنة بمتخصصي علوم الحاسوب فهم اقوى منا في البرمجة
لذلك نجد اغلب المبرمجين هم خريجي علوم الحاسوب
أهمية مهندس البرمجيات بدأت تزداد مع ازدياد حجم البرامج فلا يمكننا مثلا عمل موقع مثل فيسبوك وتكليف مجموعة مبرمجين بالعمل
من دون مهندسي برمجيات .. !! لان هندسة البرمجيات تساعد في تقليل الاخطاء وخلق برنامج ممتاز
مهندس برمجيات هو المسمى الوظيفي المطلوب كثيرا، مبرمج يبقى مجرد مسمى يحمله المستقلون في أعمالهم
مجتمع للمبرمجين من جميع المستويات لتبادل المعرفة والخبرات. ناقش لغات البرمجة المختلفة، الحلول البرمجية، والمشاريع.