את אחד הספרים שאני הכי אוהב גיליתי בכלל דרך פודקאסט.
הארי פוטר והשיטה הרציונלית הוא ספין אוף על סדרת ספרי הארי פוטר אשר מנסה להעביר עקרונות מדעיים דרך העולם של הארי פוטר.
הוא תורגם לעברית על ידי קהילת רציונליות ישראל.
אחד הנושאים המדוברים בספר הוא הטיית האישור (positive bais).
והיום אנחנו נדבר איך הוא קשור לעולם פיתוח התוכנה, או באופן יותר ספציפי לעולם האוטומציה.
פרק 8 ספר 1 – הטיית האישור
.
בסדרה הזאת הדברים מתנהלים קצת אחרת ממה שהרוב מכירים.
הארי פוטר פוגש את הרמיוני ברכבת להוגוורטס אקספרס (הפעם בלי רון)
ובדרך הוא מלמד אותה על השיטה המדעית, ואיך אנחנו מעצבים ניסיים על מנת לבדוק את ההשערות שלנו.
על מנת לעשות את זה, הוא מלמד אותה ניסוי/משחק אשר נקרא משחק "2-4-6":
זה משחק שמבוסס על ניסוי מפורסם שנקרא משימת ה-2-4-6, וככה זה עובד: יש לי כלל – שידוע לי, אבל לא לך, שמתאים לשלשות מסוימות של מספרים, אבל לא לאחרות. 2-4-6 היא דוגמה אחת לשלשה שמתאימה לכלל. למעשה… תני לי לכתוב את הכלל, רק כדי שתדעי שהוא כלל קבוע, ולקפל את הפתק ולתת לך אותו…..
… "הדרך שבה המשחק עובד", אמר הילד, "היא שאת נותנת לי שלשה של מספרים ואני אומך לך 'כן' אם היא מתאימה לכלל הזה ו'לא' אם היא לא מתאימה לו….. "אחרי שאת מבצעת את כל הבדיקות הנוספות שאת רוצה – שואלת על כמה שלשות שאת רואה לנכון – את מפסיקה ומנחשת את הכלל, ואז את יכולה לפתוח את הפתק ולראות אם הצלחת."
מתוך הארי פוטר והשיטה הרציונלית פרק 8
הרמיוני מתחילה לנחש שלשות של מספרים.
4-6-8 והארי עונה כן.
10-12-14, והארי עונה כן.
1-3-5 והארי עונה כן.
מינוס 3, מינוס 1 פלוס 1 והארי עונה כן.
2-5-8 והארי עונה כן
10-20-30 והאיר עונה כן.
ובנקודה הזאת הרמיוני מנחשת את הכלל:
… המספרים חייבים לגדול באותה כמות כל פעם….
מתוך הארי פוטר והשיטה הרציונלית פרק 8
האם הרמיוני צדקה?
לפני שנמשיך בסיפור הנחמד שלנו, אני רוצה רגע להסתכל על צורת החשיבה של הרמיוני פה.
מה היא ניסתה לבדוק?
בהתחלה היא ניסתה השלשות של מספרים שגדלים כל פעם ב-2.
כל התשובות שהיא קיבלה היו "כן", ולכן היא יכלה לעצור כאן, אבל היא ניסתה להרחיב את הכלל.
שני הניסיונות האחרונים שלה הם עם שני רווחים שונים, 3 ו-10.
וכיוון שהיא קיבלה שתי תשובות חיוביות היא אמרה את התשובה שלה.
כלומר הרמיוני ניסתה להרחיב את הכלל כמה שיותר לפני שנתנה תשובה, שזו בהחלט מחשבה יפה.
עכשיו בואו נמשיך בסיפור:
"בסדר גמור," אמר הילד, "תוציאי את הפתק ותבדקי אם הצלחת."
מתוך הארי פוטר והשיטה הרציונלית, פרק 8
הרמיוני הוציא את הפתח מכיסה ופרשה אותו.
שלושה מספרים ממשיים בסדר עולה, מהקטן לגדול.
היכן הרמיוני טעתה?
אז הרמיוני לא צדקה בהשערה שלה.
קחו רגע את הזמן לחשוב, אחרי שאתם יודעים את התשובה, מה הרמיוני יכלה לעשות על מנת לעלות על הטעות שלה?
.
.
.
.
.
.
.
בואו ניתן להארי להסביר את העניין:
"מה שהרגע גילית נקרא 'הטיית האישור'," אמר הילד. "היה לך כלל בראש, והמשכת לחשוב על שלשות שיגרמו לכלל לומר 'כן'. אבל לא ניסית לבדוק שום שלשה שתגרום לכלל לומר 'לא'. למעשה לא קיבלת אף 'לא', אז הכלל היה יכול להיות באותה מידה 'כל שלושה מספרים'.
מתוך האיר פוטר והשיטה הרציונלית פרק 8
ובכן מה שהארי מנסה להסביר הוא כזה:
אנחנו כבני אדם נוטים לאשר את המחשבות שלנו. יש לנו נטייה להאמין שמה שאנחנו חושבים הוא נכון, ולכן נחפש אישושים או אישורים ללמה אנחנו צודקים.
אנחנו לא טובים בלאתגר את עצמנו, בלחשוב למה אנחנו טועים. האם אנחנו טועים?
ומה הקשר לעולם התוכנה?
גם בזמן פיתוח, אנחנו משתמשים באותה הטייה.
בין אם אתם משתמשים ב-TDD ובין אם לא, כאשר אנחנו כותבים טסטים (ולא משנה אם זה UT או system), אנחנו בדר"כ מנסים לבדוק שהקוד שלנו עובד.
כלומר, אנחנו מחפשים ניסויים שיתנו לנו את התשוב ה'כן'.
אבל אנחנו בדר"כ לא מנסים לכתוב טסטים אשר יפילו את הקוד שלנו. שיגרמו לו לקרוס, או להחזיר תשובה לא נכונה.
זהו שריר שאנחנו צריכים להתאמן עליו. חשיבה שלילית
היא חשיבה שאנחנו לא טובים בה ואנחנו צריכים להתאמן עליה.
זה לא פשוט אבל הנה כמה דברים שאפשר לעשות בהקשר של כתיבת טסטים:
- תנו למישהו אחר לאתגר אתכם. תנו לו לחשוב על המקרי קצה.
בדרך כלל אם אתם אלה שכתבתם את הקוד או חשבתם על פתרון, יהיה יותר קשה לכם לחשוב על משהו ששובר אותו. - תנו לג'בטה (chat GPT) לכתוב לכם את הטסטים
זה יבוא אולי בפוסט נפרד, אבל הוא אם מתארים לו מה אתם מנסים לבדוק, הוא בדרך כלל יביא כמה מקרים של בדיקות שליליות.