#28 כך עושים כולם

למה לא כדאי לשתול באגים בכוונה בקוד, והאם אפשר להפקיר באגים כמו חמץ בפסח?

#028 lantern

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

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

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

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

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

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

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

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

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

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

5 תגובות בנושא “#28 כך עושים כולם

  1. כתוב מצוין!!
    J
    כה לחי.

    חג שמח וכשר מהחברים באוניברסיטה העברית

    בברכה,

    ישי פרנקל | סגן נשיא ומנכ"ל

    האוניברסיטה העברית בירושלים
    טל' 02-5882907
    פקס 02-5828547
    humancal@savion.huji.ac.il

    [cid:image001.jpg@01D35617.CB9C96F0]

    Yishai M. Fraenkel |
    Vice President and Director General

    The Hebrew University of Jerusalem
    Tel: +972.2.5882907
    Fax: +.972.2.5828547
    humancal@savion.huji.ac.il

    אהבתי

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

    אהבתי

להשאיר תגובה

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

הלוגו של WordPress.com

אתה מגיב באמצעות חשבון WordPress.com שלך. לצאת מהמערכת /  לשנות )

תמונת Twitter

אתה מגיב באמצעות חשבון Twitter שלך. לצאת מהמערכת /  לשנות )

תמונת Facebook

אתה מגיב באמצעות חשבון Facebook שלך. לצאת מהמערכת /  לשנות )

מתחבר ל-%s