העקרונות האג’ילים – חלק 2

הפעם אין הקדמה, נמשיך.

Build projects around motivated individuals. Give them the
environment and support hey need, and trust them to get the job done.

העיקרון הזה מדבר על האנשים ומתחלק לשלושה חלקים, ואני אף,הייתי מפריד אותו.
1. בבסיס התפיסה האג’ילית קיימת ההנחה שללא אנשים מקצוענים, בעלי יכולת גבוהה לא ניתן בכל מקרה להגיע להישגים בתחום שלנו (פיתוח תוכנה), לכן בין השאר קיים העיקרון הזה, הוא מדגיש את החשיבות בבחירת האנשים המתאימים לפרויקט. עקרון זה הוא איננו טריוויאלי שכן ישנן חברות רבות שהקומפוזיציה של צוותים בד”כ נוטה לכיוון שבצוות יש כ-20% של מובילים ועוד 80% של כאלה שיעשו את ה”עבודה השחורה” (על צוותים והרכבם יש לי הרבה מה לומר).
2. ספקו לאנשים העובדים את כל מה שהם צריכים כדי להצליח במשימה, שוב נשמע טריוויאלי אך בד”כ לא ממומש, אני כמעט בטוח שיצא לכם להיתקל בסיטואציות שלא הסכימו לתת תקציב (או אפילו הסכימו אבל עשו את המוות קודם) לדברים קטנים שיכלו לעשות שינוי גדול כגון: החלפת מסך, הוספת זכרון, קורסים וכו’. ההוצאות התקציביות שהזכרתי הן בד”כ השוליים של הוצאות הפיתוח שרובן הן התקורה והאנשים. רק התסכול שנוצר עקב ה”חיסכון” עולה יותר.
3. החלק השלישי והכי לא טריוויאלי הוא לבטוח באנשים, זה לא פשוט אני מודה, אבל זה כדאי. המשמעות של לבטוח באנשים היא לתת להם את החופש לעשות את העבודה כמו שהם חושבים שצריך, לא להתערב להם בהחלטות (אפילו טכניות), אנחנו נדבר עוד הרבה על הנושאים הללו.

The most efficient and effective method of conveying information to
and within a development team is face-to-face conversation.

תקשורת !!! אחד הגורמים החשובים ביותר להצלחת פרויקטים, העיקרון הזה מדבר על התקשורת עם, אל ובתוך הפיתוח, וטוען שהדרך הטובה ביותר להעביר ידע הוא שיחה, ואף מדגיש, פנים אל פנים.
מה? ממש לדבר? בשביל מה המציאו את המייל ? או הטלפון? ובכן, כן! ממש לדבר!
נכון, צריך לקום מהכיסא, ואפילו אולי (חס ושלום) ללכת אבל הרווח הוא אדיר, אי ההבנות הנוצרות מכל שיטות התקשורת המודרניות עולה לנו ביוקר.
כשאנחנו מדברים אנחנו לא מבטלים לגמרי את האפשרות לאי הבנות אבל מצמצמים אותו בצורה משמעותית. דבר זה נכון גם למסמכים שבאים להחליף שיחות, מסמך Code review, מסמך דרישות, מסמך Design, יאללה, חלאס, דברו. אני לא טוען (כרגע לפחות) שלא צריך את המסמכים האלה, זאת החלטה שלכם, אבל העיקרון (וגם אני) ממליץ שבנוסף למסמך תהיה גם שיחה.

Working software is the primary measure of progress.

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

Agile processes promote sustainable development. The sponsors,
developers, and users should be able to maintain a constant pace indefinitely.

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

נשארו עוד שלושה עקרונות… בפוסט הבא.

2 Responses to “העקרונות האג’ילים – חלק 2”

  1. נועם says:

    שאלה.
    לגבי עקרון התקשורת, באמת אני מסכים, תמונה אחת שווה 1000 מילים ושיחה אחת שווה 1000 דפים.
    כיצד התפישה החדשה לוקחת בחשבון את הטרנד של מיקור חוץ…ואף יותר מזה – מיקור חוץ בחו”ל בו התקשורת היום-יומית לא קיימת. איך נשארים ב”שליטה” כאשר העבודה רחוקה מהעין?

  2. agileman says:

    מכיון שעדיין לא הסברתי באמת שום שיטה, אלא רק גישה, קצת קשה לי לענות, אבל אנסה.
    מכיון שהערך בתקשורת הוא רב ערך, אכן יש קושי אמיתי להתמודד עם צוותים מבוזרים. הקושי הנ”ל קיים בכל מקרה ובכל מתודולוגיה, ויש כל מיני רעיונות (טכנים בעיקר) על איך מייצרים תקשורת טובה, רעיון אחד ששמעתי שבוצע (בחברה שאני עובד בה) הוא שהתקינו מצלמות רשת בחדר של הצוותים בשני האתרים והמצלמה היתה פתוחה 24 שעות, סג של חלון לחדר השני שיכלת בכל רגע לגשת אליו ולדבר אל החדר. דרך נוספת היא ע”י פגישות וירטואליות קצרות לפחות פעמיים-שלוש ביום, ויש עוד מספר פתרונות אפשריים אך אכן הבעיה לייצר תקשורת איכותית עם אתר מרוחק היא אמיתית ואין לה פתרון טריויאלי, וכל זאת מבלי להתייחס להבדלי תרבות, שפה, מבטא, שעות ועוד…
    בשורה התחתונה – איפה שאפשר להימנע מביזור של צוות אני ממליץ, ואיפה אי אפשר ניתן למצוא פתרונות שישפרו את המצב עד כמה שניתן.
    כשנתחיל לדבר על סקראם אז למעשה תוצג שיטה שנותנת מענה חלקי לבעיה.
    לגבי המשפט – “איך נשארים ב”שליטה” כאשר העבודה רחוקה מהעין?” – אולי אי אפשר…. אולי גם אי אפשר כאשר העבודה “קרובה אל העין” ? – נושא אחר ומרתק.