איך מתכוננים לראיונות, חלק א'

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

 

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

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

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

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

 

שאלות בראיון טכני עשויות לכלול אחד או יותר מהאלמנטים הבאים:

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

(כמובן, אלו לא כל הנושאים האפשריים לשאלות, אבל להערכתי, הרשימה הזו נותנת כיסוי סביר).

 

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

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

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

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

 

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

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

 

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

  • מבני נתונים: המראיינת עשויה לבקש שתתכנתי פעולה על מבנה נתונים קלאסי, למשל "הכנסה לעץ חיפוש בינארי". מבני הנתונים הללו הם בעיקר: עץ חיפוש, טבלת האש, וערימה, והפעולות הרלבנטיות הן בעיקר הכנסה, מחיקה, וחיפוש. בהקשר של עצים יש גם סריקות pre/in/post-order, מציאת איבר עוקב, וכו'. אני מציע לבחור אקראית כמה מצבים כאלה, ולתרגל בעזרתם. זאת הזדמנות טובה לוודא שאת זוכרת איך מבני הנתונים הקלאסיים עובדים, כולל הסיבוכיות שלהם, כי את עשויה להישאל על זה גם בע"פ 🙂
  • מיונים: כדאי לשלוט בעיקר ב-QuickSort ו-MergeSort, כך שתוכלי להסביר איך הם עובדים ולתכנת אותם. כדאי גם להיות מסוגלת להסביר למה הם רצים ב-(O(n logn, בפורמט של הסבר אינטואיטיבי, לא הוכחה פורמלית.
  • אלגוריתמים על גרפים: BFS, DFS, Dijkstra הם בגדר "חובה", ואת בהחלט עשויה להישאל עליהם. ייתכן שכדאי לחזור גם על Bellman-Ford ו-Floyd-Warshall. להבנתי, לא נהוג לשאול על אלגוריתמי גרפים נוספים.
  • תכנות דינמי: אם יש לך חומר בנושא מהתואר ואת יודעת להתמצא בו, הייתי לומד ממנו ומתכנת את תרגילי הבית בנושא. אם לא, פה יש הרצאות עם דוגמאות.
  • חיפוש בינארי – אין פה הרבה מה להרחיב, בעיקר לוודא שאת יודעת לתכנת חיפוש בינארי 🙂

 

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

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

יש גם ספר שמכיל שאלות כאלו: Cracking The Coding Interview. נתקלתי בכמה המלצות שמתייחסות אליו בתור הספר ה"קאנוני" לצורך הזה, אך כמובן שהוא לא היחיד.

 

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

 

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

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

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

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

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

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

עדכון, 7.8.2017: פוסט ההמשך על הכנה לראיונות עלה. תבלו 🙂

תקציר מנהלים לסטודנטית העסוקה, חלק ב'

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

 

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

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

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

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

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

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

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

שליטה ב-Office זה סעיף שלא תורם, ואף יוצר רושם מוזר. עדיף להימנע מלכלול אותו.

 

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

 

גם אם יש לכם ממוצע נמוך אתם עדיין תצליחו למצוא עבודה, וכדאי להירגע 🙂
הסיכוי המספרי שלכם להשתלב בתעשיה הוא כנראה למעלה מ-90 אחוז.
אם אתם בכלל קוראים את הטקסט הזה, סביר שיש לכם סיכוי טוב להשתלב בתעשיה, ולו מכיוון שאתם מוכנים להשקיע את הזמן בלנווט את הקריירה שלכם.
מעסיקים אמנם מעדיפים מתכנתות עם נסיון, אבל לא יכולים לגייס אותן מתי שהם רוצים, ולכן פותחים משרות ג'וניור. הם לא תמיד רגישים לממוצע של מועמדים במשרות הללו, למשל כי לא צפוי להיות הבדל מורגש בפרודוקטיביות בין בוגר עם ממוצע 80 ובוגר עם ממוצע 75.
ראיונות הם כר פורה להתנהגות מתנשאת ולא נחמדה, ולא כדאי לתת למראיין לא סימפטי אחד להוציא לכם את הרוח מהמפרשים – זה קורה לכולם, גם למתכנתים בכירים עם קורות חיים מעולים. לרוב תצטרכו לשלוח הרבה קורות חיים בשביל לקבל יחסית מעט ראיונות, ורוב החברות לא יטרחו לחזור אליכם – גם פה, לא כדאי לתת לזה להוריד לכם את המוטיבציה.
בשוק התעסוקה, You only need to be right once. ברגע שמצאתם את העבודה הראשונה – זהו, יש לכם ניסיון ולגיטיציה חברתית כמתכנתים. וזה מה שהולך לקרות לכם 🙂

 

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

 

מנסיוני עם סטודנטים, בוגרים טריים, ואנשים צעירים באופן כללי, התגובה האוטומטית שלהם למלה "דרישות" היא "אבל אני לא עומד בדרישות!". להערכתי, לרוב מתברר שהם כן עומדים בדרישות.
הרבה פעמים דרישות שמופיעות בתיאור המשרה בתור דרישות חובה, הן בפועל דרישות nice to have בלבד. למשל, בפוסט אני מדגים שלא עמדתי בדרישות ה"חובה" של המשרה האחרונה בה עבדתי 🙂 הדרישות הן יותר "קווים כלליים לדמותה של המועמדת האידיאלית" מאשר "אנחנו אפילו לא שוקלים מועמדים שלא עומדים ולו בדרישה אחת מהרשימה".
לכן, יש לך אינטרס להגיש קורות חיים לכל משרת ג'וניור בה את יודעת את שפת התכנות העיקרית, וגם לחברה יש אינטרס מובהק שתגישי את המועמדות שלך.

 

"אבל אין לי את דרישות הקדם!"

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

הטענה הראשונה שלי היא שהרבה פעמים דרישות שמופיעות בתיאור המשרה בתור דרישות חובה הן בפועל דרישות nice to have בלבד, ועבור מועמדת מתאימה החברה תשמח להתפשר עליהן.

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

Requirements:

Candidates must be skilled at programming in C/C++, with three to five years of experience in a similar role.

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

The following skills are advantageous:

  • Familiarity with the Unix environment (היתה לי היכרות, בסדר)
  • Familiarity with operating systems: Unix (Solaris/AIX/HPUX), Linux, Windows (גם פה היתה לי היכרות)
  • Experience with a large-scale distributed software system product

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

  • Familiarity with advanced development methodologies (Agile programming, extreme programming)

(היתה לי היכרות כלשהי ברמה לא גבוהה)

  • Familiarity with network protocols (TCP/IP, HTTP, SSL) (היתה לי היכרות ברמה גבוהה)
  • Familiarity with storage protocols (SCSI, iSCSI, FibreChannel)

(בחיי שלא ידעתי אפילו מה זה המושגים האלה [והחיים שלי היו יותר נחמדים כל עוד לא ידעתי…])

  • Familiarity with grid computing architecture and underlying hardware (Infiniband, clustering, load balancing)

(גם פה, לא היה לי שום נסיון בזה, ואפילו לא שמעתי את המושג Infiniband).

Education:

B.Sc./B.A. in computer science/computer engineering/electronic engineering OR equivalent.

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

 

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

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

מעבר לכך, לפני שאני מכריז שאני לא עומד בדרישות, במקומך הייתי שואל את עצמי: האם הם מגייסים סטודנטים ובוגרים טריים? אם כן, אז מה כבר ההבדל בין ג'וניור שהם מוכנים לגייס ובינך? אם התשובה שלך היא "היכרות עם טכנולוגיה X", וטכנולוגיה X היא לא שפת תכנות, אז זה נשמע מעט מוזר. אני מסכים שחברה שמחפשת ג'וניור שיתכנת בג'אווה תוך כדי שימוש ב-OOP, לא תתלהב מלגייס סטודנט שיודע רק C (למרות שראיתי אפילו מקרים כאלה). אבל בהנחה שאת יודעת את שפת התכנות הרלבנטית למשרה, מה כבר "מועמד לגיטימי" יכול לדעת שאת לא יודעת? עוד דיזיין פטרן? קצת יותר ידע במערכות הפעלה? הרי זה ידע שתוכלי להשלים תוך כמה ימים, מקסימום. וזה לא שהחברה חושבת שהיא תגייס ג'וניור עם כל הידע הדרוש, שלא צריך ללמוד שום דבר בעבודה הראשונה שלו – לצערם הרב, ג'וניורים לא מגיעים ככה 😉

ולסיום, נקודה כללית יותר, ואני מקווה שאצליח להעביר אותה מבלי להישמע מתנשא: אם את סטודנטית, כנראה שרוב החיים שלך היו סדרה של מבחנים שהיית צפוייה לעבור, והמטרה העיקרית שלך היתה "לא לפשל" ולהשיג את הציון הגבוה שהיית צפויה להשיג. לפחות בחיים שלי זה היה ככה: מתחילים ביסודי, המורים מאיימים עליך שלא תיכנס לתיכון ה"יוקרתי" שיש בשכונה, אבל למרבה המזל מסתבר שהציונים שלך היו "בדיוק על הרף", כמו כל הילדים בכיתה 🙂 אח"כ אותו סיפור עם המעבר בין החטיבה לתיכון, רף קשה מאין כמוהו שרק 70% מהשכבה הצליחה לעבור. ואז, כמובן, בחינות הבגרות: סדרה של בחינות מטומטמות שאיום היחוס העיקרי שלך בהן הוא "אתה עלול לרדת מציון 85 בכמה בחינות, ותצטרך להשלים בגרויות בכמה חודשים אחרי הצבא". גם בתואר יש אלמנט כזה, של "מאוד סביר שבגדול תצליח לסיים את התואר ולהשתלב בשוק, והמטרה העיקרית שלך היא להימנע מהתרחיש הלא-סביר שזה לא יקרה"; לפחות בתואר האלמנט הזה פחות מורגש מאשר בעבר.

אבל לא ככה דברים עובדים "בעולם האמיתי" (מתנשא ככל שזה ישמע מפיו של אדם בן שלושים ומשהו כשהוא כותב לקהל של בני עשרים ומשהו). בעולם האמיתי, you only need to be right once. השגת עבודה ראשונה מוצלחת? כל הראיונות הלא-מוצלחים לא משנים שום דבר, ולמעשה סביר שרוב החברות הללו ישמחו לראיין אותך שוב בעוד כמה שנים. לא השגת עבודה? יש לך עוד כמה וכמה הזדמנויות לנסות לפני שמישהו בכלל ישים לב. השגת משרה פחות מוצלחת ממה שהיית יכולה? משיקולי סטטיסטיקה, זה כנראה קורה לבערך חצי מהאנשים בעבודה הראשונה שלהם 🙂

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

העברת קורות חיים דרך מכרים, והתאמת קורות חיים למשרה

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

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

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

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

 

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

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

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

אז אני מקווה ששכנעתי אותך שהגיוני להעביר את קורות החיים דרך מכרים שלך שעובדים בחברה, אם יש כאלה. לפני שמעבירים אותן, נרצה להתאים את קורות החיים למשרה. בשביל זה, כדאי לברר עם אותם מכרים מה הדרישות כפי שהם תופסים אותן. בנוסף לכך, אם יש תיאור משרה כדאי להיעזר בו, בתור רשימה של דרישות שלצורך הדיון פה רובן הן nice to have גם אם כתוב אחרת; הדרישה לידע בשפת תכנות מסוימת היא לרוב היחידה שעשויה להיות באמת תנאי הכרחי לזימון לראיון. ומעבר לדרישות למשרה, כדאי להבין באיזה תחום כללי החברה עוסקת – שרתי אחסון, חומרה רפואית, וכו'.

אחרי שהבנו מה הדרישות, ננסה להדגים בקורות החיים שאת ממלאת כמה שיותר מהן. למשל, כתוב שהם מחפשים מתכנתת ג'אווה? יש מקום להזיז את הפרוייקט שעשית בג'אווה לראש קורות החיים, ולפרט עליו עוד שורה או שתיים. כתוב שהם מחפשים ספציפית נסיון ב-django ויש לך? כנ"ל. לפעמים הדרישות יכולות להיות גם לנסיון במתודולוגיות פיתוח, למשל agile – ואז, בנוהל: אם עבדת עם testing frameworks וכו', הגיוני להדגיש את זה. כנ"ל לגבי כל דרישה אחרת: לינוקס, אנדרואיד, וכו' וכו'.

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

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

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