המאמר Capstone Projects and Time Managemet פורסם ע”י Joel Spolsky ותורגם על ידי בפרוייקט התרגום של יואל על תוכנה.
מדהים באיזו קלות ניתן לעבור תואר במדעי המחשב מאוניברסיטה מובילה מבלי ללמוד אי פעם את הכלים הבסיסיים של מפתחי תוכנה, מבלי לעבוד בצוות ולו פעם אחת, ומבלי לקחת אפילו קורס אחד שבו לא מקבלים נכשל אוטומטי על הגשה משותפת. מחלקות רבות למדעי המחשב לכודות עדיין בשנות השמונים, וממשיכות ללמד את אותה תוכנית לימודים שבימינו כבר פרודה לחלוטין מהמציאות של פיתוח תוכנה בימינו.
היכן אמורים סטודנטים ללמוד על שמירת גרסאות (version control), מעקב באגים (bug tracking), עבודת צוות, תכנון זמן, הערכות זמן, דיבוג, בדיקות שמישות (usability testing) ותיעוד? היכן הם לומדים לכתוב תוכנית ארוכה מ-20 שורות?
אוניברסיטאות רבות הצליחו לשכנע את עצמן שככל שתכנית הלימודים פחות רלוונטית לעולם האמיתי, כך הן אליטיסטיות יותר. זו הדרך של מדעי החברה והרוח. תנו למוסדות הטכניים-מקצועיים, לאוניברסיטאות הפשוטות, ובתי הספר הפחותים בעלי נקודות המצפן המרובות (אוניברסיטת דרום-מערב פלורידה הצפונית) לייצר מתכנתים של ממש. אוניברסיטאות היוקרה של העולם רוצות ללמד אלגברה ליניארית ותיאוריות חישוביות ותכנות הסקל, וכל מחלקות מדעי המחשב השאפתניות שמנסות להעלות את הסטנדרטים, עושות זאת ע”י הסרה מתכנית הלימודים של כל דבר שיש בו פרקטיקה, לטובת עוד תיאוריה.
כעת, אל תבינו אותי לא נכון, זה לא בהכרח דבר רע. לפחות הם מחליפים את ג’אווה ב-Scheme, ולו בגלל ש”זה מה ש-MIT עושה” (מאוחר מדי!). והם מלמדים סטודנטים לחשוב בצורה מסויימת. ובהינתן הידע של מרצה ממוצע למדעי המחשב בהנדסת תוכנה בעולם האמיתי, אני חושב שאני מעדיף שילדים ילמדו את הדברים האלה בהתמחות ב-Fog Creek.
גרג וילסון, מרצה בכיר באיניברסיטת טורונטו, נתן הרצאה בכנס ה-DevDay של Stackoverflow בטורונטו שהיתה מעניינת, אינפורמטיבית, ובאופן כללי פשוט הצלחה מסחררת. התחלנו לדבר, והוא סיפר לי על פרי רוחו החדש, UCOSP שהפרוש שלו הוא “כל השמות הטובים כבר תפוסים”.
זהו מקבץ של 15 אוניברסיטאות, רובן בקנדה, המארגנות קונסורטיום של פרוייקטי גמר לסטודנטים בשנת הלימודים האחרונה שלהם. הם יוצרים צוותים של חצי תריסר סטודנטים מאוניברסיטאות שונות לשתף פעולה בתרומה לפרוייקט open source, לשם נקודות זכות וציון. ברגע ששמעתי על התכנית, התנדבתי לתת חסות לצוות שירים תרומה ל-Mercurial. חסות צוות כוללת מימון נסיעה לטורונטו עבור הסטודנטים כדי שיוכלו להתארגן, וכן לספק מתכנת שיהווה mentor של הצוות.
בשיטוטיי ברחבי בלוג ה-UCOSP, נזכרתי מדוע פרוייקטי סטודנטים אמנם זוכים לתשבחות, אבל לרוב אינם מספקים שום דבר מועיל. “אחת המטרות של הקורס הזה היא לתת לך הזדמנות לגלות איך זה להציב לעצמך מטרות ולעמוד בהן”, כתב גרג. “התוצאה הסופית די ברורה בנקודה הזאת: במקרים רבים, סטודנטים עושים פחות פר שבוע בקורס הזה מאשר היו עושים בקורס יותר מובנה בעל אותו תוכן בדיוק”.
לסטודנטים בשנה האחרונה שלהם יש כ-16 שנות נסיון בביצוע פרוייקטים קצרים והגשתם ברגע האחרון. עד שתגיע לשנה האחרונה באוניברסיטה, לא סביר להניח שאי פעם תיתקל במטלה שאינה יכולה להתבצע אם תישאר ער כל הלילה.
המטלה הטיפוסית במדעי המחשב מצפה מסטודנט לכתוב את החלק ה”מעניין” של הקוד (במובן האקדמי של המילה). 90% האחרים של העבודה שצריך לעשות כדי להעלות את הקוד לרמה של “קוד יעיל, של העולם האמיתי” לעולם אינם מצופים מהסטודנטים, בגלל שזה לא “מעניין” לתקן באגים ולהתמודד עם תנאים של העולם האמיתי, ומשום שרוב חברי הפקולטה של מדעי המחשב מעולם לא עבדו בעולם האמיתי וכמעט שאין להם מושג מה נדרש כדי ליצור תוכנה שיכולה לשרוד מפגש עם משתמשים.
בד”כ האשם הוא בתכנון הזמן. בקבוצה של ארבעה סטודנטים, אפילו אם אחד או שניים מהם הם בעלי יוזמה מספיק ורוצים לנסות להתחיל מוקדם בסמסטר, סביר שהסטודנטים האחרים יגררו רגליים, כי עכשיו יש להם פרויקטים יותר דחופים בקורסים אחרים שמועד ההגשה שלהם הוא מחר. הסטודנט(ים) השאפתנ(ים) יצטרכו לבחור בין להתחיל ראשונים ולבצע יותר מהחלק היחסי שלהם בעבודה, או לחכות עם כולם עד הלילה שלפני. נחשו מה מנצח.
לסטודנטים יש בדיוק אפס נסיון בלוחות זמנים ארוכי-טווח ומבוססי-צוות. לכן, הם כמעט תמיד עושים עבודה מזופתת כשנותנים להם פרוייקט ארוך-טווח ואומרים להם לנהל את זמנם בעצמם.
אם רוצים להפיק תועלת מפרוייקטים כאלה, צריך לתת דד-ליינים שבועיים, וצריך להכיר בזה שכל העבודה בפרוייקט תעשה בלילה שלפני הדד-ליין השבועי. נראה שהעובדה שלעתים רחוקות מאד עומדים בדד-ליינים ארוכי-טווח ללא אבני דרך קצרות טווח, היא מאפיין קבוע של בן האנוש.
זאת הזדמנות פז להשתמש ב-Scrum. פעם בשבוע, הצוות נפגש, פנים אל פנים או באופן וירטואלי, וסוקר את העבודה של השבוע שעבר. א
לא בטח שאתה צודק
נכון שאפשר לקטר רבות על האוניברסיטאות, אבל לא בטוח שמה שהם צריכים זה לייצר מתכנתים דווקא
יש כל כך הרבה תחומים, ודווקא הנושא של
checkin/checkout
ועבודת צוות זה משהו שאפשר ללמוד תוך חודש עבודה בחברה נורמלית
מה שבאמת חשוב זה תכנון נכון והכרה שלא צריך להמציא את הגלגל מחדש עבור כל פונקציה
ושלא לדבר על זה שבתעשיה יש עלותתועלת – גם אם תבוא עם הרעיון הכי מבריק בעולם אבל כדי לממש אותו צריך למשכן חצי חברה – לא בטוח שילכו על זה…
תודה על התגובה
לעצם העניין – נראה לי שהציפיה היא שממחלקות מדיע המחשב ייצאו מתכנתים.
נכון שחלק מהדברים אפשר ללמוד בעבודה (וג’ואל גם כתב שנראה לו שזה עדיף), אבל עדיין יש מצבים שהם הפוכים לגמרי באוניברסיטה ממה שהם בעבודה (למשל עבודת צוות – למה לאסור את זה? בסוף אתה מבזבז את הזמן שלך באוניברסיטה בנסיון לטשטש את העובדה שעבדת בצוות…)
לגבי הנקודה האחרונה – לא הבנתי מה הנקודה. מה שכתבת הוא נכון – לפעמים בעבודה יש עלות מול תועלת – אבל מה זה שייך למה שלומדים באוניברסיטה?
מעניין! תודה!
בשמחה 🙂