أعلنت شركة OpenAI مؤخرا عن ChatGPT، وهو نموذج ذكاء اصطناعي لغوي قادر على إدارة حوار متكامل مع البشر والإجابة على أسئلة متنوعة بلغات مختلفة.
وخلال الأيام اللي تلت الإعلان عن نموذج الذكاء الصناعي الجديد ChatGPT من OpenAI ظهرت استخدامات كتير مذهلة قادر على القيام بها، منها مثلا كتابة المقالات بكفاءة قد تغني الكثيرين عن الاستعانة بمحرر أو كاتب إبداعي، بالإضافة إلى تلخيص الأوراق العلمية بدلا من الباحثين وشرح وتوضيح المفاهيم المعقدة، إلى جانب كتابة الشفرات أو الأكواد البرمجية، وهو ما أثار العديد من المخاوف والتساؤلات بشأن إمكانية استبدال الذكاء الاصطناعي AI لمهندسي البرمجيات والتخديد الذي يمثله.
هل نموذج الذكاء الاصطناعي ChatGPT قادر على أداء وظيفة مهندس البرمجيات؟
على حسب تعريفك لوظيفة مهندس البرمجيات، إذا كنت ترى أن وظيفة مهندس البرمجيات الوحيدة هي البرمجة وكتابة الكود أو الشفرة البرمجية فالإجابة من وجهة نظري أن ChatGPT (والنماذج الشبيهة مثل GitHub Copilot من مايكروسوفت) قادر على برمجة المهام البسيطة ومتوسطة التعقيد بكفاءة تقترب من الأداء البشري.
وعلى سبيل المثال، عند طرح عددا من الأسئلة المشهورة في مقابلات العمل التي دائما ما تعتمد عليها الشركات عند توظيف مهندسين برمجيات جدد على نموذج ChatGPT، سنجد أنه قادرا على توفير إجابات متكاملة، بل وتنفيذ مهام برمجية تستغرق أحيانا ساعة أو أكثر من المتقدمين لوظائف البرمجة في أقل من دقيقة واحدة.
وعند تجربة طلب مهمة برمجية تستغرق أيام عادة من المبرمجين المتقدمين لشغل وظيفة مهندس برمجيات، قدم نموذج الذكاء الاصطناعي ChatGPT حلا متكاملا وصحيح بنسبة 95% خلال 22 ثانية فقط.
هل يمكن لـنموذج الذكاء الاصطناعي ChatGPT استبدال مهندسي البرمجيات؟
الإجابة قطعا لا، على الأقل في الوقت الحالي بالإمكانيات الحالية، تعمدت استخدام مسمى “مهندس البرمجيات” بدلا من مسمى “المبرمج” حتى أحاول توضيح الفرق في المهام، البرمجة في حد ذاتها تعتبر جزءا يسيرا من مهام مهندس البرمجيات اليومية.
حيث يمكننا تقسيم مهام مهندسي البرمجيات اليومية إلى:
- Requirements management: تحديد متطلبات العميل المختلفة ثم ترجمتهاعناصر على النظام تنفيذها ومهام برمجية يجب تطويرهاSystem requirements وSoftware requirements، وذلك بطريقة مترابطة بشكل منطقي.
- مناقشة المتطلبات: بالإضافة إلى الطريقة الأفضل لتنفيذها، وهي النقاشات التي تندرج تحت ما يعرف باسم System/Software Architecture، وهو ما يمكن لنموذج ذكاء اصطناعي مثل ChatGPT تنفيذه على نطاق محدود، لكن تنفيذ جميع المهام وحل الصعوبات التي تواجه مهندسي البرمجيات في المشروعات الكبرى سيكون صعبا دون تدخل بشري.
- تنفيذ القرارات الهيكلية: أي تحويل الخطط إلى أكواد أو شفرات برمجية النقطة، وهو ما يمكن لنموذج ذكاء اصطناعي تنفيذه إلى حد كبير، لكن مراجعة الكود والتأكد من مطابقته للمواصفات، خصوصا في الصناعات اللي يمكن أن تؤثر مباشرة على سلامة المستخدمين وعليها قيود قانونية كبيرة مثل صناعة الطيران وصناعة السيارات وغيرها، وهو ما يتطلب تدخلا بشريا.
- code integration: أو دمج الشفرات البرمجية الجديدة مع الشفرة البرمجية الأصلية للمشروع، وهو ما يتم تنفيذه تلقائيا على نطاقات محدودة من سنين، لكن كلما كان المشروع كبيرا ومعقدا سيحتاج دائما إلى تدخل بشري للتحقق وحل المشاكل واختيار سطور الكود التي يجب دمجها من إصدارات مختلفة، وهو نشاط شبه يومي لأي مهندس يعمل في مشروع يتضمن أكثر من 50 مهندسا، في صناعة السيارات على سبيل المثال من طبيعي أن يتضمن المشروع الملايين من سطور الكود التي يكتبها ويعمل على صيانتها من 50 إلى 300 مهندس برمجيات.
- اختبار الكود أو الشفرة البرمجية: وذلك في مراحل الاختبار المختلفة للتأكد دائما من خلو المشروع من العيوب الحرجة، وهو ما يمكن للذكاء الاصناعي مساعدة مهندسي البرمجيات فيه، لكن في النهاية من الصعب جدا أن نستغني عن مهندس البرمجيات والاكتفاء بالذكاء الصناعي فقط، خصوصا في الصناعات التي تتضمن التعامل مع Hardware أو معدات مثل في صناعة الطيران وصناعة السيارات وغيرها.
قد يهمك أيضا: أفضل مواقع توفر تعلم البرمجة من الصفر
نماذج الذكاء الصناعي في مواجهة مهندسي البرمجيات: الخلاصة
ستساعد نماذج الذكاء الاصطناعي مثل ChatGPT في تسهيل مهام مهندسي البرمجيات، لكن من الصعب أن تستبدلهم، على سبيل المثال استخدم GitHub Copilot يوميا تقريبا، وهو ما يوفر لي ما يصل 200-300 ساعة في السنة، أي ما يصل إلى 12 يوما من العمل.
استخدمت مؤخرا نموذج الذكاء الصناعي ChatGPT في تلخيص ورقة علمية معقدة وساعدني في فهم التفاصيل الرئيسية في وقت قصير جدا، كما استخدمته مرة أخرى في تعلم المباديء الأساسية للغة برمجة جديدة اخطط لتعلمها خلال ساعتين فقط تقريبا، وذلك من خلال ترجمة ChatGPT من OpenAI عدة أكواد بلغة البرمجة بايثون Python للغة المستهدفة وشرحها، وهو ما وفر ما يصل إلى يومين من العمل.
لذلك يمكننا تلخيص الإجابة في التهديد الذي تمثله نماذج الذكاء الصناعي على مهندسي البرمجيات في النقاط التالية:
– من الصعب حاليا أن تستبدل نماذج الذكاء الاصطناعي مهندسي البرمجيات لعدم قدرتها على أداء المهام اليومية في المشاريع البرمجية الكبرى.
– ستساعد نماذج الذكاء الاصطناعي مهندسي البرمجيات في توفير وقت وجهد كبير، وهو ما سيساعد في دفع عجلة الإبداع في مجالات البرمجة المختلفة.
– يجب أن تتغير الطريقة التي تعتمد عليها الشركات الآن في تقييم أو اختبار المتقدمين لوظيفة مهندس برمجيات، وذلك لكونها لا تقيس المهارات الحقيقية للمتقدمين ومدى ملائمتها للوظيفة.