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

אז שוב הילד לא מוצא את המשקפיים. שמונים פעם אמרתי לו שיניח אותם במקום מיוחד, שלא נסתבך. קדחת. לפחות פעמיים בשבוע לא מוצאים את המשקפיים.
ולפעמים זה הנעליים. הוא לא זוכר לאיזה כיוון ובאיזה חדר הוא בעט אותם מהרגליים. האמת ששמתי לב שזה לא הנעליים, אלה הנעל. נעל שמאל. רק היא נעלמת. נעל ימין תמיד מונחת אחר כבוד בדיוק באמצע השולחן בסלון.
כבר חשבתי להציע לו שבלילה יניח את המשקפיים בתוך נעל שמאל. ככה לפחות שכשנמצא, נמצא את שניהם יחד. קדחת בריבוע. לא משקפיים ולא נעל. אולי צריך לקנות לו נעליים מזכוכית שיהיו גם משקפיים, לפחות נקצר את זמן החיפוש בחצי. אולי.
חוכמת הבדיעבד ההייטקית
תוך כדי החיפוש המשפחתי המאומץ, כלומר אני מחפש נעל ומשקף, ואילו הילד מחפש משהו בטלפון, הבליח במוחי הקוד-קודח שהתופעה הפסאודו-רנדומלית הנ"ל חורגת מגבולות הבאג-המשפחתי והינה בעלת דמיון רב להתנהגויות מקובלות בתעשייתנו היקרה.
שכן למרות שמגזרנו הינו מגזר עתיר פרוססים, ישיבות ותהליכים מסודרים, איכשהו, באופן מסתורי ולא ברור אנחנו מצליחים לחזור על אותן טעויות פעם אחר פעם. כפי שאמר לא מזמן המהנדס החכם (בשינוי קל):
חכמת הבדיעבד ההיי-טקית: ללמוד מטעויות, רק בשביל לעשות אותן שוב.
אז מה עושים? מוסיפים בדיקות שלאחר הבאג. אצלנו במגזר, ובאופן בולט בפלג המזרח-תיכוני שלו מרובה הקומבינות והפרטאץ', קיים מנהג להתחיל ולבדוק אזורים מסויימים שבתוכנה רק לאחר שנמצא בהם באג ולא לפני.
דחיינות מובנית
וכל כך למה? ישנן סיבות רבות לכך, שאת רובן כבר הזכרתי בעבר, ולכן אמנה אותן בקצרה.
ראשית ישנו אלגוריתם בת היענה, הגורס התעלמות מובנית מבעיות על בסיס ההנחה שרוב הסיכויים שהן לא תתרחשנה. או כפי שהתופעה מוגדרת במושגי היסוד של התכנות ההישרדותי – מבחן הבאג הסביר, יעויין שם.
הסבר נוסף, מקובל אף יותר הוא המתודולוגיה הנפוצה בין מתכנתי ארץ הקוד-אש, הלא היא הדחיינות המובנית הטוענת כי "אנחנו נבצע משימה חשובה רק כאשר יש לנו משימה חשובה יותר לבצע", ובאופן פלאי ובלתי נשלט תמיד ישנן משימות חשובות יותר מאשר להריץ יונ"י-טסטינג או בדיקות באופן כללי. משימות חשובות יותר, או לפחות משעממות פחות מאשר להריץ בדיקות.
עיקרון הפעולה המינימלית
אבל ההסבר המוצלח ביותר למחסור האדיר בבדיקות טרום-באגיות, לעניות דעתי המלומדת, הוא עיקרון הפעולה המינימלית, שהוא מטרתו הנשגבת של כל הייטקיסט מצוי – כלומר לעבוד כמה שפחות ולהרוויח כמה שיותר. והרצת בדיקות טרום-באגיות אינן מתאימות כלל וכלל לעיקרון זה.
אלא שפטור בלא כלום אי אפשר, וצריך לפחות לעשות קולות של וולידציה מינימלית, אז מה עושים? בודקים איפה שקל. מה שמכונה אצל החבר'ה מאבטחת האיכות – בודקים מתחת לפנס. כבר הרחבתי בנושא, אי-אז בפוסט לכבוד חג הפסח "כך עושים כולם". אלא שמאז כבר עברו כמה באגים בפרודקשן, והבנתי שטעות קומפילציה עלתה בידי.
זה לא שבודקים מתחת לפנס שכבר דלק, אלא שמלכתחילה מכוונים את הפנס לאזורים הכי בדיקים ורק אז מדליקים אותו, על מנת למנמל (ככה אומרים ההיפך מ"למקסם") את העבודה. בודקים רק איפה שיש אור. ואם חבר פרודקטריון מתלונן שנמצאו הרבה באגים באזורים החשוכים, עונים לו שמה הוא רוצה, שם היה חושך, אז איך רצית שנמצא משהו?
בדיקות שלאחר מעשה
כמובן, שלאחר שהבאג אכן נמצא, מייד רצים לבדוק את האזור. מטרתן של בדיקות אלה היא אחת ויחידה: להוכיח שהבאג שכבר קרה אכן קרה, ושאילו היינו בודקים אותו לפני ולא אחרי, אז היינו חוסכים מעצמנו הרבה בושה ובלאגן ולקוחות עצבניים. אז הוכחנו. שכוייח.
ישנם ארגונים רציניים יותר, המחמירים לבצע "באג אסקייפ אנליסיס", דהיינו מבצעים פוסט-מורטם בשביל להבין כיצד יתכן שלמרות ארגון וולידציה מפואר שכזה, ואוטומציה מהוללת שדבר אינו חודר את חומותיה הבצורות, בכל זאת הבאג חמק מאיתנו. ואז חוקרים חקירות ומסיקים מסקנות ומחליטים החלטות, ומייצרים עוד פרוססים ואוטומציות. אבל את הבדיקות עצמם מריצים רק בדיעבד.
עיקרון התדהמה המינימלית
אז פלא שיש באגים? לא פלא בכלל. מה שכן מפתיע הוא שישנם באגים שלמרות שכבר נתגלו פעם אחת, חוזרים ומופיעים שוב ושוב, חדשות לבקרים וקריסות לספרינטים. וקשה, שהרי לאחר שכבר עלה ונתגלה ונחשף הבאג לעיני כל, לכאורה הוא כבר תוקן ונבדק ומורג'ג' ונחתם בטבעת הפרוסס.
אז בואו כולם תעשו פרצוף מופתע. הרי אף אחד לא באמת מופתע שהבאג שתיקנו רק בשנה שעברה, או בגירסה הקודמת, או רק בשבוע שעבר, קם לתחייה. התיקון לא באמת היה תיקון של מאה אחוז, הקוד רוויו היה אולי חמישים אחוז, ועל היונ"י-טסטינג יותר טוב שלא נדבר בכלל. את הבדיקות הנוספות איכשהו טרם הוסיפו לאוטומציה המהוללת, למרות שהן נכתבו לפני שנות-קוד.
אכן זהו עיקרון התדהמה המינימלית. יש דבר כזה, זה נקרא POLA, אבל בגירסת התכנות ההישרדותי הוא מעט שונה:
התדהמה מהימצאותו של באג בתוכנה הולכת ופוחתת ככל שרמת ההיכרות עם תהליכי הבדיקות והאוטומציה עולה.
והמהנדס החכם אומר: כל הבודק, במוּמוֹ בודק.
מתחת לקו: גילוי נאות. כבר כתבתי פעם פוסט עם שם דומה "משנכנס הבאג מרבין בשמחה" – אלא שהוא עסק בזוית שונה של כניסת הבאג ומדוע הוא מלווה בשמחה רבה.
ואם חשקה נפשכם בעוד פוסטים לכבוד חודש אדר ופורים, הרי כולם אחר כבוד מכונסים בקישור הזה.
😂😂😂
פעם הבאה בקשה אזהרה מראש
היו כמה שנבהלו מהצחוק שלי
אהבתיLiked by 1 person
ראה/י הוזהרת מראש מכאן ולהבא. רצוי לשתף בין החברים והחברות על מנת שגם הם יוכלו להבהיל את שכניהם.
אהבתיאהבתי