البرمجة ستقلل فرص عمل المهندسين..العكس صحيح
م هشام جعفر
قد تكون سمعت مؤخرًا عن البرمجة في المجال الهندسي، وإنه أصبح التوجه للمهندسين بشكل عام، والمهندسين المستخدمين لنمذجة معلومات المباني بشكل خاص. إذا كنت بالفعل قد سمعت عن الموضوع، ففي الغالب يقترن مع ذكره ذكر إن تلك الصيحة من شأنها القضاء على فرص المهندسين في العمل عن طريق برامج ذكية من شأنها تقليل الوقت، والجهد، والتكلفة، والذي يتبعه بشكل بديهي تفكير صاحب العمل في تقليل عدد المهندسين. تلك القصة القصيرة قد تكون في شكلها الخارجي هو انتصار جديد للآلة على الإنسان، ولكن إن أمعنا النظر أكثر، فسنعرف أن تلك القصة خلفها الكثير من فرص العمل للمهندسين على عكس ما تبدو!
البرمجة قد تهدد الشكل التقليدي لوظيفة المهندس، ولكنها عدة أشكال جديدة لعمل المهندس، ولكن كيف ذلك؟
لنجيب على هذا السؤال علينا أن نعرف أن صناعة البرامج الهندسية على عكس البرامج الأخرى، فهي تحتاج لمهندسين أكثر من حاجتها لمبرمجين. لتصنع برنامج هندسي عليك أن تكون مهندسًا ماهرًا أولًا، ومبرمج ثانيًا.
لنفهم ذلك أكثر علينا أن ننظر لكيفية صناعة أي برنامج في المطلق، وكيف ذلك سيتغير في حالة البرامج الهندسية.
دورة حياة صناعة البرمجيات
المرحلة الأولى /تحليل المتطلبات:
من أهم الأدوار التي يغفل الغير عاملين بمجال البرمجيات عنها هو دور محلل المتطلبات مع إنها قد تكون الوظيفة الأعلى أجرًا في دورة حياة صناعة البرمجيات كلها في حال تساوي الخبرات مع الأدوار الأخرى. محلل المتطلبات هو الشخص المسئول عن تحويل متطلبات العميل إلى صورة مكتوبة، ومفهومة للعميل من جهة، ولباقي أعضاء الفريق بما فيهم المبرمجين من جهة أخرى، وهي وظيفة في منتهى الحساسية لأنها تطلب أن يكون لصاحبها مهارات فنية ليستطيع أن يخبر العميل بقابلية تنفيذ متطلباته من الناحية التقنية من عدمها، بالإضافة إلى مهارات تواصل، ومهارات تحليلية عالية، لأنه ليس فقط يحول المتطلبات إلى خطوات بل في أحيان كثيرة إن لم يكن أغلبها هو يساعد العميل على فهم احتياجاته، وتحديد متطلباته بالأساس. كما أن أي فهم خاطئ منه، أو كلمة غير دقيقة في وثيقة المتطلبات ستؤدي إلى تكلفة مهدرة من الوقت، والمال في تنفيذ مهام لا تفيد المشروع، ومن هنا تستمد وظيفة المحلل أهميتها، وحساسيتها.
دعنا نعود لموضوعنا الأساسي، إذا كنا نقوم بصناعة برنامج هندسي يعتمد على كثير من المفاهيم الهندسية مثل برامج التحليل الإنشائي أو الأمثلية الهندسة، هل تتصور أن يستطيع شخص غير دارس للهندسة القيام بهذا الدور بسهولة؟ في رأيي الإجابة هو أن ذلك سيكون في شدة الصعوبة، لأنه يبذل جهد كبير في فهم مسائل لم يتعرض لشبيهها طوال حياته، وخاصة إذا كانت معقدة، فإنه قد يحتاج لسنين طويلة لفعل ذلك، وهنا يأتي أهمية دراسة الهندسة لمثل هذا الدور.
المرحلة الثانية/ التصميم:
كلما تقدمنا في المراحل للأمام، فنحن نقترب أكثر للتفاصيل التقنية، والبرمجية، ودور مصمم البرمجيات هو تحقيق تصور كامل لوثيقة المتطلبات التي قدمها المحلل، وفي مرحلة التصميم يوجد أكثر من نوع من أنواع التصميم، وفي الغالب لا يكون شخص واحد الذي يقوم بها جميعًا. النوع الأول هو تصميم واجهة المستخدم، والثاني هو تصميم قواعد البيانات، والثالث هو تصميم بناء الحل البرمجي نفسه، سيكون مفيد جدًا في أول نوعين أن يكون المصمم هو مهندس في الأساس، فيكون لديه خبرة المهندس في استخدام البرامج الهندسية، ويعرف مفضلاته، طبعًا بجانب دراسته لأسس تصميم واجهات البرامج، وكذلك في تصميم قواعد البيانات، والحل البرمجي لكن وجوده سيكون ضرورة قصوى في حال أن الحل البرمجي هو تطوير لبرنامج أو خوارزمية موجودة بالفعل. في هذه الحالة يحب أن يكون المصمم أصلًا مهندس قام باستخدام البرنامج، فلن تستطيع أن تكون مطور جيد لبرنامج إلا دون أن تكون مستخدم جيد، من دون ذلك فعملية تطوير البرنامج ستكون صعبة للغاية، فأنت تطور أداة لبرنامج أنت لا تعلم عنه شيء. أما إذا كنت تطور برنامج جديد من البداية، وكان برنامج فيه تعامل قوي مع مبادئ هندسية، فلن تستطيع وضع تصور للحل البرمجي بدون أن تكون دارس لتلك المبادئ في الأساس.
المرحلة الثالثة/ التنفيذ:
في هذه المرحلة يأتي دور الشخص الأكثر شهرة في دورة صناعة البرمجيات، وهو المبرمج. فإن مهمة نجمنا هذا هو تنفيذ ما توصل له المصمم، والمحلل في الخطوات السابقة، وهنا أمامنا طريقة من اثنين للتنفيذ، الأولى هي أن تكون على قد جيد من الفهم لطبيعة المشكلة الهندسية، وبالتالي قد تقترح حلول أثناء عملية التطوير من شأنها تحسين الحل البرمجي، أو تكون مجرد موظف ينفذ ما يطلب منه بدون تعقيب أو نقد، وفي هذه الحالة لن يتطلب الأمر منك أن تكون دارسًا للهندسة بالأساس، لأنك فقط ستنفذ رؤية الأخرين، وهنا يأتي سؤال مهم هل كل مبرمجين البرامج الهندسية مهندسين؟ الرد في الحقيقة هو لا، ولكن يتطلب الأمر من الغير دارسين للهندسة الكثير من الجهد لتحصيل ما يمكنهم تحصيله عن المشكلة الهندسية الذين يحاولون حلها قبل البدء في التنفيذ، وهنا دعني أطرح عليك سؤال.
أيهما أسهل أن يتعلم مهندس البرمجة، أو أن يتعلم مبرمج الهندسة؟
المرحلة الرابعة/ الاختبار:
هذه المهمة هي موجودة بالفعل في المشاريع الهندسية، كاختبارات مكعبات الخرسانة أو غيرها من الاختبارات، وأيضًا التأكد من أن تم تنفيذ العمل الهندسي طبقًا للتصميم المطلوب. إنه الأمر ذاته في صناعة البرمجيات، فصاحب هذه المهمة عليه أن يضع تصورًا لكل المدخلات التي يمكن أن يدخلها المستخدم للبرنامج، وصياغتها في صورة مكتوبة، وتنفيذ تلك السيناريوهات، وتسجيل نتائجها، وإن فشل الاختبار عليه إعلام المبرمج بالمشكلة ليعيد حلها قبل أن يتم تسليم البرنامج للمستخدم، وبناءًا عليه، فإن صاحب هذا الدور هو شخص يحاكي دور المستخدم النهائي ليتجنب ظهور مشاكل عند خروج البرنامج للمستخدم، ومن أفضل من أن يحاكي دور مهندس مستخدم للبرنامج أكثر من مهندس آخر.
لذا في وجهة نظري الحالية، هو أننا في جميع مراحل صناعة البرامج الهندسية نحتاج لمهندسين، لذا فإن رواج فكرة تطوير البرامج، والأدوات الهندسية ستخلق فرص عمل للمهندسين، ولكن بشكل مختلف عن الشكل التقليدي للمهندس، أما إذا كنت متمسك بهذا الشكل، ستكون لك فرصة أيضًا لأن الكمبيوتر لن يستغنى عن الشخص الذي يعطيه الأوامر، ويشرف على نتائجه، ويتأكد من منطقيتها، لكن فرصك ستقل. إن صيحة البرمجيات الهندسية من شأنها تحسين المجال الهندسي ككل، لأن المهندس سيكون عليه أن يفهم جيدًا تخصصه، أما من يعتمد على الحفظ، وتكرار الخطوات، فهو في خطر شديد، مع ازدهار صناعة البرمجيات.