Analysis of Problem Solving Interviews

لماذا تتمحور الإنترفيوز في كثير من الشركات حول الproblem solving أو حل المشكلات؟ وكيف يمكن للمُحاور أن يكشف الكثير عن عقليتك وطريقة تفكيرك فى فترة زمنية قصيرة
Analysis of Problem Solving Interviews

في هذه الصفحة

لماذا تتمحور الإنترفيوز في كثير من الشركات حول الproblem solving أو حل المشكلات؟ وكيف يمكن للمُحاور أن يكشف الكثير عن عقليتك وطريقة تفكيرك فى فترة زمنية قصيرة، مثل نصف ساعة أو ساعة إلا ربع تقريبًا؟ في هذه المقالة سأوضح الإسقاط الفعلي لما يحدث في الانترفيو على أمور أخرى متعلقة بالحياة المهنية في سبع نقاط

1.اسأل, ولا تفترض!

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

2.Know the constraints & limitations

في الانترفيو قبل أن تبدأ في حل المسألة، هل تسأل عن ال constraints وال limitations المتعلقة بالمسألة أم لا؟ عندما تسأل عن constraints المسألة، تتعرف بشكل أكبر على الوقت الممكن أن يستغرقه البرنامج أو أكبر memory space يمكن أن يستهلكها. هذا ينعكس على أرض الواقع بنفس الشكل، حيث لا تكتب كود له performance سئ مما يستغرق وقتًا أطول في التنفيذ، أو على سبيل المثال انك تكون بتستخدم داتا بيز وبترجع كل البيانات في الميموري، فبالتالي قد لا يكون هذا أفضل استخدام للresources المتاحة لدينا. بالإضافة إلى ذلك، الاهتمام بمعرفة ال limitations يعكس أنك قبل أن تبدأ العمل على تاسك أو service معينة، تعرف scale وحجم المشروع من البداية؛ لبناء systems تكون scalable و stable، حتى لا تجد نفسك في منتصف الطريق ويتضح أنه كان ينبغي أن تتبع طريقًا آخر للتفكير على مستوى أكبر.

3. ابدأ بحل بسيط ثم حسًنه

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

4.احرص علي التواصل

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

5. اكتب كود منظم ونظيف

عندما تقوم بكتابة كود الحل للمسألة، فمن المهم أن يكون الكود واضحًا ومفهومًا، باستخدام أسماء متغيرات مفهومة وتقوم بتقسيم الكود إلى functions منفصلة كل منها مسئول عن شئ محدد. هل تقوم بذلك أم تكتب spaghetti code غير مفهوم بدون comments؟ تلك النقطة واضحة أهميتها على أرض الواقع، حيث تعكس قدرتك على كتابة clean code مفهوم يتبع الbest practices.

6.كن مرنًا واستخدم التلميحات بحكمة

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

7. Trace & Test your code well

عند الانتهاء من كتابة الكود في الانترفيو، لا ينتهي دورك بعد ذلك. من المهم أن تقوم بعمل tracing و testing للكود الذي قمت بكتابته. يجب عليك التأكد من أن الكود يعمل كما هو متوقع، وأنه يُغطي جميع الحالات الممكنة وال edge cases. نفس الشئ مهم على أرض الواقع، لإنتاج مشاريع بها أقل نسبة مشاكل ممكنة.

في الختام

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

اشترك الآن بنشرة اقرأ-تِك الإخبارية

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