22 באפריל 2017

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

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

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



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

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

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

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

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

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

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

בשלב הציור, אתם תראו שיצוצו לכם שאלות (אם הם לא צצו עד עכשיו) לדוגמא, האם המערך מכיל רק מספרים חיוביים? האם יש הגבלת מקום ל-stack? האם המספרים במערך חוזרים על עצמם ?

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

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

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

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

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

דוגמא להתנהלות של ראיון תקין תוכלו לראות בסרטון הבא:



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








אין תגובות:

הוסף רשומת תגובה