Scrum כגישה משלימה למתודולוגית Agile לפיתוח תוכנה

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

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

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

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

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

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

 

המונח Scrum הגיע מעולם הרוגבי. מאחר שזה לא משחק נפוץ בישראל אז גם המושג לא בדיוק מוכר אבל הוא מנסה לתאר את השאיפה של הקבוצה כמכלול להשיג יעילות עבודה טובה יותר. המתודולוגיה הוצגה בתחילת שנות ה-90 תחת המונח Scrum והמיישם הראשון שלה נחשב Ken Schwaber. רק ב-2001 היא שולבה יחד עם Agile בספר “Agile Software development with Scrum”.

 

אז Scrum זה מתודולוגית פיתוח תוכנה שמורכבת מ-3 מרכיבים: מתודולוגית ניהול, מתודולוגית שיפור ומתודולוגית תמיכה.

פרויקט Scrum מורכב משלושה גורמים צוות הפיתוח שנתמך ע"י Scrum Master ו-Product Owner.

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

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

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

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

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

בכל תחילת יום במהלך הספרינט, מתקיימת פגישת Scrum יומית בה משתתפים כל חברי הקבוצה, כולל ה-Scrum Master ו-Product Owner. פגישה זו נמשכת כ-15 דקות. במהלך זמן זה, חברי הקבוצה משתפים על מה הם עבדו ביום הקודם, על מה הם יעבדו היום ויציגו כל בעיה או עיקוב בהתקדמות הספרינט. מפגשים יומיים מטרתם לסנכרן את העבודה בין חברי הקבוצה בזמן שהם דנים בעבודה שנדרשת במהלך הספרינט.

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

ב-Scrum קיימים שני כלים חשובים נוספים שמלווים את הפרויקט. ה-Release Burndown שמציג את קצב השלמת וה-Product Backlog לאורך הפרויקט ו-Sprint Burndown שמציג את המעקב אחר התקדמות ה-Sprint Backlog. שני כלים אלו מאפשרים לזהות במבט מהיר האם הפרויקט/הספרינט עומד בלו"ז המתוכנן.