על איך הופכים באג לפיצ'ר, המהות האמיתית של "debug session",ומה היה לאריק איינשטיין לומר בנושא.

באגים, איזה דבר נפלא. עד כמה החיים שלנו בהיי-טק היו משעממים אם לא היו באגים. הבאגים הם אלו שמביאים את רוב הכיף והעניין בעבודה. אחרת, עם מי היינו רבים ואת מי היינו מעצבנים? פיתוח תוכנה בלי באגים זה כמו ללכת לסופר בלי תור, או לנסוע לעבודה בלי פקקים ועבודות בכביש. שעמום.
אף פעם לא הבנתי את החבר'ה האלה שמתעצבנים כשפותחים להם באגים. מה יש לכעוס? להיפך, צריכים לשמוח בבאגים שפותחים עליך, כמו שאמרו חכמינו "ושמחת בבאגיך". קודם כל, אם יש באגים סימן שמישהו בודק את מה שכתבת, ולא סתם מסמן "וי" בלי לבדוק. זה כבר משהו. וחוץ מזה אם יש באגים זה אומר שצריך לתקן אותם, וזה אחלה ג'וב סקיוריטי. בסגנון "אני מדבג, משמע אני לא מפוטר". כמו שהעברת הכסף מניעה את הכלכלה, ותנועת האלקטרונים גורמת לחשמל, כך גם זרימת הבאגים מניעה את פיתוח התוכנה. אז צריך לשמוח.
אבל צריך להודות שיש גם באגים מעצבנים. מעצבנים זה לא מילה. יש באגים שבאמת מוציאים אותך מדעתך, שאין לך מושג מאיפה הם הגיעו. כבר יצא לי פעם למיין באגים לפי האופי העדתי שלהם (בפוסט המוצלח של 2020 – הבאג הפולני). אבל אחד הבאגים ההזויים יותר בהם נתקלתי ממש בימים האחרונים גרם לי לחשוב על מיון חדש, שמתאים גם באופן מושלם לחג הסוכות.
כמו שרובנו למדנו בגן, ניתן לסווג את ארבעת המינים של חג הסוכות באופן הבא: אתרוג יש לו גם טעם וגם ריח. להדס יש רק ריח, ללולב – שהוא עץ התמר – יש רק טעם ולערבה לא טעם ולא ריח. אז אותו דבר אבל בבאגים.
יש את הבאגים האיכותיים, שרק בשבילם היה שווה להעסיק את כל קבוצת הבדיקות שבשאר הזמן רק מחפשת מתחת לפנס (כי ככה כולם עושים). כן, מידי פעם גם שם יש הברקות. באגים אמיתיים בתוכנה שבאמת יכולים לקרות במציאות. באגים כמו אתרוג עם טעם וריח, ובודקים ששווה לאתרג.
אבל הבאגים השווים הם המיעוט שבמיעוט. רוב הבאגים הם אחת משתיים. הסוג הראשון הוא באגים אמיתיים בתוכנה, אבל שאין סיכוי שאי פעם מישהו יתקל בהם. אותם באגים שבשביל לגרום להם להתרחש אתה פחות או יותר צריך נס בסדר גודל בינוני.השחזור כולל הפעלה וכיבוי של הפיצ'ר שש פעמים בדקה, תוך כדי שליחת שרשרת אינסופית של פקודות לשרת מרוחק. ובדיוק אז, אם עוברים משעון קיץ לחורף, ורק אם זה ביום חמישי אז הבאג קורה. אבל באג זה באג, אז מתקנים. אלו הבאגים שיש בהם טעם של באג אמיתי, אבל אף אחד בחיים לא יראה או יריח אותם.
הסוג השני כולל באגים שהם בכלל לא באגים. כלומר, תלוי את מי שואלים. הבודקת שפתחה את הבאג תטען שההתנהגות של התוכנה זה לא מה שאמור להיות, ואילו אנשי הפיתוח יטענו בתוקף את המשפט האלמותי "זה לא באג, זה פיצ'ר". או במילים אחרות, על טעם ועל ריח אין מה להתווכח. את אומרת שכן ואני אומר שלא.
לפעמים כשהויכוח מתלהט פונים אל כתבי הקודש, כלומר הדוקומנטציה הרשמית של התוכנה בשביל לראות האם משם תבוא הישועה. אבל גם שכתבי הקודש מוכיחים שזה באג, יש פתרון פשוט אבל גאוני. כל מה שעליך לעשות בשביל להפוך באג לפיצ'ר זה לעדכן את המסמכים הרלוונטיים, והופ! הבאג כבר לא באג. תאמינו לי, אחרי מספר ישיבות מתישות שמסתיימות ב: "אתם יודעים מה, מסובך/מסוכן מדי לתקן את זה, בואו נפתור את זה בדוקומנטציה" אתם כבר תבינו לבד את היופי של הפיצ'ר הזה (למרות שיש כאלה שטוענים שכל העסק של לפתור באגים בדוקומנטציה זה באג ולא פיצ'ר…).
בקיצור הבאגים/ פיצ'רים האלה הם הבאגים שיש בהם ריח של באג, אבל אין שום טעם לתקן אותם.
וכעת הגענו אל המין הרביעי, הבאגים שאין בהם: לא טעם, לא ריח, לא שחזור ולא כלום. הבאגים האלה שהתרחשו או לא התרחשו פעם אחת בלבד בהיסטוריה האנושית ומאז אבדו עקבותיהם. כמובן שהבאג בוחר את התזמון הגרוע ביותר להתרחש, וזה דווקא אצל בודק התוכנה הכי פדנט ונודניק, שמיד פותח באג במערכת.
עכשיו לך תסגור את הבאג. אמנם אחרי שבועיים של נסיונות שחזור נואשים, כולם כבר מסכימים שאפשר לסגור את הבאג כ"ספורדי" ושלום ולא להתראות. אלא שדקה אחרי שהבאג נסגר במערכת הוא משתחזר שוב. וחוזר חלילה. לבאגים האלה יש רק שני מצבים. או שהם פתוחים במערכת ואז הם לא משתחזרים, או שסוגרים את הבאג ורק אז הוא משתחזר. נפלאות התוכנה.
אגב, שכאשר הבאג כבר כן משתחזר, זה אף פעם לא מתשחזר אצלך בעמדה, רק אצל זה שפתח את הבאג. ועכשיו צריך ללכת למעבדה או לעמדה של הבודק בשביל לראות במו עיניך את השחזור ואולי אפילו לדבג שם. פעם באמת היה צריך ללכת באופן פיזי. היום עם התקדמות הטכנולוגיה וכמובן שבעקבות הקורונה מדבגים מרחוק. מה שמכונה "debug session". למי שלא בעניינים "debug session" מזכיר מאוד ג'אם סשן, לפי ויקיפדיה: "מפגש בין אנשים שבו הם מדבגים יחד ללא הכנה או ארגון מוגדר מראש." זה בדיוק מה שקורה. הבודק לא יודע בדיוק מה הוא עשה בשביל לשחזר, ולמהנדסת האומללה אין מושג מאיפה לתקוף את הבעיה. אז מאלתרים. עד שבסוף מישהו עושה איזו טעות וכל השחזור נעלם. ממש כפרת עוונות. זה הבאג הלך לעזאזל ואנחנו הלכנו הביתה.
לסיום, כל העסק הזה מזכיר לי את השיר הנהדר של אריק איינשטיין "שכשנבוא". רק שכשנבוא (לדבג) נמצא תשובה. כי אצלנו זה לא משתחזר.
והמהנדס החכם אומר: לכל באג יש מוצאי באג (השאלה רק מי איבדו אותו, ואם בכלל אכפת להם)
גדול!!
אהבתיLiked by 1 person
גדול…. פעם שלחו לי את רשימת התשובות הכי נפוצות שמפתחים אומרים ל-QA. כמובן ש-#1 היה – It works on my machine. שווה.
אהבתיLiked by 1 person
חחח נפלא. אני אומנם עוד לא עובד כמפתח (כרגע בלימודי פול סטאק) אבל תמיד מרתק לקרוא כבר עכשיו איך זה נראה מבפנים.
אהבתיLiked by 2 אנשים