תואר החלומות ב”הנדסת תוכנה”
האם התואר הקיים היום בהנדסת תוכנה כבר לא ממש רלוונטי? ליאור-בר-און מציע לעשות מהפך. האם כך יראה ”תואר החלומות” בהנדסת תוכנה?
בחודש פברואר אעביר הרצאה בכנס להוראת הנדסת התוכנה בישראל – כנס אקדמי מעיקרו, שמשלב גם קולות מהתעשייה. במסגרת הכנס, נתבקשתי לתת לחברי סגל נכבדים מתוכניות להנדסת תוכנה / מדעי המחשב, מבט על החוויה שלנו מהתארים. כיצד אנו רואים אותם? מה טוב? מה ניתן לשפר וכו’?
הדרך שבחרתי לעשות זאת היא להציג כמה עובדות חשובות שרוב בוגרי האוניברסיטה שהתקלתי בהן הופתע מהן (קצת טיזר) ולאחר מכן להציג דוגמה ל”תואר חלומות” בהנדסת תוכנה.
את “תואר החלומות” הזה הרכבתי בעזרת כמה עמיתים לעבודה: ראשי צוותים, ארכיטקטית ותוכניתן בכיר (תודה רחלי, גדי, נילי ואביחי) וזוהי תוכנית שהיינו ממליצים למכללות / אוניברסיטאות לאמץ – בכדי לחנך מהנדסי תוכנה טובים יותר.
וגם: אלו המשרות המבוקשות ביותר בענף ההיי-טק הישראלי בשנת 2013
אנו לא חיים באשליה שזו דרך יחידה, או שזו אמת מוחלטת – זו בסך-הכל היפותזה שייצרנו על סמך הבנתנו וניסיוננו. לדעתי, ההשכלה כרגע לא הכי יעילה, כאשר סטודנט משלם הרבה כסף (עלות התואר ועלות אי-הכנסה), זמן והשקעה אישית גבוהה – ומקבל תמורה שניתן לייצר טובה ממנה. המטרה העיקרית של הפוסט הנוכחי היא להצית את החשיבה / הדיון בנושא: כיצד לשפר את ההשכלה הגבוהה בתחום התוכנה.
הנה פרושה לפניכם התוכנית כפי שנבנתה (גרסה לא סופית – הפידבק שלכם בהחלט יעזור). אני חושב שמצד אחד זה נושא מעניין לדיון / חשיבה – מה אחרים חושבים על ההשכלה האקדמית ומצד שני, כפי שכבר ציינתי – אשמח לשמוע את דעתכם.
נושאים
חילקנו את המקצועות הנלמדים המקובלים לקבוצות: “חמים” (מעולה – המשיכו כך) ו”קרים” (הסטודנט יכול להתמקד בקבלת ציון סביר פלוס – הידע עצמו פחות יעזור לו).
רגע לפני שאתם “קופצים” על מה שנכתב כאן על קורס האלגוריתמים (נושא טעון), עברו על השקף הבא:
אנו רואים שינויים משמעותיים בעולם הידע המקצועי: שינוי שאם האוניברסיטאות / מכללות לא יפנימו, הן עלולות למצוא את עצמן הופכות מ”מיינסטרים” ל”נישה”. אם פעם הדרך היחידה כמעט לרכוש ידע יסודי על רשתות תקשורת היה לעשות קורס במדעי המחשב – היום יש ספרות מקצועית רבה ואיכותית וזמינה (שאני יכול להוריד בתוך דקה ל-iPad שלי), קורסים מעולים בוידאו, בתשלום או ברשת בחינם, או סתם חיפוש קצר בגוגל שיוביל ל-StackOverflow, יפתור לי את הבעיה באופן רגעי ואלמד משם טיפה אחר טיפה.
לגבי האלגוריתמים והמתמטיקה: אנו מאמינים שזהו נושא חשוב לאלגוריתמאים / חוקרים, שמהווים לא יותר מ5% מסך אנשי התוכנה. לשאר אנשי התוכנה – אין שימוש ממשי בידע זה. גם ידע מתמטי עמוק, כדרך אגב, ניתן כיום להשלים מהבית בעזרת Coursera / iTunesU ואחרים.
התוכנית
כמו כל “קביעה” – ברגע שהיא ספציפית תהיה דעתנות רבה על פרטים רבים. אשמח אם תוכלו להתייחס בתגובות לתמונה הזו כנקודה למחשבה ולא כ”קביעה עובדתית” כזו או אחרת.
האמת שהתחלתי בפירוט משפט או שניים על כל קורס – אך חזרתי בי. אני מעדיף לשמור (גם כאן וגם בכנס) את התמונה יותר עמומה – ולכן פתוחה לדיון.
התמונה הגדולה של התוכנית
הנה כמה רעיונות שרציתי להעביר:
איפה שנה ג’? אנו מאמינים שלמידה היום יכולה להיות קצרה יותר. עדיף ללמוד מעט – ואז להתחיל לעבוד, מאשר לשבת שלוש-ארבע שנים ורק ללמוד. יותר Agile ופחות Waterfall. השלמות ותוספות יתרחשו מעצמן תוך כדי העבודה ואם ממש רוצים – אולי כתואר שני (של שנה?). חשוב שהבוגר יקבל בסיס ומיומנויות למידה, אבל זה יהיה בזבוז (waste) להמשיך ולתת לו עוד ידע, בלי שברור שהוא זקוק לו.
ידע “אנושי וארגוני” הוא לא פחות חשוב מידע טכנולוגי ואפשר ללמוד אותו. למה אוניברסיטאות נותנות משקל כל-כך קטן (אם בכלל קיים) לצד זה של ההשכלה? האם “מדעני מחשב” באמת לא זקוקים לידע בין-אישי? האם באקדמיה עובדים לבד ולא בקבוצות / שיתופי פעולה?
Domain Knowledge הוא ידע יקר ערך שאוניברסיטה לא תוכל לספק, אבל היא כנראה יכולה לתת הצצה אליו – ולפתוח צוהר לסטודנטים ללמוד אותו. ב-Domain Knowledge אני מדבר על ההיבטים שתוכנה לגופי IT נראית וכתובה באופן שונה מתוכנה לחברות של תשתיות או רפואה, ביטוח או פיננסים. זה להבין בגדול כיצד ה”ביזנס” שעבורו אנו כותבים מערכות עובד, אלו צרכים מיוחדים יש לו (לפעמים בעקבות רגולציה) וכיצד מתנהלים ארגונים שעוסקים בתחומים אלו? מה מטריד ומעסיק אותן? אלו Patterns של תוכנה מקובלים להתמודד עם הבעיות הללו?
לדוגמה:
- בשוק החשבונאי חשוב דיוק מלא בכל הנוגע לכסף. אסור לחלק מיליון דולר ל-7 חלקים – ולאבד סנט אחד, בגלל עיגולים שעשה המחשב.
- בשוק הביטוח כדאי להבין את כל ההסכמים של ביטוח ההדדי בין חברות – וכיצד עסקי הביטוח עובדים.
- בשוק הרפואי יש רגולציות רבות יש אבטחת מידע רפואי פרטי. יש הרים של מידע ומינוחים שונים רבים לאותו הדבר – שיש להתמודדד איתם ועוד.
אם יש ידע שעדיין לא ניתן לקנות ספר טוב ללמוד אותו ממנו, או שאין קורסים באינטרנט ותשובות ב-StackOverflow לגביו – זהו כנראה ה-Domain Knowledge – ומשתלם מאוד ללמוד אותו, במיוחד בתחום בו אתם עוסקים.
שבירת הסדר בין “יסודות” ל “ידע מעשי” – באוניברסיטה מקפידים על סדר של bottom up, מלמדים שכבה אחר שכבה. למשל: לומדים את מבנה המחשב, לפני שלומדים מערכות הפעלה. לומדים ממשק משתמש (UX) רק אחרי שלומדים לפתח UI – וכו’.
הבעיה היא ש:
- התוכנית מתארכת – ולא מגיעים כמעט ל”תוכן משמעותי” לפני שנה שנייה.
- מנסיוני האישי – לעתים יותר קל להתחיל בכתיבת תוכנה, ורק מאוחר יותר להעמיק ב”יסודות” כיצד דברים עובדים.
הפחתת ההשקעה לשם “פיתוח החשיבה” – בזמן התואר הראשון שלי, עשיתי לא מעט קורסים שלא מועילים לי היום תחת הטיעון שהם “מפתחים את המחשבה”. אני רואה מתכנתים שהגיעו אלינו מיחידות צבאיות כאלו או אחרות ללא השכלה מסודרת בכלל – והם לא פחות טובים. הם “חושבים” מצויין. האם יש הוכחה שהשקעה בלימודים “לשם פיתוח חשיבה” יותר יעילה מהתחלת עבודה מהירה יותר? התחושה שלי שההיפך הוא הנכון.
ואיך נראה תואר החלומות שלכם בהנדסת תוכנה?
אותי באופן אישי, נושא התואר ותרומתו לעוסקים במקצוע ובכלל העסיק לא מעט לאורך השנים. סיכמתי את המצגת שלי לפוסט. אני מקווה שהיה מעניין ואני מאוד מקווה לקבל מכם פידבק, תגובות ורעיונות משלכם כאן בתגובות.
.
הפוסט פורסם במקור בבלוג Software Archiblog
קרדיט תמונה ראשית: Shutterstock / Blackboard with Data
הגב
49 תגובות על "תואר החלומות ב”הנדסת תוכנה”"
* היי, אנחנו אוהבים תגובות!
תיקונים, תגובות קוטלות וכמובן תגובות מפרגנות - בכיף.
חופש הביטוי הוא ערך עליון, אבל לא נוכל להשלים עם תגובות שכוללות הסתה, הוצאת דיבה, תגובות שכוללות מידע המפר את תנאי השימוש של Geektime, תגובות שחורגות מהטעם הטוב ותגובות שהן בניגוד לדין. תגובות כאלו יימחקו מייד.
מצד שני – השנה הנוספת – היא עוד שנה להיות סטודנט – שזו חוויה שלא תחזור על עצמה.
כל מילה בסלע, תואר חלום. אין שוב תועלת לבזבז זמן על קורסים מתמטיים שלא יהיה בהם שימוש מאוחר יותר, בנוסף קורסים תיאורטיים כמו חישוביות סיבוכיות לא מועילים וקשים.
במקום זה הייתי רוצה לעשות יותר קורסים של ארכיטקטורה \ תכנות מסוג מסויים ודברים שיועילו לעבודה בהמשך.
שכחת לציין את העובדה החשובה מכולן – האוניברסיטאות לא מכשירות את המהנדסים להיות *מהנדסי התוכנה* הטובים מכולם. הן מכשירות אותם להיות החוקרים הטובים מכולם ופה הבעיה העיקרית. האוניברסיטה ביסודה היא מוסד מחקר ולא מוסד אקדמי (למרות שזה נשמע ממש מוזר).
הבעיה העיקרית במדינה שלנו היא שהחברות הגדולות דורשות תואר מהאוניברסיטה , בעוד שקיימות עשרות מכללות שהתארים שלהן יותר מתמקדים במקצועיות , וכך יוצא מצב אבסורדי שיוצאי מכללות הם מהנדסי תוכנה יותר טובים מיוצאי מכללות.
ככלל, אני חושב שצריך לאמץ את המודל האמריקאי , בו האוניברסיטאות מתמקות בתארים מתקדזמים, והמכללות בתואר ראשון.
בקיצור, אתה רוצה שהאוניברסיטאות יכשירו עבורכם עובדים כדי לחסוך לכם זמן וכסף.
מבחינתך טורינג הוא סתם חנון שבזבז את הזמן שלנו עם רעיונות ערטילאיים.
עם הגישה הזו היינו כולנו עדיין תקועים עם חשבוניות.
אם הקורסים המתקדמים/תאורטיים/מתמטיים לא מועילים לך סימן שאתה סתם מתכנת שיכל להסתפק במה שמלמדים בבי”ס להנדסאים.
זה בדיוק העניין, יש אינפלציה של תארים. ניתן לקרוא את ספרו המצויין של קן רובינסון “לצאת מהקווים”.
בעבר (שנות השישים), העובדה שלמישהו היה תואר הפרידה אותו משאר האנשים ונתנה לו יכולת להתקבל כעובד לכל עבודה. עם הזמן, כאשר נתח גדול מהאוכלוסיה כבר בעל תואר ראשון, יש מקומות עבודה *שדורשים* תואר שני, בקרוב ידרשו תואר דוקטור…
כל זה בגלל שמקום העבודה מנסה שמישהו אחר יעזור בסינון המועמדים. הדרך הקלה היא: איפה למדת, איזה תואר (ראשון/שני..) – ורק כך לזמן לראיון.
קראתי ואני מסכים חלקית.
חשוב לזכור שבאקדמיה ובפרט באוניברסיטה, אחת המטרות המרכזיות היא להכשיר אנשי מחקר שגם ישארו באקדמיה, ולא רק להעניק תארים לבוגרים ואח”כ לזרוק אותם לאוקיינוס ההייטק (ביננו, אפשר להיכנס לשם גם בלי התואר הזה). להתאים את התואר לחלוטין לתעשייה, יגרום לפספוס של מטרה זו, שהיא אכן לגיטימית, כי בסופו של דבר הם צריכים אנשי מחקר אצלם.
נכון, יש קורסים מתמטיים/תיאורטיים שהם לא רלוונטים לתעשיה והם מאוד קשים ונותנים תחושה (שגם נכונה בהרבה מקרים) שהם שם אך ורק בשביל סינון. אבל בסופו של דבר זה מקדש את המטרה ואי אפשר להאשים אותם בזה.
אחלה כתבה, המתרה אינה מתאימה לטעמי. זה יתאים יותר עבור הנדסאים מאשר מהנדסים.
בסופו של דבר תגליות פורצות דרך מתרחשות לאחר מחקר אקדמי. המתרה של האקדמיה אינה להכשיר כוח עבודה אלא אקדמאים ומדעני העתיד, אלו שיפתחו את הדור הבא של האלגוריתמים.
תבדקו למשל כמה פוסט דוקטורטים מועסקים במחקר של גוגל…
זה שהרוב מתכנתים ממשקים גרפיים ומערכות מידע לא אומר שצריך לזנוח את המדע.
את ה 80% צריך להשקיע באותם 20% שיפרצו את הדרך בעתיד!
אבי, אני מסכים איתך ש – real time ו – C זה עולם אחר !
ככלל, אני מסכים איתך שלא ניתן לבטל את הכול, יחד עם זאת, כמי שלמד בטכניון אלקטרוניקה
אני חושב ששינויים מסוימים אפשר וצריך לעשות למשל, בתואר שלי, יצא שלמדתי משהו כמו 10 ! קורסים במתטיקה. לטעמי הקורסים מד”ר מד”ח ופונקציות מרוכבות, יכלו לאחד..
דבר נוסף, המעבדות שוות לתחת !! זה כיסוי תחת להגיד נתנו לכם ניסיון. בפועל המעבדות לא מלמדות כלום !! היו צריכים לעשות אותם אחרת..
ויש עוד שינויים שהיה אפשר לעשות לטעמי..
צודק לגמרי. בתור אינדיקציה לכמה שהתוכנית הזו תעזור לסטודנטים בטווח הארוך תחשוב איזה חלק ממנה היה רלוונטי לטכנולוגיות של לפני 10 שנים, אותו אחוז יהיה רלוונטי לטכנולוגיות של עוד 10 שנים. אם לפני 10 שנים היית בונה תוכנית מקבילה, היית מלמד קורבה וEJB , שהם חסרי משמעות כיום.
ברגע שהיסודות שלך חזקים, למידת הטכנולוגיות הנוכחיות זהו תהליך פשוט ומהיר.
T, בנוגע לאיכות קוד – אני חושב שזה אחד הדברים שהרבה יותר קל “ללמד” מישהו תוך כדי עבודה , שהרי זה מה שהוא עושה רוב היום , מתרגל לכתוב קוד.
קשה מאוד ללמד את זה פרונטלית לדעתי , משום שכל אחד חושב אחרת ויש לו “טעויות” שונות , לעומת זאת במהלך העבודה תוך כדי code review מאוד קל להצביע על בעיות או שיפורים אפשריים.
זה פחות או יותר מה שלומדים בתואר הנדסת מערכות מידע בבן גוריון רק חבל שאנשים במיוחד בתעשייה לא מודעים לתואר הזה.
רוצה לשמוע עוד :)
0528437890
כתבה טובה מאוד! מסכים עם כל מילה שאמרתה.
בלימודים יש יותר דגש על תיאוריה מה שמובי לכך שאין ניסיון בכתיבת תוכנות ארוכות ומעמיקות שמהוות מוצר אמיתי.
לדוגמא למדתי אלקטרוניקה במוסד אל-תיכוני ואם לא הייתי לומד מעבר למה שיש בתוכנית הלימודים לא הייתי מבין הרבה מעבר לחומר תיאורטי.
בהמשך לכתבה, למה בכלל צריך תעודות גמר? לא מספיק הסמכות? הזמנים השתנו… התעודות האלה לא שוות את הנייר המודפס שלהם
זה משקף את הדור העצלן שקם פה – לא רוצים לטרוח, רוצים רק מה שרלוונטי לדעתם, וזהו, על ה*** כל השאר. אפסים, בחיי.
יש גם את אלמנט היהירות – להחליט שכל מה שלמדו עד עכשיו לא רלוונטי כאילו הכותב ניחן בראייה נבואית לגבי עתיד הטכנולוגיה.
שלום
שמח מאוד לקרוא דעות של אנשים שרוצים לשנות , אבל במקרה הזה אני חולק על הכותב. אני מתרשם שההצעה דומה יותר לאוסף קורסים בגון ברייס ולא לאוניברסיטה. אני כמי שעוסק מעל 20 שנים בתחום ועבדתי עם מאות בוגרי קורס תכנות ואקדמיה טוען שהבעיה שהידע התאורטי דל ולכן התכניתנים היום יותר דומים ל code monkey מאשר לבעלי מקצוע עם ערך מוסף על ההודים והסינים
אני מחזק אותך בנושא ההודים והסינים, היתרון היחידי שיש למתכנת הישראלי הוא שהוא ידע קצת מעבר ל”רק הסמכות”.
הישראלי יקר (אפילו לפעמים יותר מאמריקאי (!)) מרוחק בדיוק כמו הסינים וההודים, עם הרבה חגים וימי שישי.
תואר כמו שמוצע למעלה יוציא בוגרים שיצליחו לנפק קוד די מהר , אבל קצת דברים מעבר כמו אלגוריתמיקה הם כנראה לא יצליחו להוציא.
כל כך נכון
כל המתמטיקה הזאת סתם ביזבוז זמן
עדיף להתמקד בפיתוח קוד
שלום. מה הייתם ממליצים ללמוד למי שרוצה לעבוד ב real time/embedded
thanks nir
גם בנט חושב כך
עדיף קורסים קטנים לאורך הקרירה
הי ליאור,
איפה מתקייןם הכנס שאתה משתתף בו בשבוע הבא?
ממש לא. הוא מציע שם תוכנית לימודים שטחית ש*לא* תייצר אנשי תוכנה טובים. אולי טובים בשביל החברה שהוא עובד בה. קיצר זה יותר מתאים לבתי ספר כמו John Bryce וכו’ מאשר לאוניברסטאות.
במקום לרשום – כי לגבי איכות תוכנה הבוגרים מגיעים ללא ידע מספק ולכן נושא זה יורד מן הפרק בתוכנית הלימודים המוצגת – הרי שצריך לעשות בדיוק את ההיפך – לחזק נושא קריטי זה אשר משפיע על איכות התוצרים של כל מהנדסי התוכנה – בדיוק כפי שנעשה באוניברסיטת בו-גוריון ואחרות בארץ ובעולם.
לא ייתכן שמתכנת לא ייחשף לסיבות ולדרכים לבדיקת הקוד אותו כתב – והשיטות האג’יליות כיום רק מדגישות פן זה יותר ויותר.
תואר זה קונספט מיושן,
מספיק קורס תכנות של שנה בתחום שבו רוצים לעבוד,ואפשר גם להתעדכן ולהבחן על נושאים נוספים כל זמן מסוים כי הטכנולוגיות משתנות עם השנים. המתמתיקה היא לתחומים מאוד ספציפים בתכנות, מי שמעניין אותו יוכל תמיד ללמוד את זה, ממש לא שימושי למתכנתים, אני כבר שנים רבות מתכנת ומעולם לא הצטרכתי שום מתמתיקה מעבר לרמת 3 יחידות בתיכון. אבל כן הצטרכתי ללמוד הרבה מאוד חומר שלא מלמדים באוניברסיטה.
חבל שאנשים מרובעים דוחפים כל כך הרבה אנשים לתואר שסתם מבזבז זמן וכסף רב.
אני מעדיף מישהו שיודע את החומר על מישהו עם תארים אפילו בהצטיינות.
נו, כולה 3 שנים של תואר.
תשקיעו אחר כך בחברה (SAP?) בלהכשיר את בוגר האוניברסיטה/מכללה (אולי אפילו בהיותו סטודנט) על מנת להשלים את הפער בין התיאוריה למעשה.
מהנדסי תוכנה זה קצת יותר מ-code monkey.
כתבה פח! סליחה אבל אם חדוא לא חשוב למקום העבודה, ממש לא היתי רוצה לעבוד שם. אם אין חשיבה מתמטית שנדרשת ממני בעבודה או בתכנון המערכת אין פה שום אתגר, אין פה שום יופי. נכון שעבודה מעשית ופרוייקטים הם חשובים, אבל הרמה שלהם נבנת על בסיס הידע שלנו.
זה באמת מגניב לקחת משהו שקיים ולשחק בו קצת, אבל לקחת קונספט שלא קיים וליצור אותו… זה קצת יותר מאתגר ומספק.
אולי באמת זה לא לכולם, זאת בדיוק הסיבה שלא כל המהנדסים מצליחים (לא במובן של כסף.)
ליאור לא הבנתי כל כך איזה קורסים הם הכי יעילים והם באמת הלב של מדעי המחשב. זה מה שסימנת בצהוב?