#9 כמה זמן זה יקח לך?

#009 How much time

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

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

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

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

הפרנואיד. זהו על פי רוב מהנדס ותיק ויסודי שמטבעו לא אוהב שינויים. הוא מכיר את הקוד כבר שנים ברמת אינטימיות כזו, שאם מישהו מוסיף בטעות שורה ריקה בסוף הקובץ הוא מזדעק בקול "מי נגע לי בקוד". מבחינתו של הפרנואיד, כל שינוי הוא מתכון בטוח לבעיות. ובעיות לוקח זמן לפתור. לכן אצל הפרנואיד כל משימה, קלה ככל שתהיה תיקח לפחות שמונה-תשעה שבועות, וזה כולל רק בדיקות שטחיות ללא בדיקות "White box" לעומק. כמובן שהערכותיו של הפרנואיד תמיד מגובות במידע היסטורי, שלא לומר היסטרי, הכולל דוגמאות מהעבר הקרוב והרחוק בסגנון "את זוכרת את השינוי הקטן הזה שהכנסנו לפני חצי שנה, ועד עכשיו הוא לא עובד…". זה לא שהפרנואיד מנסה להפחיד את המנהל עם הערכת זמן מפוצצת בשביל שהוא אולי יבטל את הפיצ'ר האומלל, זה פשוט השיטה שלו לגרום לכך שאת השינויים מישהו אחר יעשה באזור אחר של הקוד, כך שהוא יוכל להמשיך לשמור על הקוד שלו נקי ויפה ובעיקר ללא שינוי. במקרה של הפרנואיד, על המנהל לקחת את הערכת הזמן שהתקבלה, לחלק אותה בשתיים ומהתוצאה להחסיר שבוע. רצוי גם להוסיף מוסיקה מרגיעה וכדור ואליום כשמראים לפרנואיד את התוכנית החדשה.

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

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

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

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

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

והמהנדס החכם אומר: כמה זמן זה ייקח לי? תן לי שתי דקות בשירותים ואני גומר את זה (לזכרו של משה ולנסי ז"ל, שבאמת היה יכול לכתוב כל דבר בשתי דקות בשירותים)

7 תגובות בנושא “#9 כמה זמן זה יקח לך?

כתוב תגובה לאודי הרשקוביץ לבטל