على مدار العامين الماضيين، قمت أنا وفريقي في Work & Co باختبار أدوات ترميز الذكاء الاصطناعي ودمجها تدريجيًا مثل Copilot وCursor وClaude وChatGPT لمساعدتنا في تقديم تجارب الويب التي يستخدمها الجماهير. من المسلم به أنه بعد بعض الشكوك الأولية وبضع لحظات آها، وجدت أدوات الذكاء الاصطناعي المختلفة طريقها إلى استخدامي اليومي. مع مرور الوقت، بدأت قائمة التطبيقات التي وجدنا أنه من المنطقي السماح للذكاء الاصطناعي بتوليها في النمو، لذلك قررت مشاركة بعض حالات الاستخدام العملية لأدوات الذكاء الاصطناعي لما أسميه "المطور المسؤول". ماذا أعني بالمطور المسؤول؟ علينا أن نتأكد من أننا نقدم كود الجودة كما هو متوقع من قبل أصحاب المصلحة والعملاء لدينا. لا ينبغي أن تصبح مساهماتنا (أي طلبات السحب) عبئًا على زملائنا الذين سيتعين عليهم مراجعة عملنا واختباره. أيضًا، في حال كنت تعمل لدى شركة: يجب أن تتم الموافقة على الأدوات التي نستخدمها من قبل صاحب العمل لدينا. يجب التعامل مع الجوانب الحساسة مثل الأمان والخصوصية بشكل صحيح: لا تلصق الأسرار أو بيانات العميل (PII) أو تعليمات برمجية خاصة في الأدوات دون موافقة السياسة. تعامل معها كرمز من شخص غريب على الإنترنت. دائما اختبار والتحقق. ملاحظة: تفترض هذه المقالة بعض الإلمام الأساسي بأدوات ترميز الذكاء الاصطناعي مثل Copilot داخل VSCode أو Cursor. إذا كان كل هذا يبدو جديدًا تمامًا وغير مألوف بالنسبة لك، فيمكن أن تكون دروس فيديو Github Copilot نقطة انطلاق رائعة بالنسبة لك.
تطبيقات مفيدة لأدوات ترميز الذكاء الاصطناعي ملاحظة: ستركز الأمثلة التالية بشكل أساسي على العمل في تطبيقات الويب المستندة إلى JavaScript مثل React أو Vue أو Svelte أو Angular. الحصول على فهم لقاعدة التعليمات البرمجية غير المألوفة ليس من غير المألوف العمل على قواعد تعليمات برمجية ثابتة، وقد يكون الانضمام إلى قاعدة تعليمات برمجية قديمة كبيرة أمرًا مخيفًا. ما عليك سوى فتح مشروعك ووكيل الذكاء الاصطناعي (في حالتي، Copilot Chat في VSCode) والبدء في طرح الأسئلة تمامًا كما تطرح على زميل. بشكل عام، أحب التحدث إلى أي عميل يعمل بالذكاء الاصطناعي تمامًا كما أفعل مع أي إنسان آخر. فيما يلي مثال أكثر دقة للمطالبة: "أعطني نظرة عامة على البنية عالية المستوى: نقاط الدخول، والتوجيه، والمصادقة، وطبقة البيانات، وأدوات البناء. ثم قم بإدراج 5 ملفات لقراءتها بالترتيب. تعامل مع التفسيرات على أنها فرضيات وقم بالتأكيد من خلال الانتقال إلى الملفات المرجعية."
يمكنك الاستمرار في طرح أسئلة المتابعة مثل "كيف يعمل التوجيه بالتفصيل؟" أو "تحدث معي خلال عملية وأساليب المصادقة" وسيقودك إلى توجيهات مفيدة لتسليط بعض الضوء على قاعدة التعليمات البرمجية غير المألوفة. فرز التغييرات المعطلة عند ترقية التبعيات يمكن أن يكون تحديث حزم npm، خاصة عندما تأتي مع تغييرات جذرية، أمرًا شاقًا ويستغرق وقتًا طويلاً، ويجعلك تصحح قدرًا لا بأس به من الانحدارات. لقد اضطررت مؤخرًا إلى ترقية مكتبة تصور البيانات Plotly.js إلى إصدار إصدار رئيسي واحد من الإصدار 2 إلى 3، ونتيجة لذلك، توقفت تسمية المحاور في بعض الرسوم البيانية عن العمل. ذهبت لأسأل ChatGPT: "لقد قمت بتحديث مشروعي Angular الذي يستخدم Plotly. لقد قمت بتحديث Plotly.js - حزمة التوزيع من الإصدار 2.35.2 إلى 3.1.0 - والآن اختفت التسميات الموجودة على المحورين x وy. ماذا حدث؟"
عاد الوكيل بحل على الفور (انظر بنفسك أدناه). ملاحظة: ما زلت أتحقق من الشرح مقابل دليل الترحيل الرسمي قبل شحن الإصلاح.
نسخ Refactors بأمان عبر الملفات من المؤكد أن قواعد التعليمات البرمجية المتنامية تكشف عن فرص لتوحيد التعليمات البرمجية. على سبيل المثال، لاحظت تكرار التعليمات البرمجية عبر الملفات التي يمكن استخراجها في وظيفة أو مكون واحد. ونتيجة لذلك، عليك أن تقرر إنشاء مكون مشترك يمكن تضمينه بدلاً من ذلك وتنفيذ عملية إعادة البناء هذه في ملف واحد. الآن، بدلاً من تنفيذ هذه التغييرات يدويًا على ملفاتك المتبقية، يمكنك أن تطلب من وكيلك طرح أداة إعادة البناء نيابةً عنك. يتيح لك الوكلاء تحديد ملفات متعددة كسياق. بمجرد الانتهاء من إعادة بناء ملف واحد، يمكنني إضافة كل من الملفات التي تمت إعادة هيكلتها والتي لم يتم لمسها في السياق ومطالبة الوكيل بتنفيذ التغييرات على ملفات أخرى مثل هذا: "قم بتكرار التغييرات التي أجريتها في الملف A إلى الملف B أيضًا". تنفيذ الميزات في تقنيات غير مألوفة إحدى لحظاتي المفضلة في استخدام أدوات ترميز الذكاء الاصطناعي كانت عندما ساعدتني في إنشاء رسوم متحركة متدرجة معقدة للغاية في GLSL، وهي لغة لم أكن أعرفها إلى حد ما. في مشروع حديث، توصل مصممونا إلى تدرج متحرك كحالة تحميل على كائن ثلاثي الأبعاد. لقد أحببت هذا المفهوم حقًا وأردت تقديم شيء فريد ومثير لعملائنا. الالمشكلة: لم يكن لدي سوى يومين لتنفيذه، وكان لدى GLSL منحنى تعليمي حاد للغاية. مرة أخرى، أصبحت أداة الذكاء الاصطناعي (في هذه الحالة، ChatGPT) مفيدة، وبدأت بكل بساطة في مطالبتها بإنشاء ملف HTML مستقل لي يعرض لوحة قماشية وتدرجًا لونيًا متحركًا بسيطًا للغاية. خطوة تلو الأخرى، قمت بتشجيع الذكاء الاصطناعي على إضافة المزيد من البراعة إليه حتى وصلت إلى نتيجة جيدة حتى أتمكن من البدء في دمج التظليل في قاعدة التعليمات البرمجية الفعلية الخاصة بي. النتيجة النهائية: كان عملاؤنا سعداء للغاية، وقمنا بتسليم ميزة معقدة في فترة زمنية قصيرة بفضل الذكاء الاصطناعي. اختبارات الكتابة من خلال تجربتي، نادرًا ما يكون هناك ما يكفي من الوقت في المشاريع للكتابة المستمرة والحفاظ على مجموعة مناسبة من اختبارات الوحدات والتكامل، علاوة على ذلك، لا يستمتع العديد من المطورين حقًا بمهمة كتابة الاختبارات. إن مطالبة مساعد الذكاء الاصطناعي الخاص بك بإعداد الاختبارات وكتابتها لك أمر ممكن تمامًا ويمكن إجراؤه في فترة زمنية قصيرة. بالطبع، لا يزال يتعين عليك، كمطور، التأكد من أن اختباراتك تلقي نظرة فعلية على الأجزاء المهمة من تطبيقك وتتبع مبادئ الاختبار المعقولة، ولكن يمكنك "الاستعانة بمصادر خارجية" لكتابة الاختبارات لمساعد الذكاء الاصطناعي لدينا. مثال موجه: "اكتب اختبارات الوحدة لهذه الوظيفة باستخدام Jest. قم بتغطية المسار السعيد وحالات الحافة وأوضاع الفشل. اشرح سبب وجود كل اختبار."
يمكنك أيضًا نقل أفضل ممارسات الاختبار التي يقدمها خبير الاختبار Kent C. Dodds كإرشادات إلى وكيلك، كما هو موضح أدناه:
الأدوات الداخلية مشابه إلى حد ما لمثال التظليل المذكور سابقًا، تم تكليفي مؤخرًا بتحليل تكرار التعليمات البرمجية في قاعدة التعليمات البرمجية والمقارنة قبل وبعد إعادة البناء. بالتأكيد ليست مهمة تافهة إذا كنت لا ترغب في اتباع المسار الذي يستغرق وقتًا طويلاً لمقارنة الملفات يدويًا. بمساعدة Copilot، قمت بإنشاء برنامج نصي يقوم بتحليل تكرار التعليمات البرمجية بالنسبة لي، وترتيب المخرجات وطلبها في جدول، وتصديرها إلى Excel. ثم أخذتها خطوة أبعد. عندما تم الانتهاء من إعادة بناء الكود الخاص بنا، طلبت من الوكيل أن يأخذ ورقة Excel الحالية الخاصة بي كخط أساسي، وإضافة الحالة الحالية للتكرار في أعمدة منفصلة، وحساب الدلتا. تحديث التعليمات البرمجية المكتوبة منذ وقت طويل في الآونة الأخيرة، فاجأني عميل قديم لي، لأنه مع مرور الوقت، لم تعد بعض الميزات تعمل بشكل صحيح على موقعه على الويب بعد الآن. المشكلة: تم إنشاء موقع الويب منذ ما يقرب من عشر سنوات، وكانت JavaScript وSCSS تستخدمان أدوات ترجمة قديمة إلى حد ما مثل requireJS، وكان الإعداد يتطلب إصدارًا أقدم من Node.js لن يعمل حتى على جهاز MacBook 2025 الخاص بي. كان تحديث عملية البناء بأكملها يدويًا سيستغرق أيامًا، لذلك قررت أن أطلب من وكيل الذكاء الاصطناعي، "هل يمكنك تحديث عملية إنشاء JS وSCSS إلى حزمة 2025 بسيطة مثل Vite؟" لقد حدث ذلك بالتأكيد، وبعد حوالي ساعة من التنقيح مع الوكيل، قمت بتحويل إصدار SCSS وJS الخاص بي إلى Vite، وتمكنت من التركيز على إصلاح الأخطاء الفعلي. فقط تأكد من التحقق من صحة المخرجات والملفات المجمعة بشكل صحيح عند إجراء مثل هذه التغييرات المتكاملة على عملية الإنشاء الخاصة بك. تلخيص وصياغة هل ترغب في تلخيص جميع التغييرات الأخيرة في التعليمات البرمجية في جملة واحدة لرسالة التزام، أو هل ترغب في الحصول على قائمة طويلة من الالتزامات وترغب في تلخيصها في ثلاث نقاط؟ لا توجد مشكلة، دع الذكاء الاصطناعي يتولى الأمر، ولكن يرجى التأكد من تدقيقه. مثال على ذلك بسيط مثل إرسال رسالة إلى أحد الأشخاص: "من فضلك قم بتلخيص تغييراتي الأخيرة في نقاط موجزة". نصيحتي هنا هي استخدام GPT للكتابة بحذر، وكما هو الحال مع الكود، يرجى التحقق من الإخراج قبل الإرسال أو الإرسال. التوصيات وأفضل الممارسات مطالبة إحدى الفوائد غير الواضحة لاستخدام الذكاء الاصطناعي هي أنه كلما كانت مطالباتك أكثر تحديدًا وتخصيصًا، كلما كانت النتائج أفضل. إن عملية مطالبة وكيل الذكاء الاصطناعي تجبرنا على صياغة متطلباتنا على وجه التحديد قدر الإمكان قبل أن نكتب ونبرمج. لهذا السبب، كقاعدة عامة، أوصي بشدة بأن تكون محددًا قدر الإمكان فيما يتعلق بمطالبتك. يقترح رايان فلورنس، المؤلف المشارك لـ Remix، طريقة بسيطة ولكنها قوية لتحسين هذه العملية من خلال إنهاء مطالبتك الأولية بالجملة: "قبل أن نبدأ، هل لديك أي أسئلة بالنسبة لي؟"
في هذه المرحلة، عادةً ما يعود الذكاء الاصطناعي بأسئلة مفيدة حيث يمكنك توضيح نيتك المحددة، وتوجيه الوكيل لتزويدك بنهج أكثر تخصيصًا لمهمتك.
استخدم التحكم في الإصدار واعمل على قطع قابلة للهضم إن استخدام التحكم في الإصدار مثل git لا يكون مفيدًا فقط عند التعاون كفريق على قاعدة تعليمات برمجية واحدة ولكن أيضًا لتزويدك كفريقمساهم فردي لديه نقاط ثابتة يمكن الرجوع إليها في حالة الطوارئ. نظرًا لطبيعته غير الحتمية، يمكن للذكاء الاصطناعي في بعض الأحيان أن ينحرف ويقوم بإجراء تغييرات لا تساعد ببساطة على تحقيق ما تحاول تحقيقه وفي النهاية يكسر الأشياء بشكل لا يمكن إصلاحه. سيساعدك تقسيم عملك إلى التزامات متعددة على إنشاء نقاط ثابتة يمكنك الرجوع إليها في حالة حدوث خلاف بين الأمور. وسوف يشكرك زملائك في الفريق أيضًا، لأنه سيكون من الأسهل عليهم مراجعة التعليمات البرمجية الخاصة بك عندما يتم تقسيمها إلى أجزاء جيدة التنظيم من الناحية الدلالية. مراجعة بدقة يعد هذا من أفضل الممارسات العامة، ولكن في رأيي، يصبح أكثر أهمية عند استخدام أدوات الذكاء الاصطناعي لأعمال التطوير: كن أول مراجع نقدي للتعليمات البرمجية الخاصة بك. تأكد من تخصيص بعض الوقت لمراجعة تغييراتك سطرًا تلو الآخر، تمامًا كما تفعل مع مراجعة كود شخص آخر، ولا ترسل عملك إلا بعد اجتياز المراجعة الذاتية الخاصة بك. "هناك شيئان ينطبقان علي الآن: عملاء الذكاء الاصطناعي مذهلون ويعززون الإنتاجية بشكل كبير. كما أنهم آلات هائلة الحجم إذا قمت بإيقاف تشغيل عقلك وتركته تمامًا. "- أرمين روناشر في مدونته Agent Psychosis: هل سنصبح مجانين؟
الاستنتاج والأفكار النقدية في رأيي، يمكن لأدوات البرمجة بالذكاء الاصطناعي تحسين إنتاجيتنا كمطورين على أساس يومي وتحرير القدرات العقلية لمزيد من التخطيط والتفكير عالي المستوى. إنهم يجبروننا على توضيح النتيجة المرجوة بتفاصيل دقيقة. يمكن لأي ذكاء اصطناعي، في بعض الأحيان، أن يصاب بالهلوسة، مما يعني أنه يعتمد على نبرة واثقة. لذا يرجى التأكد من الفحص والاختبار، خاصة عندما تكون في شك. الذكاء الاصطناعي ليس حلاً سحرياً، وأعتقد أن التميز والقدرة على حل المشكلات كمطور لن يصبحا عتيقي الطراز أبداً. بالنسبة للمطورين الذين بدأوا للتو حياتهم المهنية، قد تكون هذه الأدوات مغرية جدًا للقيام بمعظم العمل نيابةً عنهم. ما قد يضيع هنا هو العمل المرهق والمؤلم في كثير من الأحيان من خلال الأخطاء والمشكلات التي يصعب تصحيحها وحلها، والمعروفة أيضًا باسم "الطحن". حتى Lee Robinson من Cursor AI شكك في هذا الأمر في إحدى مشاركاته:
تتطور أدوات برمجة الذكاء الاصطناعي بوتيرة سريعة، وأنا متحمس لما سيأتي بعد ذلك. أتمنى أن تكون قد وجدت هذه المقالة ونصائحها مفيدة، وأنك متحمس لتجربة بعض منها بنفسك.