על אסטימציות, יעילותן, תפוחי אדמה והזמן שבו צריך להחליף את השמן...

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

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

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

ואז בת הזוג שלכם שואלת - כמה זמן יקח לכם לקלף את תפוחי האדמה?

בכדי לענות על השאלה, ספרתי כמה תפוחי אדמה חתכתי ב-5 דקות האחרונות.
התשובה הייתה 10 תפוחי אדמה.

ספרתי כמה נשארו לי על השיש - 30 תפוחי אדמה.
חישוב קליל אומר - קצב של 10 ל- 5 דקות, דהיינו 2 תפוחי אדמה לדקה.

נשארו 30, קצב של 2 בדקה..
יקח לי 15 דקות! כמה פשוט וכמה קל.

אבל רגע.

הנחת היסוד (1) היא שאנחנו משווים תפוחי אדמה עם תפוחי אדמה.

האם כל תפוחי האדמה זהים?

אם היו זהים בגודלם, החישוב היה מדויק.

אבל  -
חלק מתפוחי האדמה דורשים קילוף בלבד.
חלק אחר מתפוחי האדמה דורשים קילוף וחיתוך למספר חתיכות, כי הם גדולים מדי.
חלק מתגלים כרקובים אחרי הקילוף והולכים לפח.
חלק מתגלים כרקובים חלקית כך שאפשר להסיר חלק מהן ולהשתמש בחלק הבריא.

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

הנחת היסוד (2) - אני יודע בדיוק כמה עבודה אני דרוש לבצע ומתי היא מסתיימת.

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

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

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

הנחת יסוד (3) - ביצועי העבר מעידים על העתיד.

אמרנו שלקח לי 5 דקות לחתוך 10 תפוחי אדמה.
ונניח ונדלג על התסבוכת הקודמת ונשארו אך ורק 30 על השיש, ללא אורחים נוספים.
אמרנו שיקח 15 דקות, נכון?

וכמה תיקח אותה משימה אם... חבר שלי יחתוך במקומי?

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

האם ביצועי העבר שלי אומרים משהו על ביצועיים עתידיים?

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

סוף האנלוגיה - והנה כמה מסקנות.

כדי להעריך נכון ולהיות תותח על באסטימציות:

1.  צריך להשוות תפוחים לתפוחים.
2.  צריך לדעת בדיוק דיי גבוה מה על השולחן.
3.  צריך לחזות את העתיד בצורה מדויקת מבחינת הפתעות.
4.  צריך שביצועי העבר ישקפו את ביצועי העתיד בצורה מדויקת.

בעולם הפיתוח:

1. פיתוח שונה אחד מהשני ברוב המקרים. פיתוחים הם בעלי אופי שונה, מצריכים ידע שונה וכישורים שונים. לכן לא ממש תפוחים לתפוחים.

2. אנחנו לא תמיד יודעים מה יש על השולחן - מגלים רק כשמלכלכים את הידיים והיכולת שלנו להבין בשלב התכנון מוגבלת מאד עד לא קיימת.

3. היכולת שלנו לחזות את העתיד מבחינת הפתעות - כמעט ולא קיימת ומבוססת לפעמים על היסטוריה למרות שמשתנה זה יותר בעל אופי רנדומלי.

4. בני אדם תמיד משתנים - מבחינת יכולת, מצב רוח, השפעות מחוץ לעבודה, העדרויות וכו', כך שהעבר לא בהכרח מעיד על העתיד, כשמדובר באדם בכלל ובפרט שמדובר בצוות עם דינמיקה.

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

נורא ואיום, הא?

כמה טיעונים נוספים שלא הגיעו לעולם תפוחי האדמה:

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

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

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

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


מה עושים בכל אופן? 

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

2. אסטימציות ביחידות גדולות - לפעמים צריך לדעת מה נכנס לגרסה ומה לא. יש ארגונים שמשתמשים ביחידת מידה של T-Shirt Size. אלה לא נחשבות אסטימציות בעיני, זה סדר גודל.
ככל שיחידת המדידה מדויקת פחות, אנחנו מדברים על הערכות מאד גסות שבהן קצת יותר קל לפגוע.

3. תשאלו את עצמכם - מה השאלה שאנחנו באים לענות עליה פה שהתשובה שלה היא "אסטימציה".
כנראה שחשבתם על הצורך בכלי לתכנון והערכה.
הרבה יותר חשוב מתכנון ראשוני ואסטימציות - בקרה יומית \ שבועית \ חודשית, מעקב, דיווח ושקיפות. 
בעולם עם כל כך הרבה שינויים ומשתנים, עדיף לנתח את מה שקרה ולתכנן לטווח קצר, מאשר להשקיע וליפול.


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


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


Fried Potatoes 

- מידע נוסף - חפשו באינטרנט noestimates#
- הרעיון לאנלוגיה של תפוחי האדמה, קרדיט ל-John Yorke ולסרטון הזה.
- פוסט חשוב שמדבר על הרעיון ועל ה-Debate בנושא שממנו תרגמתי חלק עבור הפוסט הזה, כאן.

3 תגובות:

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

    השבמחק
  2. בוא ניקח את רעיון תפוחי האדמה שלך ונזרום איתו.
    נניח שאני מנהל סניף של מסעדה שמוכרת צ'יפס כאחת התוספות העיקריות. אני מעסיק אותך בעיקר כאחראי לספק לי את הצ'יפס ברמה יומית. כנראה שאחרי כמה ימים נגיע למסקנה שאנחנו צריכים בערך מספר שקים של תפוחי אדמה ברמה יומית (סתם נניח 5). וכנראה ששנינו נגיע למסקנה שלוקח שעה וחצי לקלף את כולם בממוצע יומי. גם אם יש ימים שייקח 15 דקות פחות וימים שייקח 40 דקות יותר.
    כמנהל מסעדה זה מאפשר לי לדעת בכלל כמה שקים להזמין, בערך כמה זמן מראש אתה צריך להגיע למשמרת להתחיל לקלף ומתי אני צריך לגייס עובד נוסף כי אין מצב שנעמוד בדדליין.
    וזה בעצם כל התורה. אסטימציות הן לא תורה שיכולה לחזות טוב בקנה מידה קטן. הן עוזרות (כמו כל כלי סטטיסטי) בעיקר בחוק המספרים הגדולים.

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

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

    השבמחק