التطوير هو عملية متكررة لابتكار شيء جديد ومفيد.
عندما نفكر في التطوير، غالبًا ما يتبادر إلى الذهن تطوير المنتجات الجديدة. يختلف هذا عن التصنيع الذي ينتج منتجات فردية؛ بدلاً من ذلك، يتضمن إنشاء مواصفات التصميم أو القوالب للمنتجات.
وهكذا، فإن المخططات أو القوالب التي يتم إنشاؤها من خلال تطوير المنتجات الجديدة تُستخدم بشكل متكرر في المصانع لتصنيع العديد من المنتجات المتطابقة.
هناك أيضًا استخدامات مثل تطوير القدرات الفردية أو تطوير المجتمع والأمم. لا تعني هذه الاستخدامات مجرد زيادة ما يمتلكه المرء، بل تعني القدرة على استخدام القدرات المطورة والاستفادة منها بشكل متكرر.
بينما قد تتقلب القوة الاقتصادية للأفراد والمجتمعات بسبب الظروف الاقتصادية، فإن القدرات المطورة هي في الأساس دائمة.
حتى لو تضاءلت، يُعتبر ذلك تدهورًا بدلاً من التقلبات صعودًا وهبوطًا في الازدهار الاقتصادي.
بالإضافة إلى ذلك، هناك أيضًا تطوير التكنولوجيا والمعرفة. على عكس قدرات الأفراد أو المجتمعات المحددة، تتميز هذه بأنها قابلة للمشاركة بسهولة.
ومن بين المنتجات والقدرات والمعارف والتقنيات التي هي نتائج هذه التطورات، يمكن لبعضها أن يساهم في التطوير اللاحق.
من خلال تطوير مثل هذه المخرجات المفيدة، يتسع نطاق التطوير، وتتحسن الكفاءة والجودة.
تطوير البرمجيات المدفوع بالذكاء الاصطناعي
بشكل عام، تطلَّب التطوير وقتًا وجهدًا كبيرين. ومع تقدم المجتمع وتطور مختلف الأمور، يصبح ابتكار أشياء جديدة أكثر صعوبة.
ولكن، مع ظهور الذكاء الاصطناعي التوليدي، يتغير هذا الوضع. حاليًا، يشهد تطوير البرمجيات تغييرات جذرية بفضل القدرات البرمجية العالية للذكاء الاصطناعي التوليدي.
في هذا المشهد، أصبحت الرؤية المستقبلية التي ترى الوكلاء المستقلين المستندين إلى الذكاء الاصطناعي التوليدي مركزًا لتطوير البرمجيات كمهندسي برمجيات حقيقة واقعة بالفعل.
نحن حاليًا في مرحلة انتقالية. فبينما لا يمكننا تفويض التطوير بالكامل للذكاء الاصطناعي التوليدي، فإن الاستفادة الماهرة منه يمكن أن تدفع تطوير البرمجيات بقوة.
يُشار إلى هذا باسم تطوير البرمجيات المدفوع بالذكاء الاصطناعي.
التطوير المتنامي
عندما يجعل الذكاء الاصطناعي التوليدي تطوير البرمجيات أكثر كفاءة، فإنه لا يبسّط فقط تطوير البرمجيات المستهدفة النهائية، بل يبسّط أيضًا تطوير البرمجيات التي تساعد في عملية التطوير نفسها.
كما ذكرنا سابقًا، فإن المخرجات التي تسهل التطوير توسع نطاقه وتساعد على تحسين الكفاءة والجودة. علاوة على ذلك، إذا تم إنشاؤها بفعالية، يمكن إعادة استخدامها في مشاريع تطوير أخرى.
لذلك، من خلال تطوير البرمجيات التي تساعد في التطوير أثناء عملية تطوير البرمجيات، يمكن زيادة الكفاءة الكلية، ويمكن الاستفادة من هذه الأصول للتطوير المستقبلي.
تقليديًا، كان تطوير مثل هذه البرمجيات المساعدة ممارسة شائعة، ولكنه تطلب وقتًا وجهدًا خاصين به، مما استلزم دراسة متأنية وتنفيذًا مركزًا.
باستخدام الذكاء الاصطناعي التوليدي، يمكن للمرء إنشاء برمجيات بسيطة بسرعة لأتمتة المهام الصغيرة التي تخطر على البال. إذا كانت المهمة تتضمن معالجة واضحة، يمكن للذكاء الاصطناعي التوليدي توليد البرنامج بدقة مع عدم وجود أخطاء تقريبًا.
وبالتالي، أصبح تطوير البرمجيات للمساعدة في التطوير أثناء عملية تطوير البرمجيات أسهل من ذي قبل.
وبالتفكير بعمق في هذا، يظهر نمط تطوير يتم فيه إنشاء أدوات مفيدة للتطوير بشكل مستمر أثناء العملية، وبالتالي تحويل منهجية التطوير نفسها.
سنطلق على هذا "التطوير المتنامي".
لممارسة التطوير المتنامي، يحتاج المرء إلى عادة الملاحظة الموضوعية لتطوير برمجياته الخاصة، مع الأخذ في الاعتبار الأجزاء التي يمكن أن تتعامل معها البرمجيات والأجزاء التي لا يستطيع التعامل معها إلا البشر، بالإضافة إلى مهارة تطوير مثل هذه البرمجيات المساعدة.
علاوة على ذلك، يمكن دمج الذكاء الاصطناعي التوليدي في هذه الأدوات البرمجية. من خلال تضمينه داخل البرمجيات، على عكس وكلاء الذكاء الاصطناعي التوليدي، يمكن تضييق نطاق المعالجة إلى حد ما، ويمكن تحديد المسارات.
بينما يمكن لوكلاء الذكاء الاصطناعي تحقيق نتائج مماثلة من خلال المطالبات، يمكن للبرمجيات التي تحتوي على ذكاء اصطناعي توليدي مدمج زيادة الدقة بسهولة أكبر من خلال الجمع بين البرامج والمطالبات.
إذا أمكن ممارسة هذا التطوير المتنامي، فسيعرض المشروع الثاني تحسينات في كل من الجودة والتكلفة مقارنة بالمشروع الأول. علاوة على ذلك، مع كل مشروع لاحق - الثالث والرابع وما إلى ذلك - ستستمر التحسينات في التراكم.
يختلف هذا تمامًا عن مجرد استخدام الذكاء الاصطناعي التوليدي لتطوير البرمجيات. ستظهر فجوة كبيرة بمرور الوقت بين الفرق التي تتقن ببساطة أدوات الذكاء الاصطناعي التوليدي والفرق التي تمارس التطوير المتنامي.
الاختبار الموجه بإعادة الهيكلة
هناك مفهوم يسمى التطوير الموجه بالاختبار (TDD)، حيث يتم تصميم الاختبارات أولاً بناءً على المواصفات، ثم يتم تطوير البرنامج لاجتياز تلك الاختبارات.
في البداية، اعتقدت أنا أيضًا أنه من خلال الاستفادة من الذكاء الاصطناعي التوليدي، سيكون من السهل تطوير برامج اختبار للاختبار الآلي، مما يجعل TDD ممكنًا.
ومع ذلك، عندما بدأت في ممارسة التطوير المتنامي، توصلت إلى الاعتقاد بأن التفكير في الاختبارات قبل تنفيذها ليس دائمًا النهج الأنسب.
خاصة بالنسبة للبرامج مثل تطبيقات الويب التي تتضمن جوانب ذاتية مثل سهولة الاستخدام والتصميم المرئي، والتي يتفاعل المرء معها مباشرة، أدركت أن تشغيل البرنامج والتفاعل معه فعليًا له الأسبقية على الاختبارات التفصيلية.
وذلك لأنه إذا كان هناك استياء كبير على مستوى واجهة المستخدم/تجربة المستخدم بعد التفاعل معها، فهناك احتمال الرغبة في تغيير أجزاء أساسية مثل الإطار، أو البنية الأساسية، أو نموذج البيانات، أو حالات الاستخدام.
في مشروع تطوير البرمجيات الشخصي الحالي الخاص بي، لاحظت مشكلات في مرونة الميزات والأداء، وانتهى بي الأمر بتبديل إطارين بآخرين مختلفين.
كما اضطررت إلى مراجعة المعالجة بالكامل في بعض المناطق بسبب الاستخدام غير الفعال للذاكرة.
في هذه اللحظات من إعادة الهيكلة، يصبح الاختبار أول اعتبار واعٍ.
إذا كان هذا في مرحلة مبكرة من التطوير، أو إذا كانت الوظائف والمواصفات ستتغير بشكل كبير على أي حال، فقد تكون الاختبارات غير ضرورية.
ومع ذلك، إذا كان التطوير قد تقدم بالفعل وهناك العديد من العناصر التي يجب التحقق منها، فستكون الاختبارات ضرورية للتأكد من أن إعادة الهيكلة لم تُدخل عيوبًا وظيفية أو سهوًا.
لذلك، فإن نهج إنشاء برامج الاختبار عندما يكون التطوير قد تقدم إلى حد معين وأصبحت إعادة الهيكلة ضرورية ليس فكرة سيئة.
في هذه المرحلة، المفتاح هو عدم إنشاء اختبارات لجميع الأكواد، بل التركيز على اختبار الأجزاء الناضجة التي من غير المرجح أن تتغير كثيرًا في المستقبل، مع ترك الأجزاء المتغيرة بدون اختبارات آلية.
يمكن تسمية هذا بالاختبار الموجه بإعادة الهيكلة.
الخلاصة
يُحدث الذكاء الاصطناعي التوليدي تحولًا جذريًا في تطوير البرمجيات.
في مقال سابق، كتبت عن أهمية السعي لأن يكون المرء "مهندسًا متعدد الاتجاهات"، قادرًا على تطوير أنظمة تجمع بين مختلف المجالات، والبنى التحتية، وبيئات التنفيذ، متجاوزًا بذلك مهندس الفول ستاك التقليدي.
كما كتبت مقالًا يشير إلى أننا ندخل عصر "التطوير المرتكز على التجربة والسلوك"، حيث لا ينصب التركيز على مواءمة المواصفات مع التنفيذ، بل على تحسين تجربة المستخدم من خلال سلوك البرمجيات.
إن التطوير المتنامي والاختبار الموجه بإعادة الهيكلة هما بالذات ما يقود إلى هذه الآفاق الجديدة في تطوير البرمجيات.