العودة إلى المدونة

تعلم البرمجة بالذكاء الاصطناعي: لا تُسلِّم عقلك له

تتعلم البرمجة بالذكاء الاصطناعي؟ قد ينهي المبتدئون المتعثرون المهمة وهم يعيشون وهم الكفاءة. إليك ما تقوله الأبحاث وكيف تُبقي التفكير بين يديك.

تعلم البرمجة بالذكاء الاصطناعي: لا تُسلِّم عقلك له

عندما تتعلم البرمجة، فالبرنامج الذي تنهيه مجرد نتيجة جانبية. ما تبنيه هو نموذج ذهني: صورة في رأسك لما يفعله الكود ولماذا يتعطل. يستطيع الذكاء الاصطناعي أن ينتج الكود في ثوانٍ، لكنه لا يستطيع أن يبني هذه الصورة بدلًا منك. وإذا تركته يفكر عنك وأنت تتعلم، فستنتهي ببرامج تعمل وفهم ضحل لها. وتظهر هذه الفجوة لاحقًا، عندما يتعطل شيء ما.

الخلاصة

  • الكود الذي يعمل قد يبدو كأنه فهم. أنهى بعض المبتدئين الذين كانوا متعثرين أصلًا مهمة بمساعدة الذكاء الاصطناعي وهم يعيشون «وهم الكفاءة»، معتقدين أن أداءهم كان أفضل مما كان عليه فعلًا (Prather et al., ICER, 2024).
  • تتذكر أقل مما لم تنتجه بنفسك. واجه من كتبوا مقالات بمساعدة نموذج لغوي كبير صعوبة في الاقتباس من نصوصهم بعد دقائق من كتابتها، في دراسة لم تخضع بعد لمراجعة الأقران (Kosmyna et al., MIT Media Lab, 2025).
  • التفريغ المعرفي يقترن بتفكير نقدي أضعف. في دراسة شملت 666 شخصًا، ارتبط الاستخدام الأكثف للذكاء الاصطناعي بتفكير نقدي أضعف، وكان التفريغ المعرفي وسيطًا إحصائيًا في هذه العلاقة (Gerlich, Societies, 2025).
  • وظائف المبتدئين تتغير. انخفض توظيف مطوري البرمجيات الذين تتراوح أعمارهم بين 22 و25 عامًا بنحو 20% عن ذروته في أواخر 2022 بحلول سبتمبر 2025 (Stanford Digital Economy Lab, 2025).
  • العادات تُبقي التفكير بين يديك. حاول أولًا، واطلب تلميحات بدلًا من الأجوبة، واشرح النتيجة بكلماتك، ثم أعد بناءها من ملف فارغ في اليوم التالي.

ماذا يعني أن تُسلِّم عقلك للذكاء الاصطناعي؟

أن تُسلِّم عقلك يعني أن تترك الذكاء الاصطناعي يؤدي الجهد الذهني الذي وُجد التمرين أصلًا ليجعلك تؤديه. يسمي علماء النفس هذا التفريغ المعرفي (cognitive offloading): أن تستخدم أداة في تفكير كنت ستقوم به بنفسك لولاها. الآلة الحاسبة تفعل ذلك في الحساب، وتطبيق الخرائط يفعله في الاتجاهات. ويستطيع المطور المتمرس أن يفوّض الكود المتكرر (boilerplate) بكلفة قليلة، لأن الفهم موجود لديه أصلًا. أما المتعلم، فهذا الجهد الذهني هو مصدر المهارة عنده. لذلك فإن تفويضه يتركك مع الناتج ولا شيء يُذكر غيره.

أما السؤال الأضيق، أي متى تكتب الكود بنفسك ومتى تقبل الاقتراح، فله مقاله الخاص هل ما زال عليك كتابة الكود يدويًا؟، الذي يستعرض التجارب المضبوطة. السؤال هنا هو ما يحدث في رأسك عندما تتعلم بمساعدة مساعد ذكي، وما يكلفك ذلك بعد عام من الآن.

لماذا يبدو الكود الذي يعمل وكأنه فهم؟

يحكم دماغك على الفهم جزئيًا بمدى سلاسة سير الأمور، والذكاء الاصطناعي يجعل كل شيء يسير بسلاسة. تلصق طلبًا، فتحصل على كود، فيعمل. ومن السهل أن تخلط بين هذه السلاسة والكفاءة.

قاس علماء التعلم هذه الفجوة منذ عقود. راجع Nicholas Soderstrom وRobert Bjork الأبحاث وخلصا إلى أن الأداء أثناء التدريب «كثيرًا ما يكون مؤشرًا غير موثوق» على حدوث التعلم. ووجدا أيضًا أن «الناس كثيرًا ما يخطئون حين يعدّون أداءهم أثناء الاكتساب دليلًا موثوقًا على التعلم طويل المدى» (Soderstrom & Bjork, Perspectives on Psychological Science, 2015). والظروف التي تبدو صعبة في لحظتها، مثل الاسترجاع بدلًا من إعادة القراءة، كثيرًا ما تُنتج تعلمًا أرسخ. ويسمي مختبر Bjork هذه الظروف «الصعوبات المرغوبة» (Bjork Learning and Forgetting Lab).

وتشير دراسات استخدام الذكاء الاصطناعي في 2024 و2025 إلى الاتجاه نفسه.

قد ينهي المبتدئون المتعثرون المهمة وهم يعيشون وهم الكفاءة

راقب James Prather وزملاؤه مبرمجين مبتدئين يحلون مسألة مع إتاحة الذكاء الاصطناعي التوليدي لهم، مستخدمين الملاحظة والمقابلات وتتبع حركة العين عبر 21 جلسة مختبرية. أكمل 20 طالبًا من الـ21 المسألة. كان الطلاب المتعثرون أصلًا يعانون صعوبات ما وراء معرفية من البداية، والذكاء الاصطناعي «قد يضاعفها بل ويُدخل صعوبات ما وراء معرفية جديدة». واعتقد عدد منهم «أن أداءهم كان أفضل مما كان عليه، وأنهوا المهمة وهم يعيشون وهم الكفاءة» (Prather et al., ICER, 2024). أما الطلاب ذوو المهارات ما وراء المعرفية الأقوى فأحسنوا استخدام الذكاء الاصطناعي، ومن هنا جاء عنوان الورقة «الفجوة المتسعة» (The Widening Gap).

والمطورون ذوو الخبرة يخطئون التقدير أيضًا. في تجربة METR لعام 2025، استغرقوا وقتًا أطول بنسبة 19% مع الذكاء الاصطناعي بينما اعتقدوا أنهم صاروا أسرع بنسبة 20% (METR, 2025)، وهي نتيجة يتناولها بتفصيل أكبر مقال هل ما زال عليك كتابة الكود يدويًا؟. وإذا كان أصحاب سنوات الخبرة يسيئون قراءة تقدمهم، فالمبتدئ لديه ما يستند إليه أقل من ذلك.

جهد أقل يعني ذاكرة أضعف

طلب باحثون في MIT Media Lab من 54 شخصًا كتابة مقالات بمساعدة نموذج لغوي كبير، أو بمحرك بحث، أو دون أي أدوات، مع تسجيل نشاط أدمغتهم بتخطيط كهربية الدماغ (EEG). أظهرت مجموعة من دون أدوات أقوى الشبكات الدماغية وأوسعها ترابطًا. وجاء مستخدمو البحث في المنتصف، وأظهر مستخدمو النموذج اللغوي أضعف ترابط. كما أن مستخدمي النموذج اللغوي «واجهوا صعوبة في الاقتباس بدقة من أعمالهم»، وهي مقالات كتبوها قبل دقائق (Kosmyna et al., MIT Media Lab, 2025). الدراسة نسخة أولية لم تخضع بعد لمراجعة الأقران، فتعامل معها كدليل مبكر. وكانت عن المقالات لا عن الكود، لكن الآلية هي نفسها التي يتناولها هذا المقال: تتذكر أقل مما لم تنتجه بنفسك.

ووصل مسح أكبر إلى نتيجة مشابهة. درس Michael Gerlich حالة 666 شخصًا ووجد «ارتباطًا سلبيًا ذا دلالة بين الاستخدام المتكرر لأدوات الذكاء الاصطناعي وقدرات التفكير النقدي، يتوسطه تزايد التفريغ المعرفي». واعتمد المشاركون الأصغر سنًا على الذكاء الاصطناعي أكثر وحصلوا على درجات أقل (Gerlich, Societies, 2025). الدراسة ارتباطية، فهي لا تثبت أن الذكاء الاصطناعي يُضعف التفكير. لكنها تُظهر أن من يقولون إنهم يفوّضون أكثر يحصلون أيضًا على درجات أقل في التفكير النقدي.

متى يرتد عليك الطريق المختصر؟

لا تلاحظ الفهم الذي تخطيته في اليوم الذي تتخطاه فيه. تلاحظه لاحقًا، عندما لا يكفي الذكاء الاصطناعي أو لا يكون متاحًا.

تتبع panic لم تفهمه قط

لنفترض أن مساعدًا كتب ذاكرة التخزين المؤقت في الذاكرة لأول خدمة Go لك، مع دالة إنشاء NewCache تجهّز كل شيء، ونجحت في كل الاختبارات. ثم جاء مسار كود جديد يبني الـ struct مباشرة:

example.gogo
type Cache struct {
	items map[string]string
}

func (c *Cache) Set(key, value string) {
	c.items[key] = value
}

func main() {
	c := &Cache{}
	c.Set("session:42", "user-1893")
}
example.texttext
panic: assignment to entry in nil map

لو كنت كتبت الـ maps يدويًا بضع عشرات من المرات، لعرفت المشكلة فورًا. القيمة الصفرية للـ map هي nil، والقراءة من map قيمتها nil تعمل، أما الكتابة فيها فتسبب panic. والإصلاح أن تجعل القيمة الصفرية قابلة للاستخدام بفحص nil داخل Set (c.items = make(map[string]string))، أو، إذا كانت ذاكرة التخزين المؤقت في حزمة مستقلة، أن تُبقي items غير مُصدَّرة وتوثّق أن على المستدعين استخدام NewCache. ويشرح مقال var مقابل make في Go سبب هذا السلوك للقيمة الصفرية. أما لو كنت لم تفعل سوى قبول كود الـ maps جاهزًا، فستجد نفسك أمام panic في سطر يبدو طبيعيًا تمامًا، دون أي فكرة من أين تبدأ.

سؤال في مراجعة الكود لا تعرف جوابه

يسألك المراجع لماذا يستخدم الـ handler الخاص بك مستقبِلًا من نوع مؤشر (pointer receiver)، أو لماذا تمرر context.Context إلى دالة لا تقرؤه أبدًا. إن كنت كتبت الكود بنفسك، فبإمكانك أن تجيب، حتى لو كان الجواب «أخطأت في ذلك». وإن كنت قبلته جاهزًا، فليس لديك ما تقوله. وتظهر الفجوة نفسها في مقابلة البرمجة المباشرة، حيث عليك أن تشرح منطقك وأنت تكتب.

قراءة قاعدة كود لم تكتبها

يذهب جزء كبير من وقت المطور الجديد في قراءة كود الآخرين: تتبع طلب عبر الـ middleware، والعثور على المكان الذي تُضبط فيه قيمة إعداد ما، وفهم سبب اختيار حجم معين لمجموعة العمال (worker pool). يستطيع الذكاء الاصطناعي أن يلخص ملفًا. أما معرفة أين تنظر بعد ذلك فتأتي من كتابتك لكود مشابه وتذكّرك أين وضعت الأشياء.

لماذا صار الفهم أهم للمطورين المبتدئين الآن؟

أحد الأسباب المرجحة أن المهام التي يتقنها الذكاء الاصطناعي تتداخل مع المهام التي كان المبتدئون يُوظَّفون من أجلها. وجد Digital Economy Lab في Stanford أن توظيف مطوري البرمجيات الذين تتراوح أعمارهم بين 22 و25 عامًا انخفض بنحو 20% عن ذروته في أواخر 2022 بحلول سبتمبر 2025، بينما بقي توظيف العاملين الأكثر خبرة مستقرًا (Brynjolfsson, Chandar & Chen, Stanford Digital Economy Lab, 2025). ويقدّر تحديث أغسطس 2026 أن توظيف العاملين الشباب في الوظائف المعرّضة للذكاء الاصطناعي أقل بنسبة 19% مما كان سيكون عليه لولا ذلك (Brynjolfsson, Chandar & Chen, 2026).

ينبّه الباحثون إلى أن عوامل أخرى غير الذكاء الاصطناعي قد يكون لها دور. وتفسيرهم أن الذكاء الاصطناعي «قد يكون بصدد أتمتة المهام القابلة للتقنين والتحقق، وهي المهام التي كانت تبرر تاريخيًا توظيف المبتدئين»، و«قد يكون أقل قدرة على الحلول محل المعرفة الضمنية». والمعرفة الضمنية هي الفهم الذي لا تكتسبه إلا بأداء العمل بنفسك، ومعرفة لماذا يكون الكود المولَّد صحيحًا أو خاطئًا تدخل ضمنها.

لماذا يكون الكفاح المثمر هو العمل الحقيقي؟

يُبنى النموذج الذهني وأنت عالق. تكون حائرًا، فتكوّن تخمينًا وتختبره، وكثيرًا ما يتبين أنه خاطئ. تبدو تلك الدقائق ضائعة، لكن فيها يحدث التعلم.

لنأخذ خطأً حقيقيًا. تكتب دالة تجلب عدة عناوين URL بالتزامن وتعود مبكرًا إذا فشل أي منها:

example.gogo
type result struct {
	body string
	err  error
}

func fetchAll(ctx context.Context, urls []string) ([]string, error) {
	results := make(chan result)
	for _, u := range urls {
		go func() {
			body, err := fetch(ctx, u)
			results <- result{body, err}
		}()
	}

	var bodies []string
	for range urls {
		r := <-results
		if r.err != nil {
			return nil, r.err
		}
		bodies = append(bodies, r.body)
	}
	return bodies, nil
}

تنجح الاختبارات. وبعد أسبوع، تتصاعد ذاكرة الخدمة ببطء حتى تُعاد تشغيلها. وحلّ المشكلة يدويًا يسير تقريبًا هكذا. تفحص runtime.NumGoroutine() فتجد العدد يتزايد. تأخذ ملف تعريف للـ goroutines (goroutine profile) فتجد مئات الـ goroutines متوقفة عند السطر نفسه، results <- result{body, err}. تسأل من المفترض أن يستقبل من هذا الـ channel، والجواب لا أحد، لأن fetchAll عادت عند أول خطأ. والـ channel بلا مخزن مؤقت (unbuffered)، فيبقى كل مرسل متبقٍّ عالقًا إلى الأبد.

الإصلاح السريع سطر واحد، results := make(chan result, len(urls))، حتى تتمكن كل goroutine من الإرسال والخروج سواء قرأ أحد أم لا. والإصلاح الأفضل يلغي الـ context أيضًا حتى تتوقف الطلبات الأخرى مبكرًا. والبحث عن هذا السطر علّمك أكثر من السطر نفسه: الإرسال على channel بلا مخزن مؤقت ينتظر مستقبِلًا، والـ return المبكر قد يترك goroutines عالقة، وملف تعريف الـ goroutines يريك أين علقت. كان بإمكان المساعد أن يعطيك النسخة المصححة من المحاولة الأولى، وكنت ستحصل على كود صحيح دون أن تتعلم شيئًا من ذلك. وفي دورة Concurrency Fundamentals تكتب كود channels يتعطل بهذه الطريقة ثم تصلحه.

كيف تتعلم البرمجة بالذكاء الاصطناعي دون أن تُسلِّم له عقلك؟

تعامل مع الذكاء الاصطناعي كزميل أول صبور. اطلب منه أن يشرح لك الأشياء أو يراجع تفكيرك عندما تعلق، واحتفظ بالتمرين نفسه لنفسك.

حاول أولًا ضمن وقت محدد

امنح نفسك من 20 إلى 30 دقيقة مع المسألة قبل أن تطلب المساعدة. اكتب ما جربته وأين علقت. وهذه الملاحظة تفيدك من جهتين: فهي تجبرك على صياغة المشكلة بوضوح، وتعطي الذكاء الاصطناعي سياقًا كافيًا ليقدم تلميحًا بدلًا من حل كامل.

اطلب تلميحات لا حلولًا

أخبر المساعد بالدور الذي تريده أن يؤديه. كثيرًا ما تفصل جملة واحدة بين طلب يؤدي العمل عنك وطلب يُبقيك تعمل:

طلب يؤدي العمل عنكطلب يُبقيك تعمل
«أصلح هذا الـ panic الناتج عن map قيمتها nil.»«أنا أتعلم Go. لا تكتب كودًا. أعطني تلميحًا واحدًا عن سبب هذا الـ panic، واسألني سؤالًا يقودني نحو السبب.»
«أعد كتابة هذه الدالة حتى لا تسرّب goroutines.»«هذه دالتي. لا تُعد كتابتها. أي سطر ستنظر إليه أولًا لو كانت تسرّب goroutines تحت الضغط، ولماذا؟»
«اكتب worker pool بلغة Go.»«أنا على وشك كتابة worker pool. ما الذي ينبغي أن أقرره قبل أن أبدأ، وما الذي يسوء عادة؟»
«اشرح الـ maps في Go.»«اختبرني بثلاثة أسئلة عن الـ maps في Go. انتظر جوابي قبل أن تخبرني هل أصبت.»

في العمود الثاني يشرح الذكاء الاصطناعي أو يطرح الأسئلة، وتبقى أنت من يكتب الكود.

اشرح الكود بكلماتك أنت

إذا أخذت كودًا من مساعد، فلا تنتقل إلى غيره حتى تستطيع شرح كل سطر فيه. اكتب الشرح كتعليقات، أو قله بصوت مسموع. السطر الذي لا تستطيع شرحه هو السطر الذي عليك أن تذهب وتتعلمه. والشرح أيضًا أسرع طريقة لتعرف هل فهمت شيئًا أم تعرّفت عليه فقط.

أعد بناءه من ملف فارغ في اليوم التالي

أغلق الملف، وافتح ملفًا فارغًا في الغد، واكتب الحل مرة أخرى دون أن تنظر. سيكون الأمر أبطأ، وستعلق في بعض المواضع. تلك المواضع هي ما لم تتعلمه بعد. إنه تدريب الاسترجاع نفسه الذي يجعل البطاقات التعليمية تنجح، لكن مطبقًا على الكود.

أبعد الذكاء الاصطناعي عن مرحلة الأساسيات

في أسابيعك الأولى مع أي لغة، اكتب الأساسيات دون مساعد: المتغيرات والحلقات والـ slices والـ maps والـ structs والأخطاء وأولى الـ goroutines التي تكتبها. في هذه المرحلة المبكرة، يملأ الإكمال التلقائي بالذكاء الاصطناعي كل سطر قبل أن تتاح لك فرصة التفكير فيه بنفسك. وبعد أن تصبح الأساسيات تلقائية لديك، أعد الأدوات لتساعدك في الأجزاء التي تفهمها بالفعل. يقدّم مقال كيف تتعلم البرمجة في 2026 خطة أشمل لتلك المرحلة الأولى، ويتناول مقال 13 خطأً شائعًا يقع فيه المبرمجون المبتدئون العادات التي تجعل أي كود، مولَّدًا كان أم لا، أصعب في تتبع أخطائه.

تقوم LevelUpGo على أن تكتب الكود بنفسك. يضع كل تمرين المفهوم بجوار محرر Go حقيقي بلا إكمال تلقائي بالذكاء الاصطناعي، ولا يُحتسب مكتملًا إلا عندما يُترجَم كودك ويجتاز الاختبارات. ابدأ بالدروس المجانية في Go Basics، أول دورة في مسار Go Fundamentals. ثم حافظ على مهارتك بتمارين مستقلة في Training Ground.

الأسئلة الشائعة

هل استخدام ChatGPT أثناء تعلم البرمجة غش؟

ليس غشًا، إلا إذا نصت دورتك على غير ذلك. الخطر أن تتخطى ما كان التمرين يهدف إلى تعليمك إياه. أن تطلب من الذكاء الاصطناعي شرح خطأ أو مفهوم يشبه أن تسأل معلمًا خاصًا. أما أن تطلب منه كتابة الحل فيعني أن التمرين لم يعد يدرّبك على شيء.

كيف أعرف أنني أفهم فعلًا الكود الذي كتبه الذكاء الاصطناعي؟

حاول تعديله دون مساعدة. أضف ميزة، أو تعامل مع حالة حدية جديدة، أو قل ماذا يحدث إذا حُذف سطر واحد. إذا استطعت أن تتوقع ما سيفعله الكود قبل تشغيله، فأنت تفهمه. وإذا لم تستطع إلا أن تشغّله وترى، فأنت تعرّفت عليه فقط. والتعرّف يبدو كالفهم وأنت في خضم العمل، وهذه بالضبط الفجوة التي يصفها Soderstrom وBjork (Soderstrom & Bjork, 2015).

ما التفريغ المعرفي في البرمجة؟

هو أن تترك الذكاء الاصطناعي يقرر البنية أو الخوارزمية أو الإصلاح بدلًا من أن تتوصل إليها بنفسك. وهذا فعّال بعد أن تمتلك المهارة. أما وأنت ما زلت تبنيها، فالتفريغ يحل محل التدريب، والأبحاث تربط التفريغ الأكثف بتفكير نقدي أضعف (Gerlich, 2025).

متى يستطيع المبتدئ استخدام أدوات البرمجة بالذكاء الاصطناعي بحرية؟

عندما تستطيع كتابة الأساسيات دون البحث عن أي شيء: الحلقات والدوال والـ maps والـ structs ومعالجة الأخطاء وHTTP handler بسيط. من هناك يسرّع الذكاء الاصطناعي عملك في ما تفهمه بالفعل. وعد إلى الكتابة اليدوية كلما بدأت شيئًا جديدًا، مثل أول كود متزامن تكتبه أو أول طبقة قاعدة بيانات.

هل سيحل الذكاء الاصطناعي محل المطورين المبتدئين؟

تشير الأبحاث إلى طريق واضح لتبقى ذا قيمة. يرى باحثو Stanford أن الذكاء الاصطناعي يتولى المهام القابلة للتقنين والتحقق، وأنه أقل قدرة على الحلول محل المعرفة الضمنية، أي الفهم الذي لا تكتسبه إلا بأداء العمل بنفسك (Stanford Digital Economy Lab, 2025). وهذا الجزء بين يديك. فالمبتدئ القادر على تتبع أخطاء ما يكتبه الذكاء الاصطناعي ومراجعته وشرحه يقدّم شيئًا لا تقدّمه الأداة، ويصبح أسرع أيضًا حين يستعين بها.

المصادر

اكتب Go كما يكتبها مهندس أول

دروس تفاعلية في متصفحك. الدروس الأولى مجانية.

جرّب درسًا مجانيًاأو أنشئ حسابًا مجانيًا