الفرق بين المبرمج و مهندس البرمجيات
الكثير يظن ان مهندس البرمجيات(او علوم الحاسبات) مجرد مبرمج
و بالتالي اي شخص تعلم البرمجة و لديه خبرة ما, فيمكنه ان يحل محله
بالبداية صحيح مهندس البرمجيات لا بد ان يعرف البرمجة لان هذا امر اساسي
و لكن ما يتعلمه و ما يفترض ان يقدمه في وظيفته اكبر بكثير من مجرد كتابة كود برمجي!
كتابة برنامج بسيط بالامكان ان يقوم بها اي شخص يعرف البرمجة
و لكن بالنسبة للبرامج الضخمة كمثال المتصفحات و الالعاب و برامج المونتاج و غيرها.. يتطلب تصميمها شخص مختص كمهندس البرمجيات او على الاقل قريب من هذا المجال
فالمسألة في البرامج الضخمة ليست مجرد كتابة كود يقوم بالوظيفة المطلوبة, بل تتطلب ما يلي
1- فهم متطلبات البرنامج اي ما هي المدخلات و ما هي المخرجات المطلوبة و تصميم واجهة البرنامج للمستخدم
2- تصميم البرنامج تبعا للمتطلبات
3- تصميم البرنامج بحيث بالامكان بسهولة التعديل عليه و سهولة تتبع الاخطاء و اصلاحها او ترقية البرنامج لاحقا
4- تنفيذ التصميم اي كتابة الكود, و هنا الامر يتطلب احترافية ايضا فالمطلوب من الكود ان يتطلب اقل ذاكر و ينفذ باقصر وقت
هذه المسألة جدا مهمة فمثلا مبرمج هاوي قد يكتب البرنامج و لكن يتطلب 4 جيجا رام و بينما مبرمج محترف قد لا يتطلب اكثر من 1 جيجا
بالاضافة لامور متشعبة مثلا كتابة البرنامج كسورس كود و جعله مناسب لترجمته ليناسب اكثر من نظام تشغيل بل احيانا وضع في الحسبان امكانية تشغيله على عتاد ذو معمارية مختلفة
كذلك قد يتطلب الامر ربط البرنامج بالانترنت و ضرورة استخدامه في انظمة موزعة كل هذا يتطلب عمل اضافة و معرفة عميقة
5- بعد تنفيذ البرنامج, ياتي دور فحص البرنامج للتأكد بانه يوافق المتطلبات و خالي من الاخطاء و اي خلل يتم التعديل من خلال الرجوع للنقطة 2 او 3 او 4
بالتالي هل شخص هاوي بامكانه تنفيذ كل ذلك؟! اشك بذلك جدا! الا لو كان يملك خبرة عشر سنوات او اكثر او تعلم اساسيات هندسة البرمجيات من خلال التعليم الذاتي
بينما مهندس البرمجيات (المفترض) ان كل ذلك قد درسه نظريا و قام بعدة مشاريع اثناء الدراسة و بالتالي بخبرة بسيطة من بضعة اشهر الى سنة او سنتين بالكثير بامكانه العمل على برامج ضخمة و باحترافية.
اعتقد ان وصف المتعلم الذاتى بالهاوى هو خطأ
تذكر ان شركات كبرى مثل جوجل وفيسبوك ومايكروسوفت يمكنك العمل بها بدون شهاده هندسه
اعرف احد اصدقائى خريج تجاره ويعمل مبرمج لدى مايكروسوفت
الامر يعتمد على الخبره فقط
وايضا لا تقول لى ان الجامعه تعطى خبره اسرع , لان لو كان الامر كذلك لماذا شركات كبرى تدفع المال لهاوى ليعمل عندها ؟ !!!
كما ذكرت البرمجة اي كتابة الكود بحد ذاتها ممكن يقوم بها اي شخص و لكن تصميم البرامج الضخمة يتطلب شخص ذو معرفة نظرية عميقة
الامر اشبه ببناء بيت الخرائط يضعها مهندس بينما التنفيذ ممكن ان يقوم به مقاول ليس بمهندس
الامر يعتمد على الخبره فقط
لو كان الامر كذلك لما كان هناك حاجة للكليات و المعاهد خصوصا في الدول الرأسمالية
الخبرة بمفردها او المعرفة النظرية بمفردها غير كافية ابدا(الا في الامور البسيطة)
وايضا لا تقول لى ان الجامعه تعطى خبره اسرع , لان لو كان الامر كذلك لماذا شركات كبرى تدفع المال لهاوى ليعمل عندها ؟ !!!
ليس في كل المجالات هناك مجالات لا يعمل بها الا لمن شهادة اكاديمية
في الشركات الكبرى معظم ابحاثهم او الكثير منها هي مشاريع بحثية لحملة الدكتوراه و الماجستير و ايضا يستقطبوهم للعمل الدائم
تحياتي أخي، المقال أعلاه يحدثك كيف أن مهندس البرمجيات يدير المشروع كاملاً ويهتم بما يتعلق بالميزانية والحاجة وتقصير الأكواد وإمكانية إجراء الصيانة، جميع الشركات توظف مهندس البرمجيات ليتولى بناء المشروع والإشراف عليه، في الكثير من الأحيان فإن مهندس البرمجيات لا يقوم بكتابة الأكواد، بالتأكيد فإن كتابة الأكواد ليست مستعصية عليه ولكنها أبسط شيء يمكنه القيام به فهو يتعلمها في أول سنتين في الجامعة، ولكن هناك أشياء ذات أولوية أكبر كإدارة الميزانية ووضع خطة سير المشروع مع الاهتمام بالجوانب الاقتصادية، إضافةً لبناء الخوارزميات المعقدة والتعامل مع قواعد البيانات الضخمة باستخدام علم الصمفوفات، وصولاً للمرحلة النهائية وهي حماية التطبيق عن طريق التشفير، بالتأكيد مدير المشروع هذا لن يعمل وحده فقد يحتاج أيضاً إلى مهندسي شبكات وذكاء اصطناعي إضافةً للمصممين والمسوقين وفريق الدعم الفني، وأيضاً مبرمج يكتب الأكواد بعد إملاء التعليمات عليه، وهنا نأتي على ذكر صديقك، فقد يكون موظفاً في العمل كمبرمج، وليس مهندس مشروع كامل وهنا الفرق، بكل حال ليس من الضروري أن تحمل شهادة في الهندسة لكي تجيد بناء مشروع كامل، ولكن عليك أن تكون ملماً بالكثير والكثير من علم الرياضيات والتشفير والخوارزميات والكثير من الأشياء التي لا تعد ولا تحصى، يمكن لشخص عادي يملك إنترنت أن يبحث عن كورسات لما ذكرته سابقاً، غالباً ستكون إما مدفوعة أو باللغة الإنجليزية، وسيكون عليه بذل مجهود كبير وقضاء سنوات في التعلم، ولكن أليست علوم الحاسب تلك التي يبحث عنها متوفرة جميعاً في الجامعة، إذاً من قال بأن الجامعة ليست مهمة؟ هي مهمة لأنها تختصر عليك عناء البحث عن ما هية العلوم التي ستحتاجها لبناء مشاريع قوية واحترافية وتدرسها لك إضافةً لوجود تعليم جماعي بحيث يمكنك المشاركة في التعلم مع أصدقائك، أما من قال بأن الجامعة لا تعطيك الخبرة فربما كان يتكلم عن الجامعات العربية التي يستطيع البعض التخرج منها عن طريق "التركيز على الأسئلة التي تتكرر كل امتحان" فيدرس بما يكفي فقط لكي ينجح في مواده حتى لو لم يفهمها جيداً ثم ليتخرج في النهاية بمعدل قليل جداً وبعد الكثير من سنوات الرسوب وأحياناً بالمحسوبية والواسطة، لذلك فإن الدول المتقدمة لا تهتم بشهادات الدول النامية خصوصاً ذات المعدل المنخفض، لكن على الطرف الآخر يوجد المهندسون المتخرجون بمعدلات مرتفعة مع سيرة ذاتية تحتوي على مشاريع ومشاركات في مسابقات البرمجة خلال سنوات الدراسة، شهادة هذا النوع من المهندسين تستطيع مساعدتهم في القبول بالدول المتقدمة لمتابعة دراستهم أو العمل بالشركات، النوع الأخير (النوع الناجح) من خريجي الهندسة أصلح وأقوى بكثير من مبرمج عادي تعلم عبر الانترنت، ولكن بالتأكيد هذا المبرمج العادي سيكون بالطبع أفضل من النوع الأول الذي حدثتك عنه (النوع الفاشل)، لذلك إن كنت تقارن هذا النوع الفاشل من خريجي الهندسة مع المبرمج العادي ثم تقول بأن الجامعات فقدت أهميتها فأنت مخطئ، حتى الجامعات العربية لا تفقد أهميتها لمن يريد العمل والاجتهاد أثناء سنوات الدراسة، وبكل تأكيد هي لم تفقد أهميتها في الدول المتقدمة بدواعي "الخبرة أهم"، فالعلم يأتي أولاً ولكثرة تطبيقه تحصل الخبرة، بكل حال فأنا لا أتحامل عليك شخصياً أو على وجهة نظرك الخاصة بل أحترمها، ولكن فقط أحببت توضيح وجهة نظري بهذا الشأن، وهي أن الطريق ليس مغلق أمام المبرمج العادي فهو يستطيع العمل وكسب المال وعيش حياة كريمة، ولكن بالتأكيد لا تصلح مقارنته مع مهندس البرمجيات المحترف سواء تعلم في جامعة (وهو الطريق الأفضل)، أو تعلم عبر الإنترنت واستغرق سنوات طويلة في الحضور لمختلف أنواع الكورسات ليحصل في النهاية على نفس القدر من العلم المُدرس في الجامعات (وهذا هو الطريق الأصعب حتماً)، تحياتي لك صديقي، في إمان الله.
التعليقات