מריח כמו טעות

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

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

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

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

ולפני שניפרד הבונוס היומי יילך לראשון או לראשונה שיספרו בתגובות מה הקלט ששבר את המנגנון שתיארתי במודול המבחנים.