Debugging: סקירה וביקורת ספר

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

האם אפשר ללמוד לדבג? הספר
האם אפשר ללמוד לדבג? הספר


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

הספר הקצר (185 עמודים, כולל הכול) מנסח את תשעת הכללים, מסביר את הרציונל ואת המשמעויות שלהם, ומדגים אותם בעזרת סיפורי "מורשת קרב" אמיתיים מניסיונו האישי – בדרך כלל – של המחבר. אמנם רוב הסיפורים הם מתחומי החומרה והתוכנה, אבל הספר מדבר על דיבוג במובן הכללי ביותר, ולכן אין בו רשימות בסגנון "תקלות נפוצות במעגלים חשמליים" או "עשר השגיאות שכל מתכנת C עושה". את אלה תצטרכו לחפש במקום אחר. כאן תמצאו הנחיות עקרוניות, כגון "הכר את המערכת", "אל תחשוב – הסתכל!", "שנה רק דבר אחד כל פעם" וכדומה.

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

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

הדבר שהכי אהבתי בספר הוא הסיפורים מהחיים: יש שם כמה פנינים אמיתיות ומעוררות מחשבה, שלפעמים עושות עבודה טובה יותר בהעברת המסר מאשר פרק שלם של תיאוריה. רובן כאמור גם באות מעולם התוכן שמוכר לנו המייקרים. לדוגמה, אחד הסיפורים עוסק במתכנת שכתב קוד שקורא וכותב לקבצים, והחלק הקורא היה איטי מאוד, אפילו – בניגוד לכל היגיון – איטי יותר מהחלק הכותב. במשך שבועות הוא לא הצליח למצוא את הגורם, עד שמישהו אחר בחן את הקוד ושם לב להגדרת סוג הקובץ. המתכנת הניח שאם לא מוגדר סוג ספציפי, הקומפיילר יתייחס לקובץ כבינארי (מכיל ערכי בייטים גולמיים), ואילו בפועל הקומפיילר התייחס לקובץ כקובץ טקסט (קריא לבני אדם), ולכן ביצע עליו פעולות מיותרות רבות שניפחו את זמן הקריאה. כל מי שהתבלבל אי פעם בארדואינו בין Serial.print ל-Serial.write ימצא את עצמו כאן…

הספר עולה, נכון לכתיבת שורות אלה, 56.51 ש"ח ב-Bookdepository (המשלוח חינם). כאמור, לא קריאת חובה לכל אחד, ולא משהו שיהפוך אתכם למדבגי-על. הוא כן מהווה מבוא טוב לנושא למי שרוצה להתפתח מבחינה מקצועית, ללמוד דברים חדשים או לפחות לוודא שהוא הולך בדרך הנכונה כשהוא מתמודד עם התקלות הבלתי-נמנעות שיש בכל מערכת, גם בזמן הפיתוח וגם במהלך השימוש.

להרשמה
הודע לי על
2 Comments
מהכי חדשה
מהכי ישנה לפי הצבעות
Inline Feedbacks
הראה את כל התגובות

סיפורים על דיבוג ומורשת קרב זה תמיד נחמד. באותו עניין יש את הפוסט הנהדרת הבא, עם הרבה סיפורים "מהשטח":
https://www.quora.com/Whats-the-hardest-bug-youve-debugged
כדאי לקרוא.