מה קורה אם התוכנית עובדת אבל אני לא מבין למה¶
זו תחושה מוזרה שכמעט כל מתחיל חווה בשלב מסוים - ניסיתם כמה גרסאות של קוד, אחת מהן פתאום עבדה, ואתם לא לגמרי בטוחים למה דווקא היא הצליחה בעוד שהאחרות נכשלו. יש תחושת הקלה שהתוצאה נכונה, ומתחתיה תחושת אי נוחות - האם זה מקרי? האם זה יעבוד שוב בפעם הבאה?
למה זה קורה כל כך הרבה בהתחלה¶
בשלבים הראשונים של לימוד תכנות, יש עדיין פער בין הבנה תיאורטית לבין היכולת לחזות מה בדיוק כל שינוי קטן בקוד יעשה. אתם עדיין לומדים איך כל חלק בשפה מתנהג, ובינתיים אתם עובדים הרבה על ניסוי וטעייה - משנים משהו, מריצים, רואים מה קורה. זו לא בעיה מוסרית או סימן שאתם "לא מספיק טובים". זו בדיוק הדרך שרוב האנשים לומדים מיומנות חדשה - קודם המעשה, ורק אחר כך ההבנה המלאה של למה זה עבד.
מתי זה בסדר גמור, ומתי כדאי לעצור¶
אם אתם עובדים על תרגיל קטן ופתאום הוא עובד, זה בסדר גמור להמשיך הלאה ברוב המקרים, במיוחד אם אתם מזהים שההיגיון הכללי מסתדר לכם, גם אם לא כל פרט. אבל אם אתם שמים לב שזה קורה שוב ושוב - אתם מנסים דברים בלי הבנה, וכשמשהו עובד אתם לא יודעים למה - זה סימן שכדאי לעצור לרגע לפני שממשיכים לנושא הבא. הידע הזה לא ייעלם מעצמו, והוא רק יצטבר ויקשה יותר ויותר ללמידה עתידית אם לא תטפלו בו.
הטכניקה שהופכת "זה עבד" ל"אני מבין למה"¶
יש שיטה פשוטה שעובדת מצוין - נסו להסביר בקול רם, כאילו למישהו אחר, בדיוק מה כל שורת קוד עושה, שורה אחר שורה. זו שיטה שנקראת לפעמים "שיטת הברווז הצהוב" - מסבירים לחפץ דומם, ולא פעם באמצע ההסבר מגלים בדיוק היכן ההבנה שלנו רופפת. אם אתם נתקעים באיזשהו שלב בהסבר, שם בדיוק הפער נמצא.
טכניקה שנייה מועילה היא לשנות בכוונה חלק אחד קטן מהקוד שעובד, ולנחש מראש מה יקרה לפני שאתם מריצים אותו. אם הניחוש שלכם נכון, זה סימן חזק שאתם מבינים באמת. אם לא, פערי ההבנה שהתגלו הם בדיוק המקום ללמוד ממנו הכי הרבה.
למה חשוב לא לדלג על השלב הזה¶
הבעיה עם "זה עבד ואני ממשיך" בלי הבנה, היא שהיא נערמת. תרגיל אחד שהבנתם באופן חלקי הופך לבעיה קטנה. עשרה תרגילים כאלה ברצף הופכים למצב שבו אתם לא יכולים לבנות שום דבר עצמאי, כי אין לכם באמת בסיס יציב מתחת לרגליים, רק אוסף של פתרונות שעבדו פעם אחת. השקעת הזמן בהבנה עכשיו חוסכת הרבה יותר זמן בהמשך.
איך זה קשור לדיבוג בעתיד¶
הכישרון הכי חשוב בתכנות הוא לא לכתוב קוד שעובד, אלא לדעת לתקן קוד שלא עובד. מי שרגיל להבין למה קוד עובד, יידע גם למה קוד לא עובד כשמשהו נשבר. מי שרגיל רק לנסות עד שמשהו עובד, יתקשה מאוד כשהוא יצטרך לתקן באג בקוד מורכב, כי אין לו כלים להבין מה בכלל השתבש.
קורס התכנות הבסיסי שלנו מלמד לצד כתיבת קוד גם איך לחשוב על מה שכתבתם, כדי שההבנה תהיה יציבה ולא רק תוצאה מקרית.
לסיכום¶
זה נורמלי לגמרי שקוד עובד לפני שההבנה המלאה מגיעה, במיוחד בהתחלה. אבל שווה להשקיע רגע לוודא שאתם מבינים למה, במיוחד אם זה קורה שוב ושוב - כי ההבנה הזאת היא בדיוק מה שיאפשר לכם לפתור בעיות עתידיות בעצמכם, ולא רק לקוות שהניסוי הבא יעבוד.
לא בטוחים למה קטע קוד מסוים עובד? הצטרפו לקהילה בדיסקורד ותשאלו, זה בדיוק הסוג של שאלה שאנשים אוהבים לענות עליה.