25 במאי 2017

על מתכנתים ומשרות

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

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


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


האם להמשיך לעבוד ב-QA עם התואר או לעזוב ולנסות להתקבל לפיתוח ?


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

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

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

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


האם התואר במדעי-המחשב רלוונטי גם בגילאים מאוחרים ? 


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

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

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


האם כל מי שעוסק בתכנות נחשב מתכנת באותה רמה ?


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

לא מקובל לדרג מתכנתים, אבל כדי להמחיש את הרעיון שאני רוצה להגיד אציג את זה כך:
מתכנת אוטומציה -> מתכנת Web -> מתכנת שפות high level -> מתכנת שפות low level -> מתכנת אלגוריתמים.

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

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

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

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

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

בין high level ו-low level ההבדל כבר לא כזה משמעותי והניסיון נכנס כאן יותר לתוקף.

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

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

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

אבל, מהניסיון שלי - הדרישות הגבוהות מגיעות ממתכנתי high level ומעלה.
יצא לי יותר מפעם אחת לקרוא קוד מחריד שנכתב ע"י מתכנתי אוטומציה או מתכנתי Web עתירי ניסיון. קראתי גם קוד בחלק מהמקרים שמעולם לא עבר review ולא תועד אפילו לא בשורה אחת.
מעולם לא שמעתי דרישה ל- TDD או לכתיבת Unit Test בתחומים אלו וחבל.

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


האם תפקיד המתכנת שמור לגילאים צעירים ?


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

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

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

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

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

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

אז למה לא בעצם ?

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

עם השנים, תוכלו לאייש רק משרות ניהוליות ויקשה עליכם להתקבל למשרות טכניות זוטרות.

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

איך נמנעים מזה ?

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

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

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

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

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



האם ההבדל בין בוגרי מכללות לבוגרי אוניברסיטאות הוא משמעותי כמו שאומרים ?


התשובה לצערי היא כן. אבל בעיקר בשנים הראשונות.

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

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
























אין תגובות:

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