למה לטעות בכתיבת קוד זה דבר טוב

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

למה קורס תכנות הוא הזדמנות מצויינת להתנסות בהתמודדות עם כישלון? מכיון שכתיבת קוד היא שילוב מאתגר ומורכב של מדע מדויק ואומנות.

בתכנות אפליקציות, משהו תמיד עלול להשתבש

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

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

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

איך לתקן טעויות

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

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

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

ילדים מתוכנתים לעזור זה לזה

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

בתכנות כמו בחיים עצמם, כולנו צריכים עזרה מדי פעם. בחיים האמיתיים (IRL בשפת הצ'אט), כשלא מבקשים עזרה עלולים להישאר מאחור או להחמיר את הבעיה.

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

טעויות מפתחות את היכולת לפתור בעיות

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

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

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

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

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

הגיע הזמן שיצליחו להיכשל

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

תגובות

השאר תגובה