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

בכל פעם שמגיעה התקופה הזו שלפני פסח, כשכולם מנקים כמו מטורפים, מתעוררות בי מחשבות נוגות על עולם בדיקות התוכנה. אני לא בטוח למה, אבל כל הנקיונות האלה שלא באמת מוצאים שום חמץ, לפחות לא חמץ כזה שלא ידענו שהוא כבר שם, ושלא באמת ברור למה צריך לנקות גם מתחת למיטה שאף אחד לא הזיז מאז פסח הקודם, כל זה נורא מזכיר לי את בדיקות התוכנה האינטנסיביות שנהוג להריץ בחברות ההיי-טק. תוך כדי זחילה מתחת לספה בסלון חשבתי לעצמי שאולי יש בין שני תהליכים אלו דברים משותפים הרבה יותר מכפי שנדמה ממבט שטחי.
ראשית, כולם יסכימו איתי שבכל שנה הטקס הזה חוזר על עצמו כמעט ללא שינוי. שוב אתה מוצא את עצמך מנקה מקומות שברור שלא ראו חמץ לפחות בתשע השנים האחרונות. וכשאתה מנסה לברר: "אבל למה?", התשובה המתקבלת היא על פי רוב: מה זאת אומרת? כולם מנקים, חייבים לנקות – זה כתוב בספרים. תמיד ניקינו לפני פסח – כך עושים כולם (הערה: בשם הפוליטקלי קורקט לא קראתי לפוסט: "כך עושות כולן" למרות שהשם הרבה יותר מוצלח). אז זה העניין, אנחנו בכלל לא בודקים בשביל למצוא בעיות. אנחנו בודקים בשביל להגיד שבדקנו ובגלל שכולם בודקים ובעיקר בגלל שככה כתוב בספרים שלנו, וככה תמיד עשינו.
ולכן גם תוצאות הבדיקות שלנו נראות כמו הנקיונות לפסח. כלומר ההתחלה נראית מבטיחה. קודם כל מוצאים את החמץ במקומות המתבקשים, כלומר: מאחורי המקרר, בתיקים של הילדים ומתחת לכריות במיטות שלהם. וכל האינדיקטורים בדוחות מראים התקדמות מצויינת. אבל זו לא חוכמה גדולה. כולם יודעים שבמקומות האלו תמיד יש חמץ. בדיוק כך גם אנשי הבדיקות מיד מוצאים כמה בעיות מתבקשות מאליהן שאף אחד לא באמת מתרגש מהן. אבל אחרי כמה ימים כבר לא מוצאים כלום. הופכים את כל התוכנה מכל הכיוונים והכל עובד פרפקט. ולמה שלא יעבוד? הרי שום דבר לא באמת השתנה יותר מדי מאז סיבוב הבדיקות הקודם. אבל בכל זאת בודקים. ומריצים עשר איטרציות ואז עוד מאה ועוד אלף איטרציות כדי שאולי בכל זאת נמצא משהו. אבל כלום.
הסיבה לכך היא כמובן הפנס. כלומר הרבה יותר קל לחפש מתחת לפנס מאשר איפה שחשוך. אז כמו בנקיונות בבית, אנחנו לא באמת מזיזים את המכונת כביסה, כי זה כבד מדי. ולא מסננים את כל חלקיקי הלגו והפליימוביל אחד אחד, כי זה קשה מדי. ולא באמת בודקים את כל הארונות הפנימיים במחסן, כי זה מפחיד מדי. אותו דבר גם בבדיקות התוכנה. בודקים איפה שנח וקל, ואיפה שאפשר לעשות דברים בצורה אוטומטית. אבל לך תמצא פראייר שיריץ עכשיו בדיקה ידנית על הסרבר שנמצא בקומה 4-, עם תוכנת בדיקה שכבר אף אחד לא מבין איך להפעיל אותה. אז לא בודקים.
אבל הרי אי אפשר להגיד שלא בודקים, אז מה עושים? וכאן יש בעיה. כי את עניין החמץ הג'ניוס היהודי פתר באמצעות הפטנט הידוע של מכירת חמץ. אבל איכשהו הרעיון הזה לא ממש עובר טוב לעולם ההיי-טק והעסקים. אז ממציאים פתרונות אחרים, שרובם מבוססים על סטטיסטיקות ותיאוריות ניהול סיכונים וגרפים וטבלאות שנראים נורא מרשימים, אבל בסופו של דבר אומרים דבר מאוד פשוט: רוב הסיכויים שאין בעיה, וגם אם יש בעיה רוב הסיכויים שאף אחד לא יתקל בה, וגם אם יש בעיה ומישהו יתקל בה, רוב הסיכויים שהוא לא ידע להאשים את המוצר שלנו. וברגע שאי אפשר להאשים אותנו, אין שום סיבה לעבוד קשה (ניתן קרוא על כך בפוסט הזה).
לפעמים אני חושב לעצמי שבשביל שלא לבאס את אנשי הבדיקות שהם לא מוצאים שום באג משמעותי, אולי כדאי לשתול כמה באגים בכוונת מכוון, כך שהם לא ירגישו שהם עובדים סתם. הרי זה בדיוק מה שעומד מאחורי הרעיון של בדיקת חמץ בערב פסח. גם שם אנחנו מחביאים כמה חתיכות לחם כדי שהברכה לא תהיה לבטלה. באופן דומה, גם אנחנו נשתול כמה באגים בתוכנה כך שסיבוב הבדיקות לא יהיה לבטלה, או לפחות זו תהיה בטלה סמויה.
אבל אליה וקוץ בה. זהו רעיון מסוכן. הרי רק לפני שנים ספורות עשינו בדיקת חמץ בבית, הילדים החביאו טוב טוב עשר חתיכות פיתה בבית וכמובן עשו רשימה מדוייקת של כל מקומות המחבוא, לאור נסיון העבר. כמובן שאני מצאתי רק תשע חתיכות. חתיכה אחת לא נמצאה. אבל מה שהתברר כמה דקות מאוחר יותר שהרשימה הסודית ככל הנראה הוטמנה לה יחד עם החתיכה העשירית. נו? מה עושים עכשיו? מחר ליל הסדר עם מאתיים אורחים ואני עם חמץ גמור בבית!
לא אלאה אתכם בפרטים של מה שקרה לאחר מכן, אבל אני מניח שאתם יכולים להבין למה אני נגד הרעיון של להחביא באגים באופן יזום. בכל אופן, מה שנגמר באותה השנה הוא, שלאחר לילה ללא שינה ובית הפוך לגמרי, היה ללכת בבוקר ולשרוף את החמץ. בטקס ביעור החמץ יש טקסט מאוד נחמד שבו אתה מודיע קבל עם ועדה שאם יש לך עוד איזשהו חמץ בבית הרי הוא הפקר והוא כבר לא שלי יותר וגמרנו עם זה! אני בהחלט חושב לאמץ את הרעיון הזה בעבודה. מעכשיו בסוף כל סבב בדיקות אנחנו נכריז שעבדנו קשה גם ככה ועשינו כל מה שיכולנו (לפחות לא ניתן להוכיח אחרת), ולכן כל באג שימצא מעתה והלאה הרי הוא כעפר הארץ, ולא באחריותנו, ובטח ובטח שלא במודול שלנו, ולך תחפש ת'חברים שלך בצוותים אחרים. אנחנו כבר אחרי ארבע כוסות ולא חושבים כל כך ישר.
והמהנדס החכם אומר: בדיקות תוכנה יכולות לשמש כדי להראות את קיומם של באגים, אך לעולם לא כדי להוכיח את היעדרם (א. דייקסטרה)
הבהרה חשובה: פוסט זה הינו דמיוני לחלוטין, וכל קשר בינו לבין המציאות בחברה כזו או אחרת (וקל וחומר למקום העבודה שלי) הוא מקרי בהחלט. נא לא להיעלב יתר על המידה. חג שמח
×ת×× ×צ×××!!
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
אהבתיאהבתי
עד שסוף סוף מישהו כותב תגובה, אי אפשר לקרוא אותה…
אהבתיאהבתי
שלוש תשובות בדבר:
א. בודקים עובדים אצל מנהלי מוצר ולכן השינוי עצמו לא משנה. המוצר צריך להיבדק.
ב. הסיפור שלך על פתית חמץ שאיבדת אומר הכל.
ג. גם אני מסכים שסרוויסים צריכים להיבדק על ידי מתכנתים.
אהבתיאהבתי