Why it's so hard to be a new developer

Software Developers Working

אתחיל בלהסביר שהפוסט הנל בא כתוצאה מקריאת הכתבה ”Computer science students are in demand and they know it” של ITWORLD. הפוסט מציין כי ישנו ביקוש הולך וגובר לבוגרי מדעי המחשב ותחומים דומים, והבוגרים מודעים לכך. ושללכת ללמוד מדעי המחשב זהו צעד חכם, במיוחד בהתחשב במחקרים המראים ביקוש הולך וגובר.

הפוסט מציין כי 61% מבוגרי מדעי המחשב מצאו עבודה במשרה מלאה תוך שנה מסיום התואר, כשהממוצע של בוגרי תארים הוא 45%, ורק military science (אין לי מושג מהו התואר הזה) נמצא מעליהם עם 62%. בנוסף, לבוגרי מדעי המחשב המשכורת הממוצעת הגבוהה ביותר. ואף כי 53% מכלל הסטודנטים בסקר לקחו קורס כלשהו מתחום מדעי המחשב כחלק מהתואר (לפעמים רק כדי “לבלוט”), דבר המראה את הערך של סט הכלים מתחום מדעי המחשב בעיני סטודנטים מתחומים אחרים.

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

 

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

 

אנחנו לא בוחרים ללמוד מדעי המחשב

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

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

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

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

 

אהבה וסקרנות טבעית ינצחו!

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

מעבר לציונים הנמוכים, מקצוע מדעי המחשב דורש למידה נוספת. אני נתקל בזה כרגע בעודי מחפש את העבודה הראשונה שלי בתחום, הידע המקנה תואר במדעי המחשב אינו מספיק כדי להתקבל לעבודת פיתוח במשרת junior. אני יודע 2 שפות מהתואר (C ו Java כאשר בג’אווה עסקנו יותר), הספריות בהם עסקנו ב Java ישנות (במקום ללמוד על Swing, למדנו על Applets במקום על Servlets, וכד’), לא דיברנו בכלל על כתיבת Unit Tests, לא למדנו על TDD, לא למדנו על REST, לא על ארכיטקטורת ענן או הקמת שרתים, למדנו קצת על SQL אבל רוב הקורס בנושא עסק בתורת הקבוצות שמאחורי השפה עצמה, ברשתות בקושי נגענו בשכבת האפליקציה (התעסקנו יותר בשכבות 2-3-4), לא דיברנו בכלל על הכלים הבסיסיים ותהליכי העבודה של המפתח (לדוג’ git, או אלפי הספריות והכלים של השנים האחרונות בפיתוח ל Web), לא על JSON והתנהלות מול APIs, לא מכירים מה זה Regular Expressions, לא שמענו על מודל MVC, והרשימה עוד ארוכה.

את רוב הדברים האלו השלמתי לבד במהלך השנה וחצי האחרונות מאתרים וספרים שונים. ההרגשה הייתה שלמדתי ל-2 תארים שונים במקביל, האחד באונ’ ברמת אבסטרקציה גבוהה בו למדתי רעיונות מעניינים שפיתחו לי את החשיבה ואני מאמין שעוד אעזר בהם בעתיד (במיוחד ככל שנסיוני יגדל ואעסוק בדברים מתקדמים יותר), והשני hands-on, בו למדתי לקרוא API, לבקש משירות כלשהו מידע, לשמור אותו ב DB כדי להשתמש בו אח”כ באפליקציה, להתנהל עם מערכת לניהול גרסאות, וכד’.

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

 

התעשייה מצפה והאונ’ בשלה

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

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

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

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

יש לציין כי כדי למלא את הפער הזה קמו עשרות שירותים אינטרנטים כמו Codecademy, Code School, Udacity, Coursera, edx, Tuts, lynda.com, Khan academy, Threehouse וכ’ו. אך גם הם לפעמים לא מצליחים לעמוד בקצב, או לא קולעים לאותה מטרה (כמו Coursera ו edx שמציעים קורסים אוניברסיטאיים שלרוב עם חומרים תיאורטיים חשובים אך לוקים בחסר בפרקטיקה).

 

משכורות מוצדקות (לרוב)

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

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

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

 

חלק אישי

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

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

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

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

 

לסיכום

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

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

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