السلام عليكم يا جماعة الخير،
خلوني أحكيلكم قصة صارت معي قبل كم سنة، قصة كل ما أتذكرها بضحك على حالي وبشكر ربنا على اللي تعلمته منها. كنت وقتها بقدم على وظيفة “مطور برمجيات أول” في شركة محترمة. سيرتي الذاتية كانت قوية، وخبرتي ممتازة، وكنت “مفلت” في التقنيات اللي بشتغل فيها. دخلت المقابلة الأولى وكانت تمام، حكينا عن المشاريع السابقة وعن خبرتي، والأمور كانت “عال العال”.
المصيبة بلشت في المقابلة التقنية الثانية. دخلت غرفة الاجتماعات، وإذ بالمنظر اللي كل مبرمج بكرهه: سبورة بيضاء (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)، وتدربت على مهارة حقيقية. ما تخاف من المقابلات، اعتبرها فرصة لتستعرض عضلاتك البرمجية الحقيقية. كل مشروع بتعمله هو لبنة في بناء اسمك وهويتك كمطور. يلا شدوا حيلكم يا جماعة!