MeCoder הכניסה לעולם התכנות


איך לעבור ראיון עבודה כמתכנת

Work interview

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

לפני שאצלול לעולם הראיונות ואתחיל לפזר כאן שלל עצות שיעזרו לכם לעבור את הראיונות בהצלחה, קצת על הזווית האישית שלי בנושא. יצא לי לערוך הרבה ראיונות בחיי המקצועיים, רובם בגלגול הקודם שלי כשעבדתי כ-15 שנה בענף המזון והמשקאות. ראיינתי מתכנתים (ב-Fiverr וב-Homeis), ברמנים (במסעדה שלי Hermanos וב-Joey's Bar), טבחים, מלצרים, מנהלים, שפים (במסעדה שלי), אנשי מכירות (ביבואנית משקאות חריפים ״הכרם״ ובסיטונאות משקאות ״123״) ועכשיו אני בונה צוות פיתוח בחברת Artlist כך שרק בחודשיים האחרונים יצא לי לערוך מעל ל-30 ראיונות (בעיקר בזום).
כמובן שאנצל את הבמה ואגיד לכם שאנחנו מגייסים בטירוף כי ב-2021 אנחנו מכפילים את כוח האדם בחברה מ-150 עובדים בתחילתה עד ל-300 עובדים בסופה! לצערי כרגע אנחנו מחפשים רק מתכנתים עם ניסיון אבל סביר שברגע שנייצב את מחלקת הפיתוח המצב הזה ישתנה. אתם כמובן יותר ממוזמנים לבדוק באתר המשרות של Artlist אילו משרות פנויות כרגע.

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

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

הכנה לראיון

זהו כמובן השלב הכי חשוב בתהליך, ככל שתשקיעו בו יותר כך הראיונות עצמם יהיו בעלי ערך גבוה יותר. תתיחסו לשלב הזה ברצינות ותשקיעו בו את הזמן הנדרש.
אז עם מה נתחיל? כדברי המנטור האגדי סטיבן קובי - "Begin with the end in mind״ (ספר מאוד מאוד מומלץ בשם ״The 7 habits of highly effective people״), או בתרגום חופשי, איך אתם מדמיינים את מקום העבודה הבא שלכם? מה חשוב לכם שיהיה בו? עד כמה חשובה לכם סוג האנשים שנמצאים שם והכימיה איתם? עד כמה חשובה לכם הכימיה עם המנהל הישיר שלכם? עד כמה חשוב לכם עם אילו טכנולוגיות הם עובדים? צורת עבודה? המוצר עצמו? איזון בין בית לעבודה? ועוד הרבה שאלות צריכות לעלות לכם בראש כשאתם מתחילים עם התוצאה הסופית. ככל שיהיה לכם יותר ברור מה אתם מחפשים כך יעלו הסיכויים שלכם לזהות את מקום שכזה כשתפגשו בו. זה גם יחדד לכם שאלות שהייתם רוצים לשאול את המראיינים שלכם.
כמובן שאם אתם מחפשים עבודה ראשונה אז סביר להניח שתצטרכו להתפשר על הרבה דברים ומה שבאמת חשוב מבחינתכם יהיה לבנות את הצעד הראשון שלכם בקריירה, לדוגמא אם אני רוצה להיות מתכנת פרונט-אנד אז הדגש המרכזי מבחינתי יהיה - התעסקות מלאה בתחום, וזאת בניגוד לתפקידים שמתמקדים בבניית עמודי נחיתה בפרלפורמות כמו Wordpress או Joomla. פחות הייתי מוטרד מאיזון בית עבודה כי אין מה לעשות, כשאתם חסרי כל ניסיון הדבר הכי חשוב מבחינתכם זה לבנות את היסודות והניסיון הראשוני.

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

  1. Scope - בדגש על מה ה-scope של var, let, const, function.
  2. Hoisting - גם איך המנגנון עובד ומה ההבדל בין סוגי המשתנים השונים ופונקציות.
  3. This - איך הוא נקבע ואיך אפשר להגדיר אותו בעצמנו.
  4. Closure - כולל לכתוב דוגמא לכך.
  5. פונקציות אסינכרוניות.
  6. רקורסיות.
  7. Curryingץ
  8. Class inheritance and Object-oriented programming.
באופן כללי, אני ממליץ בחום רב על הקורס Advanced Javascript של Kyle Simpson.
עוד משהו שיכול לעזור להתכונן לתרגילי קוד הוא לתרגל באתר Code Wars כפי שכתבתי במאמר איך להתאמן בתכנות.

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

  1. תלמדו את הנושא.
  2. תסבירו אותו לילד (במקרה הזה למתכנת אחר).
  3. תסקרו מה לא הצלחתם להסביר בבירור.
  4. תפשטו (Simplify) את החלקים הלא ברורים ותחזרו לשלב 2. אם אתם לא מצליחים לפשט את ההסבר כנראה שאתם צריכים לחזור ל-שלב 1.

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

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

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

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

הראיון עצמו

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

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

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

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

אחרי הראיון

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

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