كانت المقابلات التقنية كابوساً: كيف أنقذني ‘المشروع المنزلي’ من جحيم الخوارزميات على السبورة البيضاء؟

السلام عليكم يا جماعة الخير،

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

المصيبة بلشت في المقابلة التقنية الثانية. دخلت غرفة الاجتماعات، وإذ بالمنظر اللي كل مبرمج بكرهه: سبورة بيضاء (Whiteboard) كبيرة، وأقلام جافة ملونة، ومهندس مقابل إلي وجهه ما ببشر بالخير. بعد مقدمة سريعة، ابتسم ابتسامة خبيثة وقال لي: “تخيل عندك مصفوفة من الأرقام، وبدنا نلاقي أطول سلسلة متزايدة فيها… اكتب لنا خوارزمية تحل هاي المشكلة”.

في هذيك اللحظة، حسيت كل الدم اللي في جسمي تجمع في راسي. أنا يا جماعة بشتغل في بناء أنظمة وتطبيقات حقيقية، بتعامل مع قواعد بيانات ضخمة، وببني واجهات برمجية (APIs) بتخدم آلاف المستخدمين. آخر مرة شفت فيها هاي النوعية من الأسئلة كانت في مادة “الخوارزميات وهياكل البيانات” في السنة الثانية جامعة! عقلي صار فاضي… زي صحن الحمص بعد هجوم كاسح. صرت أخبّص وأرسم مربعات ودوائر على اللوح، والعرق يتصبب مني، وهو قاعد بهز براسه وبيقول “ممم… طيب…”.</

طلعت من هذيك المقابلة وأنا حاسس حالي أكبر فاشل في تاريخ البرمجة. كيف أنا، أبو عمر، اللي بنيت أنظمة من الصفر، مش عارف أحل سؤال نظري على لوح أبيض؟ هاي الحادثة كررت نفسها بأشكال مختلفة، وخلتني أكره شيء اسمه “مقابلات تقنية”.

لماذا المقابلات التقليدية قد تكون فخاً؟

بعد ما أكلت كم “مقلب” محترم في المقابلات، قعدت مع حالي وفكرت. المشكلة مش فيّ بالضرورة، المشكلة في طريقة التقييم نفسها. المقابلات القائمة على السبورة البيضاء لها عيوب قاتلة:

  • بيئة مصطنعة وغير واقعية: في شغلنا اليومي، ما حدا بيكتب كود على سبورة. معنا أجهزتنا، محرر الأكواد المفضل، وصول للإنترنت (نعم، كلنا بنستخدم Stack Overflow!)، ووقت للتفكير والبحث.
  • قياس الذاكرة لا المهارة: هي بتركز على قدرتك على حفظ حلول لمسائل خوارزميات مشهورة، مش على قدرتك على حل المشاكل الحقيقية اللي بتواجه المبرمج كل يوم.
  • الضغط النفسي العالي: التوتر بيلعب دور كبير. كثير من المبرمجين الشاطرين بتجمدوا تحت الضغط، وهذا لا يعني أنهم غير أكفاء.

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

التحول الكبير: اكتشاف قوة ‘المشروع المنزلي’ (Take-Home Assignment)

في خضم يأسي من المقابلات، قدمت على وظيفة في شركة أخرى. بعد المقابلة الأولى، توقعت الدعوة لجولة جديدة من التعذيب على السبورة. لكن اللي صار كان مفاجأة. وصلني إيميل بيقول: “شكراً لوقتك يا أبو عمر. الخطوة التالية هي مشروع منزلي صغير. لديك 3 أيام لتسليمه”.

قرأت الإيميل مرة ومرتين وثلاثة. يا ويلي! معقول؟ أخيراً فرصة أبرز فيها عضلاتي الحقيقية. المشروع كان عبارة عن بناء واجهة برمجية (API) بسيطة لإدارة قائمة مهام (To-Do List). المتطلبات كانت واضحة: إضافة مهمة، تعديلها، حذفها، وعرض كل المهام.

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

كيف تتألق في مشروعك المنزلي: دليل أبو عمر العملي

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

1. اقرأ المتطلبات بتمعن… ثم اقرأها مرة أخرى

أول خطوة، لا تستعجل وتفتح محرر الأكواد. افتح فنجان قهوة واقرأ كل كلمة في المتطلبات. اعمل قائمة (Checklist) عشان تضمن إنك ما نسيت أي شيء. مش زي أيام الجامعة، تسلّم المشروع ناقص وتتأمل بالرحمة من الدكتور.

2. الكود النظيف هو عنوانك

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


// ❌ طريقة سيئة: أسماء غير واضحة
function proc(d) {
  // ... منطق معقد
}

// ✅ طريقة ممتازة: أسماء واضحة ومعبرة
function calculateTotalPriceForCart(cartItems) {
  // ... منطق واضح وسهل القراءة
}

3. أظهر احترافيتك بالاختبارات (Testing)

حتى لو لم يطلبوا منك ذلك صراحة، كتابة بعض الاختبارات البسيطة (Unit Tests) تنقل مشروعك من مستوى “هاوي” إلى مستوى “محترف”. هذا يثبت أنك تهتم بجودة الكود واستقراره.


// مثال بسيط باستخدام Jest
describe('Task API', () => {
  it('should create a new task successfully', async () => {
    const response = await request(app)
      .post('/api/tasks')
      .send({ title: 'Finish the take-home project' });
    
    expect(response.statusCode).toBe(201);
    expect(response.body.title).toBe('Finish the take-home project');
  });
});

4. التوثيق هو بطاقتك الرابحة (Documentation)

ملف README.md ليس رفاهية، بل هو ضرورة قصوى. إنه أول شيء سيراه المراجع. اشرح فيه:

  • ما هو المشروع؟
  • كيفية تثبيت وتشغيل المشروع (الأوامر مثل npm install و npm start).
  • كيفية تشغيل الاختبارات (npm test).
  • أي قرارات تقنية اتخذتها ولماذا (مثلاً: “استخدمت قاعدة بيانات SQLite لسهولة الإعداد بدلاً من PostgreSQL”).

هذا الجزء هو فرصتك “للتحدث” مع المقيّم وشرح طريقة تفكيرك.

5. استخدم Git كالمحترفين

لا تقم بعمل commit واحد كبير في النهاية. قسم عملك إلى commits صغيرة ومنطقية مع رسائل واضحة (e.g., “feat: Add endpoint to create tasks”, “fix: Handle validation errors”, “docs: Update README file”). هذا يظهر سير عملك المنظم وطريقة تفكيرك التقسيمية لحل المشاكل.

ما بعد التسليم: المقابلة التي تحبها

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

  • “لاحظنا أنك استخدمت Middleware هنا، اشرح لنا سبب اختيارك.”
  • “لو كان لديك أسبوع إضافي، ما هي التحسينات التي كنت ستضيفها؟”
  • “كيف يمكننا تطوير هذا المشروع ليتعامل مع مليون مستخدم؟”

كانت أفضل مقابلة تقنية في حياتي. لم أكن متوتراً، بل كنت أتحدث بحماس عن “صنعتي”. كنت أشرح قراراتي بثقة لأنني أنا من اتخذها. كانت محادثة بين مهندسين، وليست اختبار ذاكرة.

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

خلاصة الكلام والنصيحة الأخيرة من أبو عمر 👨🏻‍💻

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

عندما تأتيك فرصة “مشروع منزلي”، اعتبرها هدية. إنها فرصتك لتظهر من أنت حقاً: مهندس يحل المشاكل، وليس آلة لحل الألغاز. استثمر فيها وقتك وجهدك، واعتبرها قطعة فنية تعرض فيها أفضل ما لديك.

حتى لو لم تحصل على الوظيفة، فأنت لم تخسر. لقد تعلمت شيئاً جديداً، وأضفت مشروعاً صغيراً إلى محفظتك (Portfolio)، وتدربت على مهارة حقيقية. ما تخاف من المقابلات، اعتبرها فرصة لتستعرض عضلاتك البرمجية الحقيقية. كل مشروع بتعمله هو لبنة في بناء اسمك وهويتك كمطور. يلا شدوا حيلكم يا جماعة!

أبو عمر

سجل دخولك لعمل نقاش تفاعلي

كافة المحادثات خاصة ولا يتم عرضها على الموقع نهائياً

آراء من النقاشات

لا توجد آراء منشورة بعد. كن أول من يشارك رأيه!

آخر المدونات

برمجة وقواعد بيانات

تحديثات قاعدة البيانات بدون توقف: كيف أنقذنا نمط التوسيع والتعاقد (Expand/Contract) من جحيم التوقفات المجدولة؟

هل سئمت من إيقاف الخدمة مع كل تحديث لهيكلة قاعدة البيانات؟ أشارككم قصة حقيقية وكيف أنقذنا نمط التوسيع والتعاقد (Expand/Contract) من ليالي النشر الطويلة والمُجهدة،...

4 يونيو، 2026 قراءة المزيد
الشبكات والـ APIs

كانت إعادة المحاولة كارثة: كيف أنقذتنا مفاتيح عدم تكرار العمليات (Idempotency Keys) من جحيم الفواتير المزدوجة؟

أشارككم قصة حقيقية من الخنادق البرمجية، يوم كاد خطأ بسيط في إعادة محاولة طلبات الدفع أن يكلفنا سمعتنا وأموال عملائنا. اكتشفوا معنا كيف كانت مفاتيح...

4 يونيو، 2026 قراءة المزيد
الحوسبة السحابية

من التوقف التام إلى النجاة: كيف أنقذتنا استراتيجية “الضوء المرشد” (Pilot Light) يوم انقطعت السحابة؟

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

4 يونيو، 2026 قراءة المزيد
التوظيف وبناء الهوية التقنية

كانت مهمتي البرمجية للاختبار مجرد كود: كيف أنقذني توثيق القرارات من جحيم الصمت بعد المقابلة؟

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

4 يونيو، 2026 قراءة المزيد
التكنلوجيا المالية Fintech

من الانتظار لأيام إلى الدفع في ثوانٍ: كيف أنقذتنا شبكات الدفع الفوري من جحيم التحويلات البنكية؟

أسرد لكم من واقع تجربتي كـ "أبو عمر"، كيف عانينا من بطء وتكلفة التحويلات البنكية الدولية، وكيف جاءت شبكات الدفع الفوري ومعيار ISO 20022 لتكون...

4 يونيو، 2026 قراءة المزيد
البنية التحتية وإدارة السيرفرات

كان كل خادم لدينا ‘ندفة ثلج’ فريدة: كيف أنقذنا ‘الكود كبنية تحتية’ (IaC) من جحيم الانجراف اليدوي؟

في هذه المقالة، أشارككم قصة حقيقية من قلب المعركة التقنية مع "خوادم ندفات الثلج" الفوضوية. سنغوص في مفهوم "الكود كبنية تحتية" (IaC) وكيف أن أدوات...

4 يونيو، 2026 قراءة المزيد
اختبارات الاداء والجودة

كانت تغطية الاختبارات 100% لكن الأخطاء تتسرب: كيف أنقذنا “الاختبار الطفري” من جحيم الثقة الزائفة؟

كنا نظن أن تغطية الاختبار بنسبة 100% هي درعنا الواقي، لكن الأخطاء كانت تتسلل إلى الإنتاج كاللصوص في ليل بهيم. اكتشف كيف أنقذنا "الاختبار الطفري"...

4 يونيو، 2026 قراءة المزيد
البودكاست