في بداية عصر الحواسيب كان أغلب العاملين في مجال الحواسيب هم مهندسين أو علماء رياضيات متخصصين في مجال البرمجة وساد حينها لقب Computer Scientist أو Software Engineer، حتى إذا عدنا إلى بدايات علوم الكمبيوتر، لم يكن هنالك شيء اسمه تخصص علوم الكمبيوتر في أي كلية أو جامعة، حيث كان فرعاً من الرياضيات أو الهندسة.
روّاد الحواسيب الأوائل:
إن أوائل المبرمجين كانوا علماء الرياضيات لم يطلق عليهم عادة اسم مبرمجين كانوا محللين أو مهندسين وأغلب المبرمجين الأوائل كانوا من النساء، بمرور الوقت وبحلول أواخر الستينيات شهد هذا المجال نمواً حقيقياً وأصبح الأشخاص المشاركين في برمجة الحواسيب يُعرفون باسم مهندسي البرمجيات، ومع نهاية التسعينيات بدأنا نرى بدايات من نسميهم اليوم "المبرمجين" و "المطورين" ، كان هؤلاء أشخاصاً غير حاصلين على شهادات جامعية رسمية، بل كانوا بدلًا من ذلك يحملون شهادات معتمدة من مراكز تدريبية وفي بعض الأحيان مؤسسات رسمية أو كانوا ببساطة يتعلمون من تلقاء أنفسهم عبر الإنترنت.
بدأت هذه المجموعة الجديدة في مجال البرمجيات وبشكل بطيء بالدخول إلى ساحة العمل بألقاب جديدة مثل "مبرمج" أو "مطور" بدلًا من "مهندس" ولقد شوهد قفزات نوعية في عدة مجالات فنية متعلقة بالحاسوب في تلك الحقبة من الزمن.
في أوائل عام 2000 قلَّ الطلب تقريباً على وظيفة هندسة البرمجيات حيث لم يكن لدى المتقدمين درجة علمية كافية مدتها أربع سنوات للتقدّم للوظيفة، وحصل تقدم سريع حتى عام 2010 وأصبحت نصف طلبات التوظيف من أشخاص ليس لديهم شهادة رسمية، حتى الآن أصبح هناك العديد من الطلاب الذين ينقطعون عن الدراسة بعد فصل أو فصلين لأنهم حصلوا على وظيفة مبرمج في مجالٍ ما.
ما الذي حدث ؟
لقد أصبح لقب "مهندس البرمجيات" إما غير صالح أو محجوز لأدوار تقليدية وكبيرة في شركات التكنولوجيا الكبرى، وسبب ذلك أن المعايير قد انخفضت ببساطة فمن الواضح أن الطلب على أي شخص يمكنه البرمجة _حتى في حال انعدام الخبرة_ قد ارتفع، وذلك في ظل ظهور فنييّ البرمجة أو المبرمجون الذين لديهم معرفة أساسية في علوم الحاسوب ولكن فقط فيما يتعلق بالبرمجة أو بلغة برمجة معينة، بالإضافة إلى بعض التدريب العملي، وذلك مما أدّى إلى اختلاط بين مصطلحين "مبرمج" و "مهندس برمجيات" على الناس، وبدوره أدّى إلى قلة فرص المهندس حينها، ولكن اليوم ارتفعت المعايير ورجحت الكفّة ..
هندسة البرمجيات اليوم:
ما زال هناك بعضاً من اللَبَس بين مفهومي "هندسة البرمجيات" و "البرمجة"، وما نريد إيضاحه في هذا المقال أنَّ كل مهندس برمجيات هو مبرمج، ولكن ليس بالضرورة أن يكون كل مبرمج أو كل من امتهن البرمجة مهندس برمجيات!. اليوم هناك العديد من الأشخاص المبدعين في مجال البرمجة، ولكن ليسوا مهندسي برمجيات! وهذا ليس انتقاصاً من قيمة أي شخص أو مهنة، فالمسألة مسألة اختصاص لا انتقاص أبداً.
فإنَّ تخصص هندسة البرمجيات هو التخصص المسؤول عن تصميم الأنظمة والبرمجيات وتطويرها بشكل هندسي لتكون قابلة للصيانة والتطوير فيما بعد، وقبل ذلك التخطيط المسبق لها واختيار الأدوات التقنية والهندسية التي تتلائم مع نوع المشروع والزبون وفريق العمل، وكل ذلك مع إدارة الجودة والوقت وجميع التكاليف.
أما البرمجة من غير هندسة: مجموعة من الأوامر والتعليمات البرمجية التي تعطى للحاسب لتنفيذ عدة متطلبات، مثل عرض مجموعة من المعلومات على صفحة ما، أو تخزين بعض المعلومات الأخرى.
إنَّ المبرمج من غير فكر هندسي قادر على تطوير برنامج أو موقع ويب ولكن هذا النظام ليس مبنياً بشكل هندسي، فربما لا يكون قابل للتطوير عليه بعد فترة من الزمن، أو ربما لا يكون قابل للصيانة في حال حدوث خلل ما.
أخيراً، ما هي المهارات التي تميّز مهندس البرمجيات عن المبرمج؟
- التخطيط الجيد لتطوير أي نظام من الألف إلى الياء مراعياً معايير الجودة والوقت والتكلفة.
- القدرة على تحليل وجمع متطلبات النظام والقيام بعملية هندسة المتطلبات من أي زبون.
- القدرة على تصميم النظام قبل كتابة أي رمز برمجي مع مراعاة قابلية تطوير هذا النظام وصيانته واختباره وتأمين متطلبات الأمان والسرعة و...وإلخ.
- اختيار بيئة تطوير ملائمة لمتطلبات النظام وتجهيزاته الفيزيائية.
- القدرة على التعامل مع فريق برمجي مهما كان حجمه وإمكانية إدارته إدارة جيدة.
- التعامل مع أحد نماذج إدارة المشاريع البرمجية الرشيقة كالـ SCRUM.
- العمل على دمج مكونات البرنامج في نظام وظيفي بالكامل.
- تطوير خطط التحقق من البرامج وإجراءات ضمان الجودة.
- التوثيق والحفاظ على وظائف البرنامج.
- استكشاف الأخطاء وإصلاحها وتصحيحها والعمل على ترقية الأنظمة الحالية.
- ضمان الامتثال لخطة المشروع ومعايير الصناعة.
- والكثير من المهام الهندسية والإدارية التي يتميز بها ..
ختاماً، لامانع اليوم أن يكون عملك الأساسي في مجال البرمجة إن كنت ترغب بذلك، ولكن ما أردنا إيضاحه أنَّ اختصاص البرمجة مختلف عن هندسة البرمجيات كما شرحنا سابقاً، وكلا الاختصاصين اليوم يمتلكان الكثير من فرص العمل والشواغر الوظيفية.
إن أردت البدء بالبرمجة فكل ما عليك الحصول على بعض المعرفة الأساسية في علوم الحاسوب، وتطوير مهاراتك وأسلوبك. واعلم أنَّ الأمر ليس سهلاً وفي نفس الوقت ليس مستحيلاً كل ما عليك فقط اختيار من أين ستبدأ وما هو هدفك النهائي.