ליאור בר-און לפני 11 שנים כ- 5 דקות קריאה
תואר החלומות ב"הנדסת תוכנה"
היי,בחודש פבואר אעביר session בכנס להוראת הנדסת התוכנה בישראל שיתקיים במכללת כנרת – כנס אקדמי מעיקרו, שמשלב גם קולות מהתעשייה.
נתבקשתי לתת לחברי סגל נכבדים מתוכניות להנדסת תוכנה / מדעי המחשב, מבט על החוויה שלנו מהתארים. כיצד אנו רואים אותם? מה טוב? מה ניתן לשפר וכו'?
הדרך שבחרתי לעשות זאת היא להציג כמה עובדות חשובות שרוב בוגרי האוניברסיטה שנתקלתי בהן הופתע מהן (קצת טיזר) ולאחר מכן להציג דוגמה ל"תואר חלומות" בהנדסת תוכנה.
את "תואר חלומות" זה הרכבתי בעזרת כמה עמיתים לעבודה: ראשי צוותים, ארכיטקטית ותוכניתן בכיר (תודה רחלי, גדי, נילי ואביחי). זוהי תוכנית שהיינו ממליצים למכללות / אוניברסיטאות לאמץ – בכדי לחנך מהנדסי תוכנה טובים יותר.
אנו לא חיים באשליה שזו דרך יחידה, או שזו אמת מוחלטת – זו בסה"כ היפותזה שייצרנו על סמך הבנתנו וניסיוננו. המטרה העקרית שלה היא להצית את החשיבה / הדיון בנושא: כיצד לשפר את ההשכלה הגבוהה בתחום התוכנה.
ההשכלה כרגע, לדעתי, היא לא כ"כ יעילה. סטונדט משלם הרבה כסף (עלות אי-הכנסה), זמן והשקעה אישית גבוהה – ומקבל תמורה שניתן לייצר טובה ממנה.
הנה פרושה לפניכם התוכנית כפי שנבנתה (גרסה לא סופית – הפידבק שלכם יעזור).
אני חושב שמצד אחד זה נושא מעניין לדיון / חשיבה – מה אחרים חושבים על ההשכלה האקדמית ומצד שני, כפי שכבר ציינתי – אשמח לשמוע את דעתכם.
נושאים
חילקנו את המקצועות הנלמדים המקובלים לקבוצות: "חמים" (מעולה – המשיכו כך) ו"קרים" (הסטודנט יכול להתמקד בקבלת ציון סביר+ – הידע עצמו פחות יעזור לו).
לפני שאתם "קופצים" על מה שנאמר על קורס האלגוריתמים (נושא טעון), עברו על השקף הבא:
אנו רואים שינויים משמעותיים בעולם הידע המקצועי: שינוי שאם האוניברסיטאות / מכללות לא יפנימו, הן עלולות למצוא את עצמן הופכות מ"מיינסטרים" ל"נישה". אם פעם הדרך היחידה כמעט לרכוש ידע יסודי על רשתות תקשורת היה לעשות קורס במדעי המחשב – היום יש ספרות מקצועית רבה ואיכותית וזמינה (תוך דקה אצלי על ה iPad), קורסים מעולים בוידאו, בתשלום או ברשת בחינם, או סתם גיגול ל StackOverflow שיפתור לי את הבעיה באופן רגעי ואלמד משם טיפה אחר טיפה.
לגבי האלגוריתמים והמתמטיקה: אנו מאמינים שזהו נושא חשוב לאלגוריתמאים / חוקרים, שמהווים לא יותר מ5% מסך אנשי התוכנה. לשאר אנשי התוכנה – אין שימוש ממשי בידע זה. גם ידע מתמטי עמוק, כדרך אגב, ניתן כיום להשלים מהבית בעזרת Coursera / iTunesU ואחרים.
התוכנית
כמו כל "קביעה" – ברגע שהיא ספציפית תהיה דעתנות רבה על פרטים רבים. אשמח אם תוכלו להתייחס לתמונה זו כנקודה למחשבה ולא כ"קביעה עובדתית" כזו או אחרת.
האמת שהתחלתי בפירוט משפט או שניים על כל קורס – אך חזרתי בי. אני מעדיף לשמור (גם כאן וגם בכנס) את התמונה יותר עמומה – ולכן פתוחה לדיון.
התמונה הגדולה של התוכנית
הנה כמה רעיונות שרציתי להעביר:
איפה שנה ג'? אנו מאמינים שלמידה היום יכולה להיות קצרה יותר. עדיף ללמוד מעט – ואז להתחיל לעבוד, מאשר לשבת שלוש-ארבע שנים ורק ללמוד. יותר Agile ופחות Waterfall. השלמות ותוספות יתרחשו מעצמן תוך כדי העבודה ואם ממש רוצים – אולי כתואר שני (של שנה?). חשוב שהבוגר יקבל בסיס ומיומנויות למידה, אבל זה יהיה בזבוז (waste) להמשיך ולתת לו עוד ידע, בלי שברור שהוא זקוק לו.
ידע "אנושי וארגוני" הוא לא פחות חשוב מידע טכנולוגי – ואפשר ללמוד אותו. למה אוניברסיטאות נותנות משקל כ"כ קטן (אם בכלל קיים) לצד זה של ההשכלה? האם "מדעני מחשב" באמת לא זקוקים לידע בין-אישי? האם באקדמיה עובדים לבד ולא בקבוצות / שיתופי פעולה?
Domain Knowledge הוא ידע יקר ערך שאוניברסיטה לא תוכל לספק, אבל היא כנראה יכולה לתת הצצה אליו – ולפתוח צוהר לסטודנטים ללמוד אותו. ב Domain Knowledge אני מדבר על ההיבטים שתוכנה לגופי IT שונה מתוכנה לחברות של תשתיות או רפואה, ביטוח או פיננסים. זה להבין בגדול כיצד ה"ביזנס" שעבורו אנו כותבים מערכות עובד, אלו צרכים מיוחדים יש לו (לפעמים בעקבות רגולציה) וכיצד מתנהלים ארגונים שעוסקים בתחומים אלו? מה מטריד ומעסיק אותן? אלו Patterns של תוכנה מקובלים להתמודד עם הבעיות הללו?
לדוגמה:
- בשוק החשבונאי חשוב דיוק מלא בכל הנוגע לכסף. אסור לחלק מיליון דולר ל 7 חלקים – ולאבד סנט אחד, בגלל עיגולים שעשה המחשב.
- בשוק הביטוח כדאי להבין את כל ההסכמים של ביטוח ההדדי בין חברות – וכיצד עסקי הביטוח עובדים.
- בשוק הרפואי יש רגולציות רבות יש אבטחת מידע רפואי פרטי. יש הרים של מידע ומינוחים שונים רבים לאותו הדבר – שיש להתמודדד איתם וכו'….
אם יש ידע שעדיין לא ניתן לקנות ספר טוב ללמוד אותו ממנו, או שאין קורסים באינטרנט ותשובות ב StackOverflow לגביו – זהו כנראה ה Domain Knowledge – ומשתלם מאוד ללמוד אותו, בתחום בו אתם עוסקים.
שבירת הסדר בין "יסודות" ל "ידע מעשי" – באוניברסיטה מקפידים על סדר של bottom up, מלמדים שכבה אחר שכבה. למשל: לומדים את מבנה המחשב, לפני שלומדים מערכות הפעלה. לומדים ממשק משתמש (UX) רק אחרי שלומדים לפתח UI – וכו'.
הבעיה היא ש:
- התוכנית מתארכת – ולא מגיעים כמעט ל"תוכן משמעותי" לפני שנה שנייה.
- מנסיוני האישי – לעתים יותר קל להתחיל בכתיבת תוכנה, ורק מאוחר יותר להעמיק ב"יסודות" כיצד דברים עובדים.
נקודה זו היא פחות חד-משמעית, אך עדיין נראה שש כאן עקרון שכדאי לשקול מחדש.
הפחתת ההשקעה לשם "פיתוח החשיבה" – בזמן התואר הראשון שלי, עשיתי דיי הרבה קורסים שלא מועילים לי היום תחת הטיעון שהם "מפתחים את המחשבה". אני רואה מתכנתים שהגיעו אלינו מממרם או ללא השכלה מסודרת בכלל – והם לא פחות טובים. הם "חושבים" מצויין. האם יש הוכחה שהשקעה בלימודים "לשם פיתוח חשיבה" יותר יעילה מהתחלת עבודה מהירה יותר? התחושה שלי שההיפך הוא הנכון.
סיכום
סיכמתי את המצגת שלי לפוסט. אני מקווה שהיה מעניין ואני מקווה לקבל מכם פידבק ולקבל תגובות.
אותי אישית, נושא התואר ותרומתו העסיקה לאורך השנים – העסיקה לא מעט.
Published