في السنة الخامسة من زواجها من فارس، تلقت ليلى رسالة صوتية وصورة على السرير من أول حب لفارس، أُرسلت من هاتفه، تحمل طابع التحدي والاستفزاز.
"رجعتُ إلى البلاد منذ ستة أشهر، وما إن لوّحتُ له بإصبعي حتى وقع في الفخ."
"الليلة حضّر لي ألعابًا نارية زرقاء، لكنني لا أحب الأزرق، وكي لا تُهدر، خذيها واطلقيها في ذكرى زواجكما."
بعد شهر، حلّت الذكرى السنوية الخامسة لزواجهما.
نظرت ليلى إلى الألعاب النارية الزرقاء تضيء خارج النافذة، ثم إلى المقعد الفارغ أمامها.
عادت الحبيبة السابقة لتستفزها بصورة لهما يتناولان العشاء على ضوء الشموع.
لم تصرخ ليلى، ولم تبكِ، بل وقّعت بهدوء على أوراق الطلاق، ثم طلبت من سكرتيرتها أن تُحضّر حفل زفاف.
"سيدتي، ما أسماء العريس والعروسة التي سنكتبها؟"
"فارس وريم."
وبعد سبعة أيام، سافرت إلى النرويج، لتتم زواجهما بنفسها.
ملك المستذئبين وإغواؤه المظلم
طوال ثلاث سنوات، انتظرت لأصبح "لونا" مثالية لقطيعي، وأمنح "الألفا" وريثًا. ثلاث سنوات من الأكاذيب، عشتها دخيلةً على حبٍّ لا يخصني. ثلاث سنوات ذقت فيها مرارة فقدان طفلي، وسعيت للانتقام من الرجل الذي شوّه وجهي ودمّر رحمي.
الموت أسيرةً بين يدي قطيعي، أو الهرب والنجاة... لم يكن أمامي سوى هذين الاختيارين. فاخترت أن أختبئ وأعيش.
ملك المستذئبين، ألدريك ثرون، الحاكم الأكثر دموية وقسوة، الذي قاد الذئاب بقبضة من حديد... أصبحت خادمته الشخصية، المنصب الأكثر خطورة على الإطلاق، حيث يمكن أن أفقد رأسي في أي لحظة بسبب أي خطأ تافه. لكنني كنت على يقينٍ من أن لا أحد من ماضيّ سيبحث عني هنا.
"كوني دومًا خاضعة. لا تتكلّمي، لا تسمعي، لا ترَي شيئًا، ولا تزعجي القائد، وإلاّ ستموتين."
قواعد بسيطة، وظننتُ أنني أجيد اتباعها... حتى جاء اليوم الذي قدّم فيه الملك عرضًا لم أستطع رفضه.
"أتريدين مني أن أنقذ هؤلاء الناس؟ إذن استسلمي لي الليلة. كوني لي. إنني أرغب بكِ، وأعلم أنكِ تشعرين بالرغبة ذاتها. مرّة واحدة فقط، فاليريا... مرّة واحدة فقط."
لكنها لم تكن مرةً واحدة. وتحول الشغف إلى حب. ذلك الرجل المتبلد الجامح الذي لا يُروّض، غزا قلبي هو الآخر.
غير أن الماضي عاد ليطارِدني، ومع انكشاف حقيقة مولدِي، وجدت نفسي مضطرة للاختيار من جديد، إمّا الفرار من ملك المستذئبين، أو انتظار رحمته.
"آسفة... لكن هذه المرّة، لن أفقد صغاري مرةً أخرى. ولا حتى من أجلك يا ألدريك."
فاليريا فون كارستين هو اسمي، وهذه حكاية حبي المعقدة مع ملك المستذئبين.
فرقهما القدر قديمًا وكان من المستحيل أن يجتمعا سويًا ولكنها أبت الاستسلام فقامت بعمل تلك التعويذة لتجمع بها عاشقين آخرين في زمن آخر علهما ينجحا فيما فشلت فيه.
ترا هل سينجحا في ذلك حقًا أم سيكون للقدر رأي آخر.
بعد عشرة أعوامٍ من الحبّ، وافق خطيبي سليم مراد على الزواج منّي أخيرًا.
فأثناء تصوير صور الزفاف، طلب منّا المصوّر التقاط بعض لقطات القُبل، فعبس مدّعيًا أنّ لديه وسواس نظافة، ودفعني مبتعدًا ثم غادر وحده.
تولّيتُ على مضض، الاعتذار باسمه إلى فريق العمل.
وفي يومٍ غارقٍ بالثلوج، لم أستطع العثور على سيارة أجرة، فسرتُ فوق الثلج خطوةً بعد خطوة، أعود إلى البيت بشقّ الأنفس.
لكنّني، ما إن دخلتُ بيت الزوجية، حتى رأيتُ سليم مراد يحتضن ندى أمجد ويقبّلها قبلةً لا فكاك منها.
قال لها: " ندى أمجد، كلمةٌ واحدة منكِ تكفي، وسأفرّ من هذا الزواج متى شئت."
سنواتُ الانتظار الأعمى غدت في تلك اللحظة مجرّد مهزلة.
وبعد بكاءٍ مرير، آثرتُ أن أكون أنا من يهرب من الزواج قبله.
لاحقًا، أخذ الناس في الدائرة كلّها يتداولون الخبر.
قيل إنّ أصغر أبناء عائلة مراد يطوف العالم بحثًا عن خطيبته السابقة، لا لشيءٍ سوى أن تعود إليه.
حبها لعثمان هو سر لا يمكن قوله.
لأن عثمان ليس شخصا آخر، بل هو عم تاليا.
هي الوردة التي كان يعتني بها بحنان، لكنه هو حبها الذي لا يمكنها أن تعبر عنه علنا.
في اليوم الثالث بعد ولادة طفلي، أخبرني زوجي أنه مضطر للسفر في رحلة عمل طارئة ولا يمكنه البقاء معي، تاركا إياي وحيدة لرعاية طفلنا.
بعد ثلاثة أيام، وبينما كنت في المستشفى، نشرت صديقته القديمة صورة عائلية على الفيس بوك مع تعليق:
"صورة من رحلتنا، عائلة سعيدة من ثلاثة أفراد"
نظرت بذهول إلى زوجي وهو يبتسم في الصورة العائلية، فعلقت بـ "؟"
اتصل بي زوجي على الفور غاضبا:
"إنها أم عزباء مسكينة ولم يكن لديها رجل يعتني بها. أنا فقط التقطت معها صورة بسيطة، لماذا أنت غيورة وضيقة الأفق هكذا؟"
في المساء، نشرت صديقته القديمة مرة أخرى متباهية بمجوهراتها التي تبلغ قيمتها 100 ألف دولار:
"بعد التقاط الصورة العائلية، أصر على إهدائي مجوهرات بقيمة 100 ألف دولار"
كنت أعلم أنه اشترى لها هذا ليهدئها.
لكن هذه المرة، قررت أن أتركه.
من خلال تجاربي مع أطفال مختلفين لاحظت أن البداية الصحيحة تصنع كل الفرق.
أبدأ دائمًا بالأدوات المرئية لأن عقل الطفل يتفاعل بسرعة مع السحب والإفلات والقصص: 'ScratchJr' و'Kodable' و'Lightbot' ممتازة للأطفال من 4 إلى 8 سنوات. هذه البرامج تعلم مفاهيم أساسية مثل التسلسل، الحلقات، والشروط بطريقة لعبية بسيطة. أحب أن أضع نشاطًا قصيرًا بعد كل جلسة — لعبة ورقية أو تمثيل — لتثبيت الفكرة بدون شاشة.
لأطفال أكبر قليلًا أو للصفوف الابتدائية العليا، أنتقل إلى 'Scratch' و'Code.org' و'Tynker' و'MakeCode' لأنها تمنحهم حرية أكبر لبناء مشاريع تفاعلية أو ألعاب بسيطة. بعدها أخطط لمشروعات صغيرة: لعبة متكاملة، قصة تفاعلية، أو تجربة مع 'micro:bit' أو 'Sphero' للتعرف على الأجهزة الحقيقية. عندما يصبح الطالب مستعدًا للانتقال إلى النصوص البرمجية، أوجّههم نحو 'Python' عبر 'CodeCombat' أو 'Trinket' أو 'Swift Playgrounds' للأطفال المهتمين ببيئة آبل.
ألاحظ أن المزج بين اللعب والمشروعات الواقعية (روبوت بسيط، مجسّم متحرك) والتمارين غير الرقمية يُحافظ على الحماس ويُنمّي مهارات حل المشكلات بصورة أفضل من الاعتماد على برنامج واحد فقط. هذه الخلطة أعطت نتائج رائعة معي في بناء ثقة الأطفال وحبهم للبرمجة.
أجد أن الجواب على هذا السؤال يعتمد كثيرًا على نوع الشغل الرقمي الذي تتصوره وما الذي تحب أن تفعله يوميًا. بعد سنوات من التجربة في مشاريع متنوعة عن بُعد، علّمتني التجربة أن عالم الفرص على الإنترنت يتسع ليشمل مهنًا تقليدية تعتمد على البرمجة، ومجالات إبداعية تعتمد على الكتابة، وفئات ثالثة لا تحتاج أيًّا منهما بشكل عميق.
هناك وظائف تقنية واضحة تطلب مهارات برمجة: تطوير الويب والتطبيقات، تحليل البيانات، أتمتة العمليات، وبناء واجهات برمجية. هذه الأدوار تتطلب فهمًا للغات مثل JavaScript أو Python، ومهارات هندسية في التصميم والاختبار والتعامل مع قواعد البيانات. أما وظائف تعتمد أساسيًا على الكتابة، فهي تتراوح بين كتابة محتوى تسويقي، تدوين، كتابة نصوص الفيديو والبودكاست، والتحرير الصحفي. في هذه الحالات، القدرة على السرد الجيد، الدقّة اللغوية، وفهم الجمهور أهم من معرفة أي كود.
لكن لا تَظُن أن الاختيارات محصورة بين هذين القطبين؛ هناك مساحات وسطى ممتعة. على سبيل المثال، مُصمم محتوى قد يحتاج لبرمجة بسيطة لتهيئة صفحات، وكاتب تقني قد يستفيد من معرفة أدوات إدارة المحتوى أو أساسيات SQL. كذلك ظهرت كثير من أدوات 'لا-برمجة' (no-code) التي تقلل الحاجة لخبرات برمجية عميقة، ما يفتح الباب أمام مسوّقين ومخططين محتوى ومديري منتجات للعمل بفعالية. وفي المقابل، مبرمجون ناجحون يحققون فارقًا كبيرًا حين يطوّرون مهارات كتابة تقنية واضحة لتوثيق أعمالهم وشرح حلولهم للعملاء.
نصيحتي العملية: اختَر طريقًا يحمسك، وابدأ ببناء محفظة أعمال بسيطة. لو كنت تميل للكتابة، انشر مقالات قصيرة، اعمل على مشاريع صغيرة، وطوّر أسلوبك في السرد. لو أميل للجانب التقني، ركّز على مشروع عملي يُظهِر مهاراتك (موقع بسيط، أداة صغيرة، أو تحليل بيانات). الاتقان في مهارات التواصل، إدارة الوقت، والتعلم المستمر غالبًا ما يتفوق على إجادة أداة معينة. في النهاية، ما جذبني للاستمرار هو تنوع المهام والقدرة على مزج المهارات: قليل من الكود، قليل من الكتابة، والكثير من التجربة التي تكشف لك أي درب يناسبك أكثر.
أذكر أنني بدأت رحلة التعلم مع دورات جوجل من دون أي خلفية تقنية، وكانت المفاجأة الجميلة أن العديد منها مهيأ تمامًا للمبتدئين. في أول مساق ألتحقته، شعرت أن اللغة بسيطة والمفاهيم تُشرح خطوة بخطوة، مع أمثلة عملية وتمارين صغيرة تساعد على الفهم. مكتبات الفيديو والمواد النصية عادةً تذكر بوضوح إن كانت الدورة «لا تحتاج خبرة سابقة» أو «مناسبة للمبتدئين»، فكنت أتحقق من هذا الجزء قبل الاشتراك.
لكن ليس كل دورات جوجل بنفس المستوى؛ بعض البرامج المتقدمة تتطلب حلاً بسيطًا للبرمجة أو مفاهيم سابقة. مثلاً، 'Google IT Automation with Python' يفترض أن لديك حس مبدئي في كتابة الأكواد أو أنك مرتاح مع المفاهيم الأساسية للبرمجة، بينما دورات مثل 'Google IT Support Professional Certificate' أو محتوى 'Google Digital Garage' غالبًا ما تبدأ من الصفر وتشرح الأمور العملية بوضوح.
نصيحتي العملية بعد تجربتي: اقرأ وصف الدورة بعناية، انظر إلى قائمة الموضوعات والفيديوهات التجريبية، وابدأ بدورات تضع عبارة «no prior experience» أو «suitable for beginners». إذا شعرت أن هناك فجوة، لا تخف من المرور بدورة تمهيدية قصيرة في أساسيات البرمجة (بايثون مثلاً) ثم العودة. التجربة العملية والتدرج هما أهم شيء، ومع القليل من الصبر ستجد أن معظم مواد جوجل المجانية يمكن الوصول إليها بسهولة، بينما القفز مباشرة إلى المحتوى المتقدم يحتاج استعداد بسيط.
أول ما أبدأ به عندما أقرر تخصيص سيفي لوظيفة برمجة محددة هو قراءة وصف الوظيفة وكأنني أحاول تقمص شخصية المُعلِن: ما هي المهارات المطلوبة؟ ما هي الكلمات المفتاحية؟ بعدها أعدّ ورقة العمل الخاصة بي.
أضع معلومات الخبرة والمهارات الأكثر توافقًا في بداية السيفي—ملخص قصير يذكر لغات البرمجة والأطر والتقنيات التي تطابق الإعلان، مع سطر يوضح نوع المشاريع التي أنجزتها وتأثيرها بأرقام بسيطة (مثل 'خفضت زمن الاستجابة بنسبة 30%'). أعدّل قسم الخبرات بحيث تُسهب في النقاط التي تتقاطع مع متطلبات الوظيفة، مستخدمًا أفعالًا عملية مثل 'صمّمت'، 'طبّقت'، 'حسّنت'، مع ذكر التقنيات المستخدمة في كل نقطة.
أحرص على إبراز روابط عملية: مستودعات GitHub، مشاريع حية، سيرة مصغرة في README، ولقطة شاشة إن لزم. أمحو أو أختصر الخبرات غير المرتبطة بمجال البرمجة، وأعيد ترتيب قائمة المهارات التقنية بحيث تظهر أولًا الأدوات واللغات المطلوبة في الإعلان. وأخيرًا، أتحقق من الكلمات المفتاحية لتتوافق مع أنظمة تتبع المتقدمين (ATS) وأرسل ملف PDF نظيفًا ومُنسقًا؛ هذا الترتيب البسيط يرفع فرصي في المرور للمرحلة التالية.
أحب ربط الأمور ببعضها، وبالنسبة لي تعلم البرمجة كان بمثابة عدسة جعلت الرياضيات تبدو أقل غموضاً وأكثر حياة.
في البداية كنت أتعلم البرمجة لأبني مشاريع صغيرة فقط، لكن سرعان ما صادفت مشكلات تتطلب فهم أساسيات مثل المتغيرات والمنطق الشرطي، وهذا قادني مباشرة إلى مفاهيم رياضية بسيطة مثل الجبر والمنطق البولياني. لاحقاً عندما حاولت رسم حركات لشخصية في مشروع لعبة بسيطة، أدركت أن المتجهات والمصفوفات ليست مفاهيم نظرية فقط بل أدوات عملية تجعل الحركة تبدو واقعية.
بعد تجربة صغيرة مع معالجة البيانات، أصبحت الإحصاء والاحتمالات أموراً يومية؛ فجأة فهمت لماذا المتوسط والانحراف المعياري يساعدان في فهم نتائج الاختبارات أو قياسات الأداء. بالمحصلة، البرمجة جعلت الرياضيات أقل خوفاً وأكثر تطبيقية بالنسبة لي، وبدلاً من حفظ معادلات جافة بدأت أرى أنها لغة لوصف الحلول، وأن إتقانها يفتح أبواباً لإبداع عملي حقيقي.
تفاصيل عمل استوديو التحريك على شخصية 'بيكي' مليانة حيل تقنية وفنية، وكنت متابع لكل خطوة لأنها مزيج جميل من الحرفية والابتكار.
في البداية كان كل شيء يبدأ من الورق: لوحات مفهوم تحدد الشخصية من حيث الحجم، والتعابير، وأسلوب الحركة الذي يناسب شخصيتها. بعد ذلك انتقل الفريق إلى النمذجة ثلاثية الأبعاد بنحت عالي الدقة لصياغة أشكال عضلات الوجه وتفاصيل الملابس، ثم يقومون بعمل إعادة تبسيط هندسية (retopology) لتجهيز الشخصية لمرحلة التحريك. الحيز الأهم كان الـrig: بناء هيكل عظمي رقمي مع تحكمات متقدمة للوجوه—مزيج من المفاصل التقليدية و'blendshapes' لتعابير الوجه، مع أنظمة تصحيح وضعيات (corrective shapes) لضمان عدم تشويه الموديل عند التحركات القاسية.
من ناحية الحركة استوديوهات كثيرة تعتمد على مبدأين متوازيين؛ استخدموا تسجيل حركة (motion capture) لالتقاط الإيقاع العام والحركات الكبيرة، ثم مرّروها خلال عملية تنظيف وإعادة توزيعات ليتناسب مع أسلوب 'بيكي'—هنا يأتي دور الأنيماتور الذي يضيف اللمسات اليدوية: مبالغة في الإيماءات، توقيت مختلف للخطوط الحوارية، وقواعد الـsquash and stretch لتكريس الطابع الكارتوني إذا احتاج المشهد. الوجوه غالبًا تعاملت عبر مزج بين تتبع تعابير الوجه الحي (facial mocap) وكتب تعابير جاهزة ليستطيع الفنانان خلق تفاصيل دقيقة كوميض العين أو ارتعاش الشفة.
الملابس والشعر كان لهما طبقة أخرى من الواقعية: محاكاة الأقمشة عبر أدوات مثل 'Marvelous Designer' أو نماذج في هوديني، وشعر يعتمد على بطاقات شعر أو أنظمة شعر فعلية مع محاكاة ثانوية تلتقط الريح والحركة. المواد والـshaders مزيج بين ملمس منطقي وإضاءة موجهة للحفاظ على أسلوب العمل الفني؛ أعين 'بيكي' مثلاً عولجت بعدة طبقات لعكس الضوء وإظهار الرطوبة بطريقة دقيقة دون أن تفقد الأسلوب الرسومي. أخيرًا، عملية الاندماج مع الإخراج تضمنت اختبارات ضوء يومية، playblasts، وجلسات نقد لتعديلات الطاقات الحركية حتى نشعر أن 'بيكي' تتنفس وتفكر وتتحرك بشكل حي ومقنع. بالنسبة لي، أكثر ما جذبني هو الانتباه للتفاصيل الصغيرة—حركة جفن، تغيير بسيط في الوزن عند الوقوف—هذه الأشياء هي اللي تخلي الشخصية حية فعلاً.
أعتبر محفظة المشاريع كالسيرة المرئية التي تقرأها الشركات عني قبل المقابلة.
أبدأ دائماً بتحديد هدف المحفظة: هل أريد دور مهندس واجهات أمامية أم منصب هندسي عام؟ بعد تحديد الهدف أختار 5 إلى 8 مشاريع تمثل أفضل ما لدي — مزيج من مشاريع شخصية حقيقية، مساهمات مفتوحة المصدر، ومشاريع عمل أو تدريب إن وُجدت. لكل مشروع أكتب دراسة حالة قصيرة توضح المشكلة التي حلتها، دوري بالضبط، التقنيات المستخدمة، وأهم النتائج أو المقاييس (مثل: زيادة أداء الصفحة بنسبة 40%، خفض زمن الاستجابة من 800ms إلى 200ms). أضع أيضاً رابطاً للمستودع ونسخة حية إن أمكن، وصور شاشة أو فيديو عرض سريع مدته 1–3 دقائق يشرح الفكرة.
أهتم بجودة العرض بقدر اهتمامي بجودة الكود: صفحة هبوط بسيطة للمحفظة تحمل نبذة واضحة، رابط للسيرة الذاتية، طرق التواصل، ومقاطع توضيحية. في المستودعات أحرص على README مرتب، أمثلة تشغيل، اختبارات أساسية وملفات تكوين CI. ولا أنسى قسم يوضح قرارات التصميم والمشاكل التي لم أحلها بعد؛ الصراحة تنقل نضجاً مهنياً. أختم بأن أراجع المحفظة كل بضعة أشهر، أزيل المشاريع الضعيفة وأحسّن شرح المشاريع القوية، فالمحفظة نهج حي يتطور مع كل مشروع جديد.
كل مشروع برمجي كبير بالنسبة لي أشبه ببناء مدينة: تحتاج شوارع (البنية التحتية)، قوانين مرورية (عمليات)، ومراكز مراقبة (مراقبة وأخطاء). خلال سنوات عملي، تعلمت أن الأدوات ليست رفاهية بل ضرورة لتنظيم العمل وجعله قابلاً للتكرار.
أبدأ دائماً بأدوات التحكم في الشيفرة—'git' مع منصات مثل GitHub، GitLab أو Bitbucket لتخزين التاريخ وإدارة فروع العمل. على مستوى التكامل المستمر والنشر المستمر (CI/CD) نعتمد على Jenkins أو GitLab CI أو GitHub Actions وربما CircleCI لبناء الحزم وتشغيل الاختبارات ونشر النسخ تلقائياً. أدوات البناء وإدارة الحزم مثل Maven، Gradle، npm، yarn، وpnpm مهمة لبيئات لغات متعددة، بينما Bazel مفيد للمشاريع الضخمة متعددة المكاتب.
أما جودة الشيفرة والاختبارات فهناك SonarQube وESLint وpylint لاكتشاف المشكلات المبكرة، وإطارات اختبار مثل JUnit، pytest، Jest. لا أنسى إدارة الحاويات ونسق البيئة: Docker وDocker Compose لتوحيد بيئة التطوير، وKubernetes لإدارة الحاويات على نطاق الإنتاج. للبنية التحتية ككود نستخدم Terraform، Ansible، أو CloudFormation لتجسيد الموارد بشكل قابل للإصدار.
لمراقبة الأنظمة واكتشاف المشكلات نعتمد على Prometheus وGrafana للقياسات، وELK Stack أو Loki/Fluentd للوجات، وJaeger أو OpenTelemetry للتتبع الموزع. وأخيراً أدوات إدارة المشاريع والتذاكر مثل Jira، Confluence، وTrello تحافظ على تنظيم المتطلبات والمهام. عندما تُدمج كل هذه الأدوات مع سياسات مراجعة الشيفرة واختبارات آلية وSLOs واضحة يصبح المشروع كبيراً لكنه قابل للإدارة، وهذا ما يجعلني أشعر بالأمان عند إطلاق تحديثات جديدة.
أستطيع أن أعدّ قائمة بالأسباب التي تجعل سوق العمل قاسٍ على خريج هندسة البرمجيات، لكن أهم ما يلفت نظري هو الفجوة العملية بين الدراسة والحاجة الحقيقية للشركات.
الجامعات تعطيك أساساً نظرياً مهماً، لكن كثير من الخريجين يخرجون بدون مشاريع حقيقية تُعرض لرب العمل؛ مشاريع تُبيّن أنك بنيت نظامًا، حليت مشكلة أداء، أو عملت ضمن فريق. كذلك، المناهج قد تكون قديمة بالنسبة للتقنيات المطلوبة اليوم مثل الحوسبة السحابية، الحاويات، أو أنماط التصميم الحديثة. النتيجة؟ سيرة ذاتية تبدو جيدة على الورق لكنها لا تنقل القدرة على التنفيذ.
أضف إلى ذلك نقص المهارات الشخصية: التواصل، العرض، إدارة الوقت، والعمل ضمن فريق. كثير من مقابلات التوظيف تبحث عن خبرة ملموسة وحل مشاكل واقعية، وليس مجرد درجات جيدة. المنافسة شرسة أيضاً؛ مئات السير الذاتية تصطف أمام كل فرصة عمل، وشركات التوظيف تستخدم مرشحات آلية تقصي المرشحين غير المطابقين للكلمات المفتاحية.
نصيحتي العملية: ركّز على بناء ملف أعمال عملي على GitHub، وأنجز مشروعًا واحدًا يمكنك شرحه من البداية للنهاية، شارك في مشاريع مفتوحة المصدر، واطلب تدريبًا صغيرًا أو عملًا حرًا حتى لو بأجر ضئيل للحصول على خبرة فعلية. وأهم شيء: تعلم كيف تحكي قصتك في المقابلات — ماذا بنيت، ما التحدي، وما النتيجة. بهذه الخطوات تتحول من مجرد خريج إلى شخص يمكنه إثبات قدرته في أول يوم عمل، وهذا ما يفتح الأبواب فعلاً.
أتذكر مختبر الاختبارات في الجامعة وكأنها معسكر تدريبي صغير: بين أدوات قياس التغطية، وحركات كتابة حالات الاختبار، تعلمت أن الاختبار ليس مجرد الضغط العشوائي على الأزرار.
في البداية، منحتني دورات هندسة البرمجيات إطارًا منظَّمًا لفهم أنواع الاختبارات—وحدة، تكامل، نظام، قبول—فقط لأن المُحاضر فصل المفاهيم وطلب منا تصميم حالات اختبار لكل مرحلة. هذا التنظيم جعلني أتعلم كيف أترجم متطلبات غير واضحة إلى سيناريوهات قابلة للاختبار، وهو مهارة لا تُقدَّر بثمن في سوق العمل.
بعدها جاء التطبيق العملي: كتابة اختبارات وحدية باستخدام مكتبات، وقياس التغطية، ومحاكاة المكونات، ثم ربط كل ذلك بأنظمة التكامل المستمر. أكثر ما أثر فيَّ كان تمرينان؛ أحدهما على كتابة اختبارات لميزة جديدة دون الاطلاع على الكود الأصلي، والآخر كان تقارير عيوب تُظهِر كيف يُمكن لحالة اختبار جيدة أن تكشف افتراضًا خاطئًا لدى المصمم. هذه الدورات بدّلت طريقتي في التفكير: من البحث عن حل سريع إلى التفكير بمنطق «هل يمكن اختباره؟»، وهذا التحول هو ما يصنع مطوِّرًا واعيًا وصانع برامج أكثر موثوقية.