• בלוג
  • מראיינים למשרת תכנות? אתם שואלים את השאלות הלא נכונות

מראיינים למשרת תכנות? אתם שואלים את השאלות הלא נכונות

28/05/2015

בשיחות עם חברים המראיינים מתכנתים לעבודה חוזר ועולה הקושי להעריך רמה מקצועית של מתכנת דרך ראיון. אותם חברים מספרים בתסכול על מרואיינים שמגיעים מוכנים לראיונות, מצליחים לפתור את כל החידות שם אבל בעבודה האמיתית מתגלים כאנשים שונים לגמרי מהרושם שעבר בראיון. שלב השאלות המקצועיות הופך למסננת הלא נכונה: במקום לבדוק מי מתכנת טוב אנו בודקים מי הגיע מוכן לראיון.

הפתרון הקל למצב? בואו נשאל שאלות שאי אפשר להתכונן אליהן. הנה 4 דוגמאות לשאלות כאלו.

1. שאלו על הרגלים

השאלות הכי קלות שאנו לא שואלים הן על הרגלים. לא הרגלי חיים בריאים כמובן אלא הרגלים בתכנות: האם המתכנת שמולכם כותב תיעוד כמו שצריך, האם הוא כותב בדיקות יחידה. נסו לתת למרואיין קטע קוד בלי להסביר מה הקוד מבצע ובקשו שיבין לבד מה תפקיד הקוד ויוסיף לקובץ תיעוד. כשהמרואיין ישאל איזה סוג תיעוד אתם רוצים ענו פשוט ״כתוב כמו שאתה רגיל״.
לחלופין נסו את אותו התרגיל עם בדיקות יחידה: תנו למרואיין קוד של מחלקה ובקשו שיכתוב עבורה בדיקות יחידה. באיזה ספריית בדיקות להשתמש? ״כמו שאתה רגיל״. 

הרגל נוסף שכדאי לבדוק הוא מודעות למקרי קצה. נסו לתת למועמד שלכם לכתוב קטע קוד פשוט, לדוגמא קוד הסופר כמה שורות ריקות יש בקובץ. האם הוא התיחס למצב שהקובץ לא קיים? שהקובץ אינו קובץ טקסט? האם ווידא שהתוכנית לא קוראת את כל תוכן הקובץ לזכרון? גם אם הקובץ כולל שורה אחת בלבד?
מתכנתים טובים ישימו לב לכל הנקודות האלה, ולפחות יעלו אותן לדיון כשיכתבו את הקוד. 

2. שאלו על שיקולים

MongoDB או MySQL? רובי או פרל? פלאש או מבוסס ווב? תבנית העיצוב Decorator או תבנית העיצוב Adapter? כל התלבטות כזאת יכולה להפוך לשאלה מרתקת בראיון עבודה (בתנאי שהמועמד מכיר את שתי הטכנולוגיות). כך למשל עבור בסיסי נתונים אפשר להציג מערכת מידע ולשאול האם במערכת זו מומלץ להשתמש ב MongoDB או MySQL ומדוע. 

הציגו למרואיין קטע קוד ובקשו לשנות את התנהגות המערכת או להוסיף תמיכה ביכולת מסוימת. שאלו מהם השיקולים שהביאו לבחירה בדרך פעולה כזו או אחרת, בדקו האם היה שימוש בתבנית עיצוב ידועה ואם כן למה דווקא היא נבחרה — בקיצור תנו למרואיין שלכם לדבר על הפתרון. 

3. שאלו על התחום

אנשי מקצועי יודעים לספר על התחום שלהם כי הם קוראים, מתעניינים ומדברים עם אנשי מקצוע אחרים. כך למשל אם תרצו לזהות מתכנת פרל מקצועי בלי שאלה טכנית אחת תוכלו לברר באיזו גירסת פרל הוא משתמש ושאלו אם הוא יודע מהי הגירסא החדשה ביותר כיום (ומתי תשוחרר הבאה). שאלו מיהו rjbs והאם הוא עוקב אחר chromatic. שאלו מהו הכנס הגדול בתחום ומתי והיכן מתקיים. האם השתתפת בו? האם הרצית בו?. 

אלה שאלות לא טכניות שיכולות לפתוח דיון מרתק. הן גם בודקות הכרות אמיתית עם התחום והתעשייה, היכרות השמורה לאנשי מקצוע בלבד.

4. בדקו מיומנות

מה עוד פעם פיזבאזז? כן בהחלט. או כל קוד אחר כמובן. יותר מדי מראיינים מבקשים מהמועמד הפוטנציאלי לספר איך עובד אלגוריתם מסוים במקום לבדוק יכולת תכנות. אתם לא צריכים לבדוק שהמועמד יודע איך עובד Quicksort כי הוא יבדוק את זה ברגע בויקיפדיה. אתם כן צריכים לוודא שהמועמד שמולכם מסוגל לקחת רעיון וליישם אותו בקוד באופן עצמאי. זו המשמעות של מיומנות.
בתקווה שלא להכעיס יותר מדי קוראים ההמלצה האחרונה שלי היא לתת תרגיל תכנותי לכתיבה עם עפרון על דף. הדגש כאן צריך להיות על המימוש ולא על לגלות את הפתרון או הרעיון של האלגוריתם. 

אין טעם להמשיך לשאול חידות הגיון שכל מה שהן בודקות זה כמה המועמד התכונן לראיון ויודע ליישם את הטריקים שלמד. מה שמעניין אתכם הוא לקבל מתכנתים טובים, אז בואו נתחיל לשאול על זה.
יש לכם רעיונות נוספים לשאלות? מוזמנים לחלוק בתגובות.