תואר החלומות ב"הנדסת תוכנה"

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

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

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

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

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

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

נושאים

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

לפני שאתם "קופצים" על מה שנאמר על קורס האלגוריתמים (נושא טעון), עברו על השקף הבא:

אנו רואים שינויים משמעותיים בעולם הידע המקצועי: שינוי שאם האוניברסיטאות / מכללות לא יפנימו, הן עלולות למצוא את עצמן הופכות מ"מיינסטרים" ל"נישה". אם פעם הדרך היחידה כמעט לרכוש ידע יסודי על רשתות תקשורת היה לעשות קורס במדעי המחשב – היום יש ספרות מקצועית רבה ואיכותית וזמינה (תוך דקה אצלי על ה iPad), קורסים מעולים בוידאו, בתשלום או ברשת בחינם, או סתם גיגול ל StackOverflow שיפתור לי את הבעיה באופן רגעי ואלמד משם טיפה אחר טיפה.
לגבי האלגוריתמים והמתמטיקה: אנו מאמינים שזהו נושא חשוב לאלגוריתמאים / חוקרים, שמהווים לא יותר מ5% מסך אנשי התוכנה. לשאר אנשי התוכנה – אין שימוש ממשי בידע זה. גם ידע מתמטי עמוק, כדרך אגב, ניתן כיום להשלים מהבית בעזרת Coursera / iTunesU ואחרים.

התוכנית

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

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

התמונה הגדולה של התוכנית

הנה כמה רעיונות שרציתי להעביר:

איפה שנה ג'? אנו מאמינים שלמידה היום יכולה להיות קצרה יותר. עדיף ללמוד מעט – ואז להתחיל לעבוד, מאשר לשבת שלוש-ארבע שנים ורק ללמוד. יותר Agile ופחות Waterfall. השלמות ותוספות יתרחשו מעצמן תוך כדי העבודה ואם ממש רוצים – אולי כתואר שני (של שנה?). חשוב שהבוגר יקבל בסיס ומיומנויות למידה, אבל זה יהיה בזבוז (waste) להמשיך ולתת לו עוד ידע, בלי שברור שהוא זקוק לו.
ידע "אנושי וארגוני" הוא לא פחות חשוב מידע טכנולוגי – ואפשר ללמוד אותו. למה אוניברסיטאות נותנות משקל כ"כ קטן (אם בכלל קיים) לצד זה של ההשכלה? האם "מדעני מחשב" באמת לא זקוקים לידע בין-אישי? האם באקדמיה עובדים לבד ולא בקבוצות / שיתופי פעולה?
Domain Knowledge הוא ידע יקר ערך שאוניברסיטה לא תוכל לספק, אבל היא כנראה יכולה לתת הצצה אליו – ולפתוח צוהר לסטודנטים ללמוד אותו. ב Domain Knowledge אני מדבר על ההיבטים שתוכנה לגופי IT שונה מתוכנה לחברות של תשתיות או רפואה, ביטוח או פיננסים. זה להבין בגדול כיצד ה"ביזנס" שעבורו אנו כותבים מערכות עובד, אלו צרכים מיוחדים יש לו (לפעמים בעקבות רגולציה) וכיצד מתנהלים ארגונים שעוסקים בתחומים אלו? מה מטריד ומעסיק אותן? אלו Patterns של תוכנה מקובלים להתמודד עם הבעיות הללו?
לדוגמה:
  • בשוק החשבונאי חשוב דיוק מלא בכל הנוגע לכסף. אסור לחלק מיליון דולר ל 7 חלקים – ולאבד סנט אחד, בגלל עיגולים שעשה המחשב.
  • בשוק הביטוח כדאי להבין את כל ההסכמים של ביטוח ההדדי בין חברות – וכיצד עסקי הביטוח עובדים.
  • בשוק הרפואי יש רגולציות רבות יש אבטחת מידע רפואי פרטי. יש הרים של מידע ומינוחים שונים רבים לאותו הדבר – שיש להתמודדד איתם וכו'….
אם יש ידע שעדיין לא ניתן לקנות ספר טוב ללמוד אותו ממנו, או שאין קורסים באינטרנט ותשובות ב StackOverflow לגביו –  זהו כנראה ה Domain Knowledge – ומשתלם מאוד ללמוד אותו, בתחום בו אתם עוסקים.
שבירת הסדר בין "יסודות" ל "ידע מעשי" – באוניברסיטה מקפידים על סדר של bottom up, מלמדים שכבה אחר שכבה. למשל: לומדים את מבנה המחשב, לפני שלומדים מערכות הפעלה. לומדים ממשק משתמש (UX) רק אחרי שלומדים לפתח UI – וכו'.
הבעיה היא ש:
  1. התוכנית מתארכת – ולא מגיעים כמעט ל"תוכן משמעותי" לפני שנה שנייה.
  2. מנסיוני האישי – לעתים יותר קל להתחיל בכתיבת תוכנה, ורק מאוחר יותר להעמיק ב"יסודות" כיצד דברים עובדים.
נקודה זו היא פחות חד-משמעית, אך עדיין נראה שש כאן עקרון שכדאי לשקול מחדש.
הפחתת ההשקעה לשם "פיתוח החשיבה" – בזמן התואר הראשון שלי, עשיתי דיי הרבה קורסים שלא מועילים לי היום תחת הטיעון שהם "מפתחים את המחשבה". אני רואה מתכנתים שהגיעו אלינו מממרם או ללא השכלה מסודרת בכלל – והם לא פחות טובים. הם "חושבים" מצויין. האם יש הוכחה שהשקעה בלימודים "לשם פיתוח חשיבה" יותר יעילה מהתחלת עבודה מהירה יותר? התחושה שלי שההיפך הוא הנכון.

סיכום

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

מצגות מכנס Expert Days 2013

בכנס Expert Days 2013 העברתי סמינר (יום שלם) על \"יסודות לפיתוח קוד צד-לקוח\" (אפליקציות ווב), הנה המצגות:

Networking Crash Course

HTTP: the protocol of the web

Get to know the browser and write Faster web applications

Security: Same Origin Policy

Lost in translation

אנקדוטה קטנה על הדרך:

גייקטיים, פירסמו פוסט ישן שלי באתר – תראו איך תורגמה הכותרת:

ליאור

סדנת פיתוח ווב ב Expert Days 2013

עוד כחודש, אעביר סדנה של יום (6 שעות) תחת הכותרת:

המטרה שלי היא לתת יסודות עמוקים ואיתנים לפיתוח ווב, לאלו שהגיעו לעולם הווב לאחרונה מבלי ללמוד את היסודות בצורה מסודרת. אני לא מדבר על HTML5 / CSS3, שאפשר ללמוד אותם בקלות מהאינטרנט, אלא על:
  • קורס מזורז ברשתות – עבור פיתוח ווב
    • אדבר בקצרה על פרוטוקולים: הבדלים בין Ethernet ו 3G, על TCP/IP ו DNS.
    • אדבר על רכיבי רשת וכיצד (בקצרה) הם עובדים: Proxy, Reverse Proxy, CDN, Load Balancer וכו\'.
  • סקירה יסודית של HTTP
    • מחזור בקשה-תשובה, ומבנה הבקשה / התשובה.
    • Methods/Verbs ו Status Codes מרכזיים – וכיצד להשתמש בהם כדי לכתוב שירותי REST בצורה נכונה.
    • Headers חשובים שכדאי להכיר.
    • Caching ו Cookies.
  • מבנה הדפדפן וביצועים של אפליקציות ווב
    • כיצד ניתן לנצל בצורה טובה יותר את הרשת בכדי לכתוב אפליקציות ווב מהירות יותר.
    • כיצד להשתלב בצורה חכמה יותר עם pipeline הרינדור של הדפדפן.
  • אבטחה וה Same-Origin Policy
    • כיצד לתקשר עם domains אחרים, ולעשות זאת בצורה מאובטחת.
כל הדברים שהייתם מצפים ללמוד באוניברסיטה, אבל ללא 10 שנות האיחור ; )
הכנס אמנם במקור מיועד לטכנולוגיות מייקרוסופט, אך הסדנא ניטרלית ונכונה לכל טכנולוגיה (כמו עוד כמה סדנאות ב Track הווב).

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

הסדנא תתקיים ביום ראשון, ה 8 בדצמבר 2013, בכפר המכבייה (רמת גן).

תודה,
ליאור

    כנס JS-il 2013

    היי,

    עוד יומיים אני מציג בכנס JS-IL 2013:

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

    חוץ מהמצגת שלי יש עוד נושאים רבים מעניינים (AngularJS, jQuery Mobile, AMD/require ועוד ועוד).

    לינק לכנס (נראה לי שעדיין אפשר להירשם): http://www.js-il.com/

    הנה קישור למצגת שאציג:
    https://docs.google.com/file/d/0B2nWc6QH9jI3Q3RhM2dLbUZRcFU/view

    ליאור