כדי להכנס לאוירה המתאימה" פתח ואמר, "כפי שאתם בודאי יודעים, אנחנו נמצאים בעיצומו של משבר תוכנה כלל עולמי".
"שמענו על זה" חייך דּוּדוּ וקרץ ליעל.
"איך הם הגיעו לַמספרים שהם פירסמו?" שאל אריק. "מה, באמת 70% מפרויקטים של תוכנה לא מגיעים לקו הגמר?" ולחש לעבר צביקה: "שיעברו לאלקטרוניקה - זה יותר אמין..."
"שיעברו למכניקה" הציע צביקה אף הוא בלחישה. "מכונית הרבה יותר אמינה ממחשב, לא?" צחק.
* CMS = Configuration Management Sysem תכנית מחשב לניהול ולבקרת תצורה, המטפלת בגרסאות ובשינויים הנערכים בקבצים, שהייתה בשימוש במחשבי ה-VAX של חברת Digital.
"מי זה הם?" שאלה יעל. "מי פרסם את הנתון המזעזע הזה?"
"משרד ההגנה של ארצות הברית" השיב אריק. ההפסדים נמדדים במיליארדים של דולרים".
"לשנה?" שאלה יעל.
"לא יודע... לא זוכר..." מלמל והיפנה את מבטו לעבר ירון.
"כן... ההפסדים הם אדירים... ושוק הנדסת התוכנה רותח, כפי שאתם יודעים..."
"כן... כן..." נשמע המהום במעבדה.
"אז יש כשלים... זה ברור... ולא אנחנו המצאנו אותם... כאן בתע'צ".
"אבל אנחנו חלק מהעניין" ציין מיכה בכובד ראש.
"נכון מאוד... אז רציתי לברר לשמוע את דעתכם... מישהו מוכן להסביר לי למה לפרויקטים עתירי תוכנה, כמו 'אלון ירוק' למשל, למה לפרויקטים מהסוג הזה יש נטייה מובהקת כל כך להיכשל?"
"תגדיר 'כישלון של פרויקט' " מלמל צביקה בקול שקט.
צחקוק קל נשמע מהפינה השנייה, המרוחקת יותר של המעבדה. ירון אף לא הפנה את מבטו לשם, רק ניסה להשתמש בשאלה כבמנוף לתחילת הדיון: "מישהו יכול לענות לצביקה? איך אתם הייתם מגדירים כישלון של פרויקט?"
דממה הדהדה בחלל המעבדה. כעשרים זוגות עיניים ננעצו בירון והוא הבחין רק בזוג עיניים אחד. עיניים כחולות עמוקות ויפות. היא ישבה בקצה המרוחק של המעבדה על כיסא מוגבה. משרבטת דבר מה על נייר מקופל אפילו לא הביטה לעברו... והוא, הוא מתאמץ להימנע מלהעיף בה מבט.
"שרק יתחילו להגיב" חשב בתקווה והקשה: "אין מתנדבים?"
הרחש העדין של מאווררי ציוד הבדיקה שלט בכיפה. צוות "אלון ירוק" התכנס במעבדת האלקטרוניקה כדי להתנסות בניתוח קבוצתי של בעיות תקשורת. מקצת האנשים שהגיעו בזמן, תפסו כסאות ואחרים התרווחו על השולחנות הרחבים והרגישו בנוח ליד מכלולי אלקטרוניקה פתוחים, אבי טיפוס גסים ומכוערים המורכבים ממעגלים אלקטרוניים המחווטים בחוטים דקיקים וצבעוניים שעליהם קבועים רכיבים ססגוניים. ג'וקים מעוותי רגליים, מושלכים על השולחנות, לצד נַגָּדִים, קַבָּלִים ושאר רכיבי אלקטרוניקה צבעוניים.
חוסר תגובת הנוכחים צרב במעט והוא ניסה להרגיע את עצמו, שבדרך כלל בתחילת הרצאה מהסוג הזה, התגובות זורמות באיטיות. "צריך לחמם מעט את האווירה אבל אני מוגבל בזמן..." הרהר. הוא ידע שהתחלות כאלה אינן בהכרח מצביעות על ההמשך.
"אם זה ימשיך כך, אני עלול להגיע למסקנה שהדברים מושלמים כאן בתע'צ וכישלון הוא מושג תאורטי" ניסה ירון להתבדח. הוא לא העז לבחון את תגובותיה של יעל.
"גיחי גיחי" נשמע גיחוך מלאכותי מהצד ודּוּדוּ שאל: "תכלס, מה אתה רוצה מאתנו? תן איזה Speach קצר על מה זה ניתוח... איך אמרת, מיכה?"
"ניתוח אירועים בלתי רצויים" השיב מיכה ביבושת.
"בדיוק... אז נתחיל כבר" סיים דּוּדוּ את תרומתו לאווירה. "תמיד הירון הזה מוצא את הזמנים הכי לא מתאימים לבזבוז זמן" הרהר.
ירון שאף מלוא ריאותיו מהאוויר הדחוס, העיף מבט קצר בשעונו, לועג בלבו למהנדסי מערכת מסוגו של דּוּדוּ, שאינם יכולים להימנע משימוש במילת המפתח "תכלס".
"פרויקט נכשל אם אינו עומד בציפיות המפעל או בציפיות הלקוח" קבע ירון. "העובדות בשטח מלמדות שפרויקטים כמו זה שלכם, הם בעלי סיכוי טוב לחרוג מלוחות הזמנים המתוכננים. בכלל, בפרויקטים עתירי תוכנה קיימות חריגות תקציביות... לכן מתייחסים אליהם כאל פרויקטים בעלי סיכוי גבוה להכשל... אלה הם פרויקטים בעלי רמת סיכון גבוהה".
"וחריגות מהתכנון הטכני המקורי אינן מכשילות פרויקטים?" זרקה ג'ין שאלה רטורית אל חלל החדר.
"נכון מאוד" השלים דּוּדוּ את שאלתה. "אי עמידה בתנאי המפרט הטכני. הלקוח רוצה פרה ומביאים לו תרנגולת. אז מה?"
"שיגיד תודה שמביאים לו לפחות משהו" העיר צביקה בעוקצנות.
חיוכים החלו להתפשט על פני האנשים.
"בדרך כלל אצלנו זה הפוך, עם מהנדסי המערכת היצירתיים שלנו" העיר דני בעוקצנות ולכסן מבט רב משמעות לעבר דּוּדוּ. "הלקוח רוצה בסך הכל תרנגולת ומתכננים בשבילו פרה. מה שבטוח. אולי, למרות הכל, הוא לא יודע בדיוק מה הוא רוצה? עוד קצת תכונות לא יזיקו לאיש..."
"מנצל הזדמנויות כדי לתקוף בפורום הזה" חלפה מחשבה במוחו של דּוּדוּ. "הממזר יודע שאני עָדִין מדי ולא אפגע בו באופן ישיר, אבל אין דבר, אני אתפוס אותו כבר בפינה".
"אם אתם כבר על הגל הזה" ניסה ירון לתרום את חלקו לאווירה, "אז המקרה המעשי באמת הוא שהלקוח אומנם רוצה תרנגולת, אנחנו מתכננים להגיש לו פרה אבל בבדיקות קבלה, מסתבר שזו עֵז, תרתי משמע".
כולם צחקו למעט מיכה. "אנחנו עושים מאמצים להישאר במסגרת התקציבית" העיר בכובד ראש כיאה למנהל פרויקט.
"המרובע הזה!" התמרמר ירון. "אינו יודע אפילו לקבל בדיחה כמו שצריך".
"הפרויקט המושלם" העיר אריק, מהנדס אלקטרוניקה צעיר, כשהוא מסתיר אך בקושי חיוך מלגלג.
"מחייכים" הרהר ירון "אבל ניתן לחוש בבירור את המתיחות הקיימת מתחת לפני השטח. "עכשיו חסר לי משהו בסיסי" פלט וסקר את הנוכחים. "אז מדוע מגיעים למצבים כאלה? מדוע חורגים מהמפרט הטכני המקורי וכתוצאה מכך מתקבלות סטיות בלו'ז?"
יעל המשיכה לקשקש על אותו נייר מקופל שאחזה בידה.
"אל תשאל אותנו" הרים דּוּדוּ את קולו בחגיגיות בלתי מובנת. "שאל את מֶרְפִי. הרי ברור שחוק מֶרְפִי מספר 258 פועל תמיד".
"אתה מוכן לנסח אותו?" שאל צביקה. "כולם מתים לדעת מה הייתה דעתו של מֶרְפִי".
דּוּדוּ הזדקף על רגליו והחל לדבר בהטעמה מעוררת גיחוך, כשעיניו נשואות לתקרה. "פרויקט שמתוכנן בצורה מרושלת, יימשך פי שלושה מהזמן הצפוי. לעומתו... לא, לא, בניגוד לו, פרויקט שמתוכנן בקפידה, יימשך רק פי שניים מהצפוי".
רעמי צחוק ליוו את דבריו.
לאחר שהרוחות נרגעו מעט, חזר ירון ושאל: " ובכל זאת, מדוע כל כך הרבה פרויקטים ממשיכים להיכשל?"
"אל תשאל אותנו" הזדרז לענות צביקה "ההנהלה היא הכתובת המתאימה".
"אבל אתם אנשי המקצוע. אתם קובעים את לוחות הזמנים... לפי התכנון שלכם, נקבעת המסגרת התקציבית של הפרויקט. אתם גם משתתפים, או לפחות חלק מכם משתתף באפיון הפרויקט. במלים אחרות, השאלה צריכה להיות מופנית דווקא אליכם ולא אל ההנהלה...".
"אל תעשה את עצמך" זעף דּוּדוּ. "לא חשוב מה שנחליט, בסופו של דבר, הם יקבעו. אנחנו נשקיע בתוכנית עבודה שכוללת אבני דרך מפורטות... נתחשב בחופשות... ובמחלות... נערוך את כל החישובים ואפילו נכפול בפקטור, שיהיה על בטוח... כולנו נדע שאין לתכנון הזה משמעות מעשית, כי הכל אחיזת עיניים... איך שתוכנית העבודה מגיעה לידיים שלהם, הם קופצים וצורחים: 'מה? כל כך הרבה זמן? הרי בצורה כזאת לא נוכל להיות תחרותיים - הלקוח לא יסכים. הוא ידרוש לחתוך! לקצץ!' הרי רק זה מעניין אותם. לצמצם בהוצאות... ואז מגיעים, בסופו של דבר, לשלב שבו אין יותר כוח להתווכח. עדיין מפליא אותך שלא עומדים בלוחות הזמנים? והם עוד אומרים: 'אבל הרי אתם הסכמתם לקיצור הזמנים!!!' איזה הסכמנו? זה כמו במקרה של חשוד, להבדיל, שנשבר בחקירה ומודה ברצח, רק כדי שיתנו לו קצת לישון ואחר כך השופט אומר: 'לפני מונחת הודאה בכתב ידך...'. אני עדיין חושב שצריך להפנות אליהם את השאלה..."
מיכה חש מותקף. הוא אמור לשקף בנסיבות כאלה את עמדת ההנהלה, כראש פרויקט. "אני מאוד מצטער" היסה את הנוכחים בהרמת קולו. "אין צורך להפנות אליהם את השאלה הזו. הכל מגיע מאתנו"
"ממך!" התריס כנגדו דּוּדוּ.
"את הערכת הקשיים ואת הערכת הזמנים אנחנו עושים ביחד" הרים שוב מיכה את קולו והישיר מבטו לעבר דּוּדוּ.
"אתה צריך להיות הBuffer- בינינו לבין ההנהלה" השיב דּוּדוּ בכעס ושלח לעברו אצבע מאשימה. "אתה צריך לייצג את עמדתנו המקצועית ולא ל'התקפל' בכל פעם שמרימים עליך את הקול. מה זה 'הלקוח לא יסכים?' אני לא מבין את משמעות ההצהרה ש'לא נהיה תחרותיים'. תראה מה קורה בפועל, כשאתה מתקפל! בסופו של דבר, כולם עם האף באדמה. החבר'ה אינם שבעי רצון... כי אתה מאלץ אותם לבצע עבודה רבה יותר מבלי לשנות את הלו'ז, או את גודל הצוות... אבל כמובן שלא מספיקים כי הזמן כבר מזמן לא מעשי. גם הלקוח אינו שבע רצון כי הרי אנחנו חורגים מהלו'ז... והעבודה... העבודה בתנאים האלה נעשתה בצורה מרושלת... המרוץ הבלתי פוסק הזה אחרי..."
"הדבר הפשוט ביותר" קטע מיכה את דבריו, "זה להאשים אחרים. אולי בכל זאת כדאי לחפש, לפחות חלק מהבעיות, אצלנו?"
"לא צריך להגזים" מיהרה ג'ין להוסיף. "התייחסתם רק לקצה הקרחון. מה בדבר השינויים שמוכתבים לנו על ימין ועל שמאל? אחרי שלוח הזמנים נקבע כבר ואושר על ידי כל האנשים החכמים. אחרי שהאפיון הושלם והתכנון כבר מאחורינו, בא פתאום איזה לקוח פיקח או מה שקורה בדרך כלל, איזה מהנדס מערכת דומיננטי..." הגניבה מבט חפוז לעבר דּוּדוּ והמשיכה "ומציע שינוי קטנטן. אחד כזה, שכביכול, שבכלל לא צריך להשפיע... והדרישות לשינויים כאלה באות בקצב כל הזמן... בקצב שלפעמים אני לא יכולה לעמוד בו... אולי הבעיות באמת מתחילות אצלנו? אצלכם, מיכה ודּוּדוּ. לא בהנהלה הבכירה דווקא. למה שלא תיקחו מידי פעם פסק זמן כדי לבחון את ההשפעה האמיתית של השינויים האלה על לוח הזמנים? ואז תחליטו לוותר על שינוי, או תדחו אותו לגרסה הבאה או, אם הוא באמת כל כך חשוב, שנו את תכנית העבודה. מה האסון הגדול בזה? אף אחד לא 'יהרוג' אתכם אם תדרשו שינוי מנומק בתוכנית העבודה. שום דבר לא כל כך קדוש. במרוץ אחרי שיפורים ו... ושיפורים של שיפורים... בשלב מסוים אתם מפסיקים לראות את הבעיות הקטנות, את המיקרו... זאת אומרת - את המציאות...".
בעליל נראה היה כי ג'ין כעסה. שפתיה החיוורות רעדו. "אני מדברת על דברים ידועים שאולי הספקתם לשכוח. כל שינוי 'קטן' כזה מפריע לי בעבודה ואחר כך אני צריכה לחזור אל הנושא הישן... לנסות לשחזר איפוא בדיוק הפסקתי לפני..." קולה של ג'ין נשבר לפתע "ואתם מדברים על חוסר ריכוז בעבודה, על חוסר יעילות, על זה שלא מספיקים דברים פשוטים כל כך. הרי כל העבודה רצופה בהפרעות... מה הפלא שאי אפשר לסגור נושא עד הסוף?"
"צריך גם לזכור שלכל שינוי 'קטן' כזה יש כל מיני תופעות לוואי במקומות אחרים במערכת" העיר צביקה בקול שקט, "מין תופעות בלתי צפויות כאלה. מצאו לזה אפילו שם, נכון? קוראים לזה 'תופעת האדווה' ".
"אפרופו שינויים" הוסיף מיכה. "אז כמו שג'ין ציינה, דּוּדוּ באמת ידוּע ברעיונות המטורפים שלו".
צחוק קצר שיסע את דבריו וצביקה טפח על כתפו של דּוּדוּ בחוזקה.
דּוּדוּ התכווץ בכאב ופלט "הבנו... הבנו..."
"אבל לצד זה" המשיך מיכה, "אני חייב לציין שהשינויים שהוא יוזם, משדרגים ברמות את המערכת... אתם לא יכולים להתכחש לזה. וזה, כמובן, משפיע מ א ו ד על איכות הקשרים שלנו עם הלקוחות...".
מיכה ראה צורך לנצל את הבמה והמשיך: "בבוקר, מגיע הבן-אדם, עם שיר חדש בלב. הוא חלם על משהו בלילה... עכשיו יש רעיון חדש לשיפור. הבן-אדם בטוח שהרעיון ייעל פי מאה את האלגוריתם. ככה הוא תמיד אומר. 'שינוי קטנטן באיזה מודול יגרום על בטוח לשיפור עצום בתכונות המכשיר'. הבחור מצליח לשכנע, או סתם מבקש מהחבר'ה להתחיל לעבוד בלי לשאול אף אחד. אחר כך מסתבר שכל העניין לא כל כך פשוט". מיכה פזל לעבר דּוּדוּ וזה לא נותר חייב. "לא חשוב מה שתגיד, אתה לא יכול להתעלם מהשיפורים שהכנסתי".
"אי אפשר להתעלם" השיב מיכה בהתרסה. "במקום תרנגולת, תכננת פרה אבל בינתיים תרמת גם לחריגה בלוחות הזמנים".
"שכחתם את העיקר" אמרה ג'ין בקול שקט, לאחר שנרגעה מעט מסערת רגשותיה הקודמת. "חלק לא מבוטל מהשינויים נובעים גם מבאגים. מטעויות אפיון, מטעויות תכנון או משגיאות Code שלא חסרות לנו, ברוך השם".
"טעויות או שגיאות הם לא העיקר" אמר צביקה בהבעה קודרת משהו. "נהייה רציניים לרגע. אנחנו מתחילים לעבוד, זאת אומרת לקודד ולפעמים אפילו לתכנן... כאשר יש לנו ראייה חלקית בלבד של הפרויקט. כי לוחצים עלינו להתחיל את התכלס. 'להפסיק להתברבר עם הניירת' הם אומרים. כתוצאה מזה, מתחילים את שלב המימוש הרבה לפני סיום הבנת הנושא".
"דּוּדוּ פשוט אוהב להשתמש במונח To Be Defined" העירה ג'ין ושלחה מבט מאשים לעברו. "בכל שורה שלישית אני מוצאת את המלה המזעזעת TBD. אני מאוד מצטערת, אבל ככה אי אפשר לעבוד..."
"כמהנדס מערכת" אמר דּוּדוּ בחשיבות עצמית מופגנת, "אני צריך לנתח את התמונה הכללית. נכון מיכה?" ומבלי להמתין לתשובתו הוסיף "צרוף של לחץ זמן וירידה כפייתית לפרטים, תוביל אותנו לעיכובים גדולים מדי. לכן אם לעיתים אני משתמש במונח TBD, זה לא אסון..."
"זה בסך הכל אומר שהאפיון לא מדויק ולא מושלם" התפרץ דני ששתק כל הזמן. "תמיד כשמופיע TBD אני מתבלבל. זו הגדרה בעלת כפל משמעות. זו בכלל לא הגדרה!"
דּוּדוּ הביט בדני במבט מלגלג והשיב בקול שלו: "התבססתי על ההנחה שאתה מספיק נבון ותוכל לקבל החלטות פשוטות כאשר ההגדרות לא מושלמות. לא חשבתי שצריך להגיש לך את הכל בכפית לפה. אמרתי, ואני חוזר על זה גם עכשיו, תמיד אתה יכול לפנות אלי בשאלה".
"בטח" הרים דני את קולו, "איפוא יש לך זמן בשבילי? אתה הרי עסוק בדיונים כל הזמן וכאילו לא די בכך, אתה רוצה שאני אעמוד בלוח הזמנים הצפוף שלך. מאיפוא יהיה לי זמן לשאלות?"
"לוח הזמנים הצפוף הוא של מיכה" העיר דּוּדוּ בחיוך מתנשא.
"של שושנה מהשיווק" תיקן מיכה.
"שלנו" צייצה מרים.
"בכלל לא אכפת לי" המשיך דני, שקיבל לפתע אומץ. "יותר מדי פעמים אני מוצא את עצמי חייב להחליט דברים שקשורים למערכת... אני לא מכיר את כל הפרטים... אז אני מנסה להבין... ולשאול... וכל זה גוזל זמן... מה לא ברור כאן?"
"מה למשל?" שאל דּוּדוּ.
"זה לא רלוונטי" התפרץ ירון. "תרשו לי להפסיק את השיחה בשלב הזה, כדי לא לגלוש לאפיקים בלתי רצויים. הנושאים שהעליתם כל כך נכונים שפשוט חייבים למצוא להם פתרון. והמהות שלהם לא קשורה למישור האישי אלא לשיטה... אומנם הצבעתם רק על חלק מהסיבות לעיכובים אבל מיותר לפרט את הרשימה במלואה דווקא עכשיו כי זה לא תורם לנושא המרכזי שמיכה ביקש להעביר היום. בכל מקרה, אסור להגיע למצב שבו דני, למשל, יקבל החלטות מערכתיות תוך כדי הקידוד. לא בגלל כישוריו אלא בגלל תפקידו. דני לא יכול לראות וגם לא צריך לראות את התמונה המערכתית במלואה, כולל ההשלכות של כל פיפס. על פי הגדרה, לשלב הקידוד צריך להגיע כשהכל סגור עד הפרט האחרון. מבחינה עקרונית, דני צריך לקבל תכנון מושלם. כבר ראיתם מה ההשלכות של אפיון חלקי או תכנון בעל כפל משמעות. לא רק שמאבדים זמן יקר בניסיונות לקבל החלטה, אלא גם שההחלטה עלולה להיות שגוייה, או לוקה בחסר".
"ואז תתחיל תופעת האדווה" השלימה ג'ין.
"במלים אחרות" מיהר מיכה להסביר "כל הגורמים לכישלון פרויט, שהם אי עמידה בלו'ז, חריגות בתקציב וחריגות מהדרישות הטכניות של הלקוח... כל אלה מתמקדים באפיון 'דפוק'... בתכנון, איך לומר 'לא ממש מושלם' ובקידוד שמבוצע על ידי תכניתן שנאלץ לתקן את התכנון..."
"סליחה..." התערבה ג'ין. "לתקן את התכנון? בטח התכוונת לומר שהוא משנה את התכנון מבלי לעדכן את המתכנן... כלומר, הוא משנה את ה-Code כאשר מסמכי התכנון נותרים לא מעודכנים...".
"ואז גם מסמכי האפיון..." התפרץ דּוּדוּ לדבריה, "ואני מדבר על המסמכים שעליהם התבסס התכנון... גם המסמכים האלה נותרים לא מעודכנים... זאת אומרת שתיאור המערכת, כפי שהוסכם עליו עם הלקוח, כבר לא מתאים לפונקציונאליות האמיתית של המערכת...".
"ואם נמשיך את רעיון תופעת מפולת הדומינו הזו" המשיך מיכה, "אז גם תכנון הבדיקות כבר לא ממש רלוונטי..."
"הכול בגלל מסמר קטן, הכול בגלל מסמר..." החלה יעל לחקות בזיוף קל את נעמי שמר בחיוך.
"לזה התכוונת?" שאל מיכה והפנה מבט מלגלג לעבר ירון.
"אתה מציג את תמונת המצב בצורה אירונית מדי, כאילו כל הפיתוח מתנהל בצורה חובבנית. יש עוד כמה גוונים מעבר לצבעי השחור והלבן... בסך הכל רציתי להגיד שהנקודות שהעלתם מציגות באופן חלקי בלבד את הבעיה" מיהר ירון להגיב, "מכל מקום, די לנו בזה לדיון של היום. ד'ר קלינסקי פרסם, לא מכבר, שני מאמרים שיכולים לשמש בסיס לדיון הזה. מאמר אחד פורסם תחת הכותרת 'ניתוח אירועים חריגים' והשני נקרא 'ניתוח שינויים עתידיים'. צילומים של המאמרים אחלק לכם מיד לאחר שנתפזר" הבטיח.
ירון התקרב אל מקרן השקופיות וחש כי המבוא להרצאה, הסתיים על הצד הטוב יותר. הצוות מעורב בצורה רגשית בבעיות ויתכן מאוד כי הם כבר בשלים להקשיב לפתרונות.
"אם תבחנו היטב את התוכנה שמופקת מבין אצבעותיכם, תוכחו לדעת שמרביתה מטפלת לאו דווקא בתהליכים שְׁמיַשְׂמִים את הפונקציונאליות הרשמית של המכשיר. אני בטוח שלא תתפלאו לגלות כי מרבית התוכנה מטפלת דווקא במצבים חריגים, כאלה שלא מתקיימים במהלך השיגרה הרגילה. אלה הם האירועים הבלתי רצויים שההסתברות לקיומם נמוכה. אם בתכנון מכשיר לא יתחשבו באירועים בלתי רצויים, אז כמובן שתפקוד המכשיר עלול להיפגע, בדיוק ברגע שאירוע כזה יתרחש..."
"מֶרְפִי, מֶרְפִי" צחק יורם.
"בדיוק כך" חייך ירון לעברו. "מֶרְפִי הוא באמת אוֹרֵחַ הכבוד כשעורכים ניתוח כזה... וכאשר מֶרְפִי מופיע 'כאילו בהפתעה'... ולא נערכים מראש לבואו, אז אפשר לקבוע בוודאות שזה תכנון לקוי... תכנון שיהווה בסיס לטענה שהמוצר 'שווה לתחת'... ו... ושצריך להחליף את המתכננים. לא את התכניתנים שתפקידם לתרגם את התכנון לקוֹד... אירועים בלתי רצויים נגרמים בעקבות קבלת נתון שגוי או כתוצאה מקליטת שדר משובש. גם הפעלה לא נכונה או תקלת חומרה נחשבים לאירועים חריגים. בזמן תכנון התוכנה צריך להחליט אם לטפל באירוע הבלתי רצוי וכיצד, או פשוט להתעלם ממנו".
מבטי הסכמה והערכה ננעצו בירון, כאשר הוסיף "אם כך, כדי להחליט צריך לערוך ניתוח קצר". בחיוך סרק את הקבוצה שישבה מולו וזרק שאלה. "איך מתחילים ניתוח כזה?"
"פשוט מאוד" קפץ דני. "מכינים רשימה של אירועים כאלה ומחליטים איך מטפלים בכל אירוע".
"נכון מאוד" הסכים עמו ירון. "ראשית מכינים רשימה של אירועים בלתי רצויים. ומה הלאה? הרי כדי לבסס את ההחלטה איך בדיוק לטפל בכל אירוע, אז צריך מידע נוסף".
"אולי תספר לנו איך ד'ר קלינסקי ממליץ לערוך את הניתוח ותפסיק לבחון אותנו כמו בבית הספר" ביקש מיכה, תוך כדי פזילה לעבר שעון היד שענד.
"תכלס, אה?" הפנתה ג'ין שאלה אירונית לעבר מיכה.
ירון התעלם מההערות והמשיך. "נדון בכל אירוע בנפרד, כמובן. תחילה נעריך את ההסתברות להופעתו ולאחר מכן נעריך את גובה המחיר שנשלם כדי שהתוכנה תגלה אותו וכמובן ננסה להעריך גם את המחיר שנדרש לטפל בו".
"אולי כדאי גם להעריך את היקף הנזקים שייגרמו למכשיר, אם לא נטפל באירוע הבלתי רצוי הזה" העיר מיכה. "אם הנזק חסר משמעות והטיפול בו יקר, אולי לא כדאי לגעת בזה".
"מצויין, כמו כל דבר אחר בחיים" חייך ירון. "יכולים להיות שיקולים בעד בחירת הדרך ונגדה. כדי לקיים ניתוח יעיל לכל אירוע חריג, כדאי להכין רשימה של דרכים חלופיות לגילוי האירוע".
"ומה ביחס לעלויות?" הקשה דּוּדוּ.
"אתה צודק, תודה... חייבים גם להעריך את המחיר שיידרש לגילוי האירוע הבלתי רצוי, בכל אחת מהדרכים החלופיות שנרשום".
"מחיר באיזה מובן?" שאלה מרים. "אתה מתכוון למחיר פיתוח אלגוריתם הגילוי?"
"בֶּטַח" קפצה ג'ין. "יכולה להיות לזה תוספת בזמן הפיתוח... והבדיקות... וזה יתבטא במחיר נוסף, מעבר לעלות פיתוח חלקי השגרה שבתוכנה" השיבה ג'ין. "למשל, מוּרכבוּת האלגוריתם שאמור לגלות התרחשות של אירוע, או לזהות את השפעתו על תפקוד המכשיר. בֶּטַח שצריך לבחון את ההשפעה על המסלול הקריטי של המכשיר בזמן הריצה, בReal Time- לפני שבוחרים בו".
"ואל תשכחו שצריך לבדוק גם את ההשפעה על מחיר החומרה... במקרים מסוימים..." הוסיף אריק, "כי לא תמיד אפשר להסתפק רק בשינוי האלגוריתמים במערכות 'זמן-אמת'. לפעמים בחירת החיישן המתאים קובעת אפילו יותר..."
"במילים אחרות" סיכם דּוּדוּ, "בשורה התחתונה, לגילוי אירוע חריג יכולות להיות השפעות מערכתיות, זאת אומרת שאירוע מסוים עלול להשפיע על מבנה החומרה... על מבנה התוכנה... ועל מה עוד? ממ..."
"על לוחות הזמנים, כמובן" הוסיף מיכה לאווירה, "ועל עלות המערכת".
"לכן אסור להשאיר ניתוח כזה לשלבים מאוחרים מדי, אלא לבצע אותו כבר בתכון המערכת" אמר ירון.
"אבל עוד לא סיימנו. אחר כך צריך להכין רשימה דומה של דרכי טיפול חלופיים... בכל אירוע. גם לזה יש השלכות על כל אחד מהנושאים שהזכרתם".
"הוא באמת חושב שהוא החכם באדם" הרהר דּוּדוּ במרירות, קם על רגליו ואמר כמעט בזעם: "באופן עקרוני אנחנו עושים את זה. לא השתמשנו בשם מפוצץ כשערכנו את הניתוח, אבל הרי ברור שאי אפשר לְפַתֵחַ מערכת בלי לעבור תהליך דומה בשלב זה או אחר".
"אין לי ספק" מיהר ירון להרגיעו, "אבל האם אתם עושים את זה בצורה מסודרת? בתהליך מבוקר?" שאל ירון וניסה לשמור על הבעה ניטרלית זהירה. "האם אתם באמת בוחנים אפשרויות שונות ומתייחסים גם לחוות דעת של גורמים אחרים, מלבד אנשי מערכת?"
"ודאי" השיב דּוּדוּ בביטחון.
"מתי בדיוק ערכנו ניתוח כזה?" נזעקה ג'ין. "כשהתכנון היה כבר סגור ודני התחיל 'להטריד' אותך בשאלות 'מרגיזות' מהסוג של 'מה לעשות כאשר כך וכך קורה'? ירון מתכוון למשהו אחר לגמרי".
"אם עורכים ניתוח כזה, בשלבים מוקדמים של הפיתוח, עוד לפני שמחליטים על עיצוב מרכיבי המערכת" המשיך ירון. "אז אפשר להחליט על מבנה מתאים לחומרה ולתוכנה משום שגילוי או טיפול באירוע, משפיעים גם על המבנה המודולרי של המערכת. אבל כאשר מתייחסים לנושא הזה בשלב הקידוד אז, בהכרח, מטליאים את המערכת. זו בדיוק הדרך השגוייה להכנסת שינויים באופן שמפריע לתהליך התקין של הפיתוח. דברנו על זה כבר..."
"אבל זו הרי ההתמחות שלנו" העיר צביקה בציניות.
"אולי תהיה רציני פעם?" גער בו דּוּדוּ.
"מה קרה?" נפגע צביקה. "כבר אי אפשר להתבדח?"
"כאשר מקיימים ניתוח כזה שלא בתקופת לחץ" המשיך ירון "אז יש מספיק זמן כדי להחליט איך לטפל בסוגים שונים של אירועים, יש זמן לחשוב על שיטות גילוי האירועים ועוד ועוד. כשיש זמן לחשוב אז אפשר לעלות על כל מיני פתרונות מעניינים ובדרך... בדרך גם נהנים וגם מגדילים את אמינות המכשיר..."
"אתה צודק" המשיך מיכה. בדרך, יש זמן לחשוב אפילו על כדאיות הפתרונות...".
"על יחס עלות איכות..." אמר דני.
"יפה!" התפעל דּוּדוּ.
"בדרך..." ניסה צביקה להרשים את אנשי הצוות ברעיונות משלו, "בדרך אפשר אולי אפילו לחשוב על מחיר זמן החיפוש והגילוי של אירועים בלתי רצויים".
"כבר דיברנו על זה" אמר מיכה.
"לא! התכוונתי לפגיעה במהירות תגובת המערכת" המשיך צביקה. "הרי בזמן שבודקים משהו בזמן אמת... בזמן ריצה... אז פוגעים במהירויות הביצוע... הרי כל מיקרו שנייה משפיע על מהירות הביצוע... לא?"
"אין קשר" פסקה ג'ין, מנתחת המערכות הבכירה וחייכה לעבר דּוּדוּ. "היום, אפשר להריץ כמה תכניות במקביל... והתוספת הזו לא פוגעת בביצועים של המכשיר".
"איך זה?" תמה צביקה. "הרי יש מיקרו פרוססור אחד בלבד, לא?"
"הוֹ... זה קשור לנפלאות הטכנולוגיה המודרנית" הסבירה מירי. "אנחנו בסוף שנות השמונים!!! השיפורים בעולם המחשבים... בעולם ה-Real Time הם מדהימים!!! קוראים לזה מוּלְטִי טָסְקִיְנג, זאת אומרת שאפשר לבצע כמה אלגוריתמים במקביל...,
"אבל צביקה צדק" יצא אריק להגנתו. "הרי יש מחיר לניתוח ולתכנון ולגילוי ולטיפול באירוע מסוים, אז מה אם המחיר כבד מאוד אבל הנזק שייגרם למערכת כתוצאה מחוסר טיפול לא יהיה כל כך גבוה?"
"או שיהיה גבוה אבל הסיכוי שהוא יתרחש..."
"תפסיקו... תפסיקו... אלה, בסך הכול, החלטות פוליטיות" חייך דּוּדוּ בידענות.
"אלה צריכות להיות החלטות מנהל" התפרץ ירון. "אם להחלטה כזו יש השלכות גדולות מדי, אז אפשר באמת לפנות לדרגים בכירים יותר במפעל, כדי לקבל החלטה ברמה מפעלית"
"כדי לסכם את הנושא" אמר ירון והניח בזריזות שקף על המקרן. "בעזרת הטבלה הזו קל מאוד לערוך ניתוח אירועים בלתי רצויים" אמר.
ירון נשם בהקלה. "זה מאחורי" ציין לעצמו בסיפוק והעביר מבט מהיר לעבר יעל. היא נשענה על הקיר ומשהבחינה במבטו, חייכה.
אנשי הצוות החלו להתפזר, מתפנים לשגרת העבודה. במתינות אסף את השקפים, שכמעט לא נעשה בהם שימוש, ופסע באיטיות לכוון היציאה. בסתר עקב אחר יעל. לפתע האיץ את צעדיו ופגש אותה ממש בסמוך לדלת. "סליחה" מלמל ופינה לה את הדרך. מבט מהיר נזרק לעברו. שוב חש כיצד הוא נסחף למערבולת רגשות. "לעולם לא אוכל לשבוע מהמבט הכחול, הקסום הזה. מה מסתתר מאחוריו?" תהה.
לרגע היססה כאילו היה בדעתה לומר דבר מה, הניעה בראשה לאות תודה והמשיכה בדרכה.
"משהו לא בסדר" הרהר בחשש. "היא מנסה להסתיר ממני משהו..." בבירור חש בשערו הסומר "האם התחרטה על הפגישה שקבענו. הו, לא, רק לא זה". בצעד מהיר ניסה להשיגה.
"הי, ירון" שמע את דּוּדוּ מאחוריו, ניסה להתעלם אך הקול נשמע שוב, במשנה תוקף: "ירון, חכה רגע!"
ירון נעצר והתבונן במבט שואל בדּוּדוּ, שהתקרב באיטיות רבה מדי, לטעמו.
"מה עם המאמרים שהבטחת?" שאל.
"אני אעביר אליכם צילומים עוד הבוקר" זרק ירון לעברו והמשיך ללכת בעקבות יעל, מנסה לצמצם את המרחק ביניהם.
דּוּדוּ הרים גבה בתמהון, עקב במבטו אחר ירון רגע נוסף ואחר פנה לעיסוקיו.
"לא אמרת אף מלה" קבע כשהצליח להשיגה, מתנשף בכבדות.
יעל נעצרה והסתובבה לעברו באיטיות. "הקשבתי" השיבה.
"תגובותיה שונות מהרגיל" דימה בלבו ובחן בקפידה את פניה. מבטה שוטט באי נוחות על הקיר, מאחורי גבו של ירון.
"קרה משהו?" שאל.
"כל הזמן קורים דברים" השיבה, הסיטה מבטה לעבר עיניו לרגע, ושבה להתבונן בקיר שמעבר לכתפו כאילו חששה להביט בפניו. סומק הציף את לחייה.
"מה למשל?" שאל. קולו בגד בו והתרגשותו ניכרה היטב.
יעל משכה בכתפיה מבלי להשיב.
"איך היה?" ניסה לדובב אותה.
ניצוץ נדלק בעיניה. "מצוין" השיבה בחיוך, נמנעת להביט בעיניו.
"זה כל מה שיש לך להגיד?" שאל.
"לא" השיבה לאחר היסוס.
"אמרתי שטויות?" התעניין.
"רציתי לשנות את... לא חשוב" אמרה, הסתובבה בצורה מפתיעה ומיהרה ללכת.
ירון נותר מאובן לרגע, התעשת וקרא אחריה. היא האטה את צעדיה והוא מיהר להדביק אותה בדרכה.
"אני יודע שקרה משהו" אמר בקול שקט. "מה עשיתי?" ניסה לצוד שוב את מבטה ונכשל.
"שום דבר" אמרה. "אני, אני פשוט... תוכל לבוא אלי מוקדם יותר?" שאלה בקול נרגש. פניה להטו. בכוח מנע מעצמו לעטוף אותה בזרועותיו.
מיכה התקרב לפתע ואמר "תודה, ירון. אני חושב שהיה מוצלח".
"היה לי לעונג רב" השיב ירון בקצרה.
יעל מיהרה להתרחק מבלי לומר דבר.
"קרה משהו?" שאל מיכה והביט ביעל שהתרחקה.
"אני לא יודע" השיב ירון נבוך במקצת.
"היא התנהגה בצורה קצת מוזרה היום. יכול להיות שהיא חולה" קבע מיכה. "בכל מקרה, ההרצאה היתה על הכיף כיפאק" המשיך בנשימה אחת.
"אני מקווה שזה לא יישאר בגדר של תאוריה" השיב ירון.
"נתראה אחרי הצהרים" המשיך ומיהר לדרכו.
עם כל צלצול נוסף, הוגברה עוצמת פעימות לבו. חמישה צלצולים נשמעו עד שהאפרכסת הורמה בצדו השני של הקו.
"הלו" נשמע קול גברי.
ידו של ירון נותרה קפואה במקומה.
"הלו, הלו" חזר הקול ונשנה.
באיטיות הניח את האפרכסת על כנה. לאחר היסוסים קצרים, שם פעמיו לכוון ה'מוסד'. דלת הפלדה נפתחה בפניו עוד בטרם הוציא את כרטיס העובד מכיס חולצתו. תמר נחפזה בדרכה אל מחוץ לאזור המסווג. "אהלן" חייכה לעברו. ירון הניד בראשו, אחז בדלת והנחה אותה ביציאתה. הפקידה החדשה שישבה ליד השולחן המסודר, הסיטה את מבטה מהמסוף שלפניה, ובמאור פנים אמרה: "בוקר טוב. את מי אתה מחפש?"
"זה בסדר" פלט לעברה "אני כבר אמצא את הדרך..." ומיהר לעבר חדר מספר 17.
"היא הלכה" אמר מיכה משהבחין בירון המתבונן במקום מושבה הריק של יעל. "מיד תשוב. אתה רוצה שאמסור לה משהו?" שאל.
"לא, לא..." גמגם ירון. "בעצם, אולי תבקש ממנה שתתקשר אלי כשתחזור, בסדר?"
תחילתו של צלצול הטלפון הקפיצה את ירון ממקומו. "כן" קרא אל תוך השפופרת בקוצר רוח.
"לא הספקתי אפילו לשמוע את הצלצול" גיחך מעבר לקו קולו של ראובן מפרוייקט DDE98.
"שלום, מה שלומך?" כפה על עצמו לשאול שאלת נימוסין.
"טוב, תודה" השיב.
"במה אוכל לעזור לך?" שאל ירון.
"יש לי בעיה במערכת ה - CMS*".
"רמי הוא מומחה לבקרת תצורה" השיב ירון במהירות. "אולי כדאי שתפנה אליו?
"איתך זה יהיה יותר פשוט" ניסה ראובן את מזלו.
"OK, אבל מהר כי מחכה לי עבודה רבה..."
"תודה" מלמל ראובן והציג בקצרה את פרטי הבעייה.
כמתוך חלום שמע את הבעת התודה הנרגשת של ראובן, לאחר שקבל את הצעת הפתרון שלו. מיד כשהוריד את האפרכסת, נשמע צילצול נוסף. "שלום" אמר.
השתיקה מעבר לקו הכעיסה אותו.
"אני לא שומע" אמר בקול רם. "אני סוגר".
"חיפשת אותי?" שמע את קולה המתוק של יעל.
ההתרגשות שבה והציפה את ישותו.
"ירון?" נשמע שוב קולה. אתה שומע?"
"למה את מדברת כל כך בשקט?" שאל.
"אני רוצה שרק אתה תשמע " אמרה וצחוק קצר ונבוך התגלגל פנימה אל קירבו.
"כן... חפשתי אותך" מלמל בלחש. "את... את נראית לי... זאת אומרת, חשבתי שאת מרגישה לא טוב ורציתי לדעת אם... אם אני יכול לעזור במשהו".
"לא. אני מרגישה טוב מאוד" אמרה.
ירון מצא את עצמו מצמיד בכוח את האפרכסת לאוזנו ומכסה את פית הטלפון בכף ידו. "את באמת נשמעת יותר טוב" ציין. "אבל למרות זאת... היה משהו, לא?
אנחה קצרה נשמעה, שתיקה ולאחריה לחישה הססנית: "חשבתי שעד יום ששי זה המון זמן. אולי... אולי הערב?"
חום פשט באיבריו. "מזל שהיא רחוקה" הרהר. "ולא יכולה להבחין בסומק". כמעט קפץ מכסאו בשמחה.
"אני שומעת שלא בא לך כל כך, נכון?" שאלה ואכזבה ניכרה בקולה.
"לא, לא, לא" מיהר להגיב. "להיפך... אבל... הערב תכננתי לקפוץ ליוסי. הבטחתי לו. אני מאוד..."
"זה בסדר" ניסתה להרגיע והאכזבה בקולה החמיאה לו. "בלאו הכי היו לי תוכניות אחרות להיום אז אני לא אדחה אותן. להתראות..."
"יעל" לחש, בנסיון למשוך את השיחה יותר ויותר.
"מה?" שאלה בצורה סתמית.
"עכשיו את מרגישה יותר טוב?"
צחוק שובב נשמע. צחוק של נערה.
"מה קרה לך היום? אחרי ההרצאה?"
בתום שתיקה קצרה, שב ושאל: "את מסתירה ממני משהו?"
"חס וחלילה" ענתה. "פתאום גיליתי ש... שיותר קל לי להגיד לך דברים בטלפון. שם... בסך הכל רציתי לשאול אותך אם... טוב, ענית לי כבר על זה..."
"על מה?" תמה.
"רציתי לשאול אותך אם לא אכפת לך להקדים את הפגישה אבל זה לא יצא לי בקלות מהפה. אני לא יודעת מה קרה לי פתאום..."
המשך בפרק 10 - אנטי וירוס