תכנות – מקצוע חובה לילדים
אי אפשר להפריז בחשיבות למידת התכנות בגילאים הצעירים. רבות דובר על תכנות לילדים בכל פורום אפשרי. מדינות העולם המערבי מודעות לחשיבות האסטרטגית של מקצועות הטכנולוגיה וכולם שוברים את הראש – כיצד לקרב יותר ויותר ילדים לעולם התכנות. כבר היום במספר מדינות ובעתיד הקרוב ברובן, ניתן יהיה לראות כיצד נכנסים לימודי התכנות כמקצוע חובה כבר בבתי הספר היסודיים. זה חיוני להישרדותה של אומה. בסרטון הזה, פונה הנשיא אובמה לילדי ארה”ב בבקשה ללמוד לתכנת:
תכנות לילדים אפשר ללמוד באופנים רבים במגוון מקומות. השאלה איך עושים את זה נכון כדי להביא את הילד ממצב של חוסר ידיעה לרמה של יודע לתכנת ומוכן לכניסה לעולם הטכנולוגי.
את הכללים הבאים אני כותב מתוך נסיון של מעל 20 שנה בתכנות ושנים רבות בלימוד תכנות ילדים ונערים מכל שכבות האוכלוסיה. מתוך הנסיון הזה יצרתי את שפת התכנות לילדים וסביבת הפיתוח SceneMax3D אשר עליה אני מחיל את הכללים הללו לקבלת תוצאות לימוד מירביות. כמובן שאין לראות ברשימה הזאת אמת מוחלטת, זאת לא תורה מסיני וכל מקרה לגופו אך מנסיוני עם מרבית הילדים – השיטה עובדת.
כלל מספר 1 – ילדים אוהבים משחקי מחשב. צריך ללמוד לתעל את זה לטובתינו
פיתוח משחקי מחשב ואנימציות הוא דרך נהדרת ללמד את הילדים תכנות מחשבים במיוחד אם עושים זאת בשיטת PBL שזה קיצור של Project Based Learning . אין טעם להעמיס על התלמידים הררי תאוריה וחומרים מקצועיים ואז להתחיל (או לסכם) בפרוייקט מעשי. יש להתחיל את הפרוייקט כבר מההתחלה וללמוד בכל שעור נושאים שמקדמים את הפרוייקט.
כשהייתי ילד קטן בערך בגיל 10 בתחילת שנות השמונים, אהבתי (כמו כולם) לשחק במשחקי מחשב אבל יותר מזה עניין אותי כיצד בונים אותם, איך מכניסים חיים במסך, איך יוצרים עולמות דמיוניים, איך מתבצעת כל האינטראקציה הזאת שבין השחקן למחשב.
אז כילד, התחלתי לחפש (ומצאתי) דרכים כיצד לדבר עם המחשב, לגרום לו לעשות את מה שאני רוצה. התקופה הייתה אחרת.
לא היה אינטרנט, גוגל, יוטיוב, יודמי. כלום. פשוט כלום וכל חומר שמצאתי, כל פיסת מאמר שהתפרסמה, הסתערתי עליה כמוצא שלל רב והוצאתי ממנה כל מה שרק אפשר לקידום בניית העולמות שלי. חלק מהחומרים התפרסמו בעברית אבל הרוב המוחלט היה באנגלית.

כלל מספר 2 – השקיעו בלימוד אנגלית לילדיכם.
זה אולי המקצוע החשוב ביותר בתקופתינו. המפתח להצלחה בכל תחום לימודי ומחקרי.
בפשטות, ילד שלא יחשוש להתמודד עם חומרים באנגלית יהיה בעמדת ייתרון על פני חבריו.
לא תאמינו כמה חרדות אני פוגש גם בתקופתינו מהצורך להתעסק עם חומרים באנגלית… צריך לפתור את הבעיה הזאת מוקדם ככל האפשר.
בשעורים שלי אני פותח בשאלה: מי יודע פה אנגלית? הילדים מהססים ואז אני שואל: מי יודע מה אומר המשפט adi is a ninja וכולם מצביעים בשמחה. הם יודעים בדיוק מה פירוש המשפט ואז אני כותב את זה לאט על המסך בפונטים ענקיים ולוחץ על לחצן ההרצה. מיד מופיע לוחם נינג’ה תלת מימדי על המסך.
הילדים בהתרגשות גדולה. הם היו שותפים לתהליך, הבינו מה שאלתי, הבינו מה כתבתי, הבינו את הקשר בין הכתוב לבין התוצאה הנראית על המסך, כל אחד ואחד מהם יכול להצליח לכתוב ולהריץ את המשפט הזה בעצמו. כעת הם פחות חרדים מהשימוש באנגלית. המטרה הושגה.
כלל מספר 3 – צריך שהלימוד יהיה מעניין ו “מדליק”
עד כדי כך שהילדים ירצו להתעסק בזה גם בזמנם החופשי.
אני מקבל שאלות מתלמידים גם חודשים רבים לאחר סיום הקורסים. זה מבחינתי מדד אולי החשוב ביותר להצלחת הקורס – העובדה שהצלחנו לזרוע את זרע התכנות והיזמות אצל התלמידים וזה הולך ומתפתח אצלם.
כלל מספר 4 – יש לייצר תחושת הצלחה ותוצרים משמעותיים כבר בשעור הראשון
ובכל שעור שלאחריו – אנו נמצאים בתקופת ה Instant. הכל מהיר, אין סוף הסחות דעת, סף ריגוש גבוה, טרנדים מתחלפים בקצב מהיר, תחרות מתמדת עם הטלפון, ילדים מאבדים עניין בקלות ועוברים לדבר הבא. לכן אנו צריכים כבר בשעור הראשון לקנות אותם. להוכיח להם שהם יכולים לתכנת משחקים, להדגים את החזון ולייצר ציפיה לשעורים הבאים. אני רוצה להדגיש את הנקודה האחרונה – כדאי מאוד שבכל סוף שעור נספר בשתי מילים על מה הולך להיות בשעור הבא. זה טריק שיווקי ידוע ליצירת ציפיה לקראת ההמשך.
כלל מספר 5 – הסבירו לילדים מה עומד מאחורי המושגים
תלמידים אוהבים להבין מה הם כותבים. ברגע שישנה הבנה זה מרתק ומכניס אותם לקשב. באחד השעורים בהם הייתי נוכח, המורה ביקשה מהתלמידים לכתוב את הפקודה :
skybox.show “lagoon”
היא הסבירה שכך אנו מכניסים תפאורת רקע של לגונה למשחק. הילדים ניסו להקשיב. ניכר שהיה להם קשה להבין מה הקשר בין תפאורת רקע במשחק למילה המוזרה skybox.
ביקשתי מהמורה רשות לדבר והסברתי לילדים באופן הבא:
אנו לומדים לפתח משחק תלת מימדי בדיוק כמו ב Play Station או ה XBox שלכם – [יצירת חיבור לעולם שאותו הם מכירים]
בעולם מפתחי המשחקים ישנו מושג כזה שנקרא skybox – [הרגעה. זה בסדר שאתם לא מבינים. זהו מושג של מפתחי משחקים]
ה skybox כשמו כן הוא – קופסא ענקית בגובה השמיים שעליה מודבקות תמונות מכל הכיוונים. במקרה הזה בחרנו להדביק תמונה של לגונה – [עכשיו הסבר על המושג החדש. שיבינו מה עומד מאחורי המילה]
כל המשחק שלנו מתחולל בתוך אותה קופסא ענקית ולכן היא משמשת כתפאורה למשחק – [ולבסוף למה אנחנו בכלל צריכים את אותו skybox , מה התפקיד שלו במשחק שלנו]
נוצרה דממה בכיתה. ניכר שהילדים הבינו מה עומד מאחורי המשפט המוזר. הם ממש חיכו לרגע שיוכלו להכניס למשחק את קופסת התפאורה הענקית הזאת.
בהמשך הקפדנו לעבוד באופן הזה של להשקיע מספר דקות בחיבור הילדים אל החומר והסבר קצר על המושגים לפני שרצים להקליד אותם. זה עבד טוב. טוב מאוד.
כלל מספר 6 – תכנית הלימוד צריכה להיות ברורה ומסודרת עם מורה ששולט ביד רמה בחומר
מורה שמוצא את עצמו בקושי “שורד” את השעור, מנחה את התלמידים להכנס לסביבת הלימוד, לקרוא לבד את ההוראות, לצפות בסרטונים ולעשות עם זה משהו, צפוי לשחיקה גבוהה, בלאגן בכיתה, הפרעות ותסכול של התלמידים. זה יכול “להצליח” ולהכשל באותה מידה.
אנו לא רוצים להשאיר שום דבר לידי המזל.
התכנית צריכה להיות ברורה. מערכי שעור מסודרים לכל השנה.
המורה מבין את החומר על בוריו, כל שעור הוא יחידת לימוד עצמאית ככל שניתן.
כל הילדים מבצעים את המשימה הנלמדת. תלמידים מתקדמים יכולים בזמן הנותר לאחר מילוי המשימה לעזור לאחרים או להתקדם עם פרוייקט משחק אישי.
לראייתי המורה צריך לבסס את מעמדו כאוטוריטה מקצועית. זה חלק גדול מהביטחון של התלמידים בדרך ונותן להם מוטיבציה להתקדם בחומר. הם יודעים שיש על מי לסמוך.
כלל מספר 7 – להיות קשורים למציאות
פיתוח משחקים ואנימציות זה נפלא אבל מטרת העל היא לקרב את הילדים למקצועות הטכנולוגיה בעולם האמיתי. אני שואף שלתלמידים שלי יהיה טבעי בסוף הקורס לעבור לפתח בסביבות פיתוח מורכבות יותר. לשם כך אני דואג שבתכנית פיתוח המשחק יהיה שימוש בתכנות עם עצמים, הגדרות משתנים, פרוצדורות ופונקציות, שימוש בלולאות, ריבוי תהליכים, תנאים, קלט מהמשתמש, עבודה עם קבצים וכולי. נשמע קשה נכון? נכון! זה באמת לא פשוט ללמידה. אז מה הסוד? איך אפשר בכל זאת להעביר את כל החומר הזה לילדים?
התשובה היא להפוך את המושגים שהוזכרו לצרכים:
התלמיד צריך להגדיר משתנים כדי שיוכל לזכור את תוצאת המשחק ואת החיים שנותרו לשחקן הראשי.
התלמיד צריך להגדיר פרוצדורות כדי לשמור על סדר בקוד.
התלמיד צריך לקבל קלט מהמשתמש על מנת להפוך את המשחק לאינטראקטיבי וכך הלאה. חובה להדגיש בפני התלמידים את הצורך שלהם לפני שמלמדים לבצע עוד אספקט בתכנות.
ככל שפיתוח המשחק מתקדם כך הופך הילד מבלי להרגיש כמעט למתכנת מחשבים לכל דבר ועניין. אני יכול להעיד על עצמי שאני חייב את כל הקריירה שלי לאותם משחקים פשוטים שתכנתתי בבית הספר היסודי.
כלל מספר 8 – לתת לילדים להתחבט בבעיות ולמצוא פתרונות
לא תהיה למידה אם ניתן לילדים בכפית את כל הפתרונות. התלמידים צריכים לשבור את הראש קצת לבד על מנת למצוא את הפתרון המתאים לצורך או לבעיה. למה זה כל כך חשוב? משתי סיבות:
א’ – מי שמתאמץ וחוקר ומחפש ומוצא ומתנסה בפתרון בעיה, הידע נצרב לו במוח.
ב’ – חשובה לא פחות מהפתרון היא הדרך בה חיפשנו אותו. בתקופתינו, היכולת לחפש מידע רלבנטי חשובה לא פחות (אולי אפילו יותר) מיכולת הקידוד.
כלל מספר 9 – להפוך את הילדים ליצרנים
בעיני זה חשוב. אני שואף שהתלמידים לא רק ילמדו לתכנת משחקים אלא גם לייצר משחקים. בסוף התהליך כל ילד יכול לייצא (לארוז) את המשחק שלו לקובץ הפעלה, להעלות אותו לחנויות באינטרנט ואף למכור אותו. ה 2 דולרים הראשונים שהוא יקבל על פרי עמלו הדיגיטלי יתדלקו את אש היצירתיות שלו והרצון שלו ללמוד ולפתח עוד מוצרים כאלה, עד האוניברסיטה. עד כדי כך זה חשוב.
ובנוסף ישנו גם את אספקט השיווק. יצרת מוצר? כל הכבוד לך. עכשיו צריך ליידע את קהל היעד בדבר קיומו. לפרסם ברשתות החברתיות, בקבוצות השונות, בקרב החברים והמשפחה וכל מי שרק יכול להפיץ את הבשורה. כישורי השיווק חשובים ומשלימים את כישורי הייצור.
כלל מספר 10 – הישתמשו בכלי פיתוח חינמיים
לא מתוך קמצנות. המורה צריך לבחור בכלי פיתוח חופשיים לשימוש על מנת לאפשר לילדים להתאמן בבית בזמנם החופשי ללא מגבלות של רשיון, פתיחת חשבון משתמש, תשלום דמי מנוי וכד’
לשמחתנו רוב סביבות הפיתוח ושפות התכנות הפופולאריות כיום הן חופשיות לשימוש.
כלל מספר 11 – כיתות קטנות
צריך לשאוף ללא יותר מ 15 תלמידים בכיתה שלומדת תכנות וגם זה מאתגר מאוד למורה הממוצע. במקרה של כיתות מלאות, צריך לבצע תיאום צפיות ולדעת שתהליך הלמידה יהיה איטי וכנראה גם דיי מבולגן. זאת לא אשמתו של המורה. מקצוע התכנות לא מתאים ללמידה בכיתות גדולות בגילאי יסודי ואף מעבר לכך.
לדעתי במקרה של כמות תלמידים גדולה ישנה עדיפות להעברת שעורים מקוונים (אם אפשר). בשעורים כאלה החיכוך עם התלמידים יותר נמוך, המורה פחות נשחק, אין צורך להתרוצץ בין התלמידים, אין צורך לייצר שקט והקשבה. האחריות לכך עוברת לצד התלמיד. המורה מתעסק בעיקר בלימוד החומר.
בין אם מדובר בכיתה גדולה או קטנה, תמיד כדאי לסדר את התלמידים בצורת ח’ ולנסות שישבו קרוב אל המורה ככל שניתן. זה עושה הבדל דרמתי ביכולת לייצר קשב.
במה לבחור – שפות טקסטואליות או וויזואליות?
כל שפות התכנות הפופולאריות בעולם כגון: C#, JAVA, C++, Python, Ruby, JS כולן הן שפות טקסטואליות ז”א שיש להן מילים שמורות ותחביר ואת התכניות כותבים בתוך עורך טקסט בדיוק כמו שכותבים מסמך בוורד.
הבעיה עם השפות הללו ככל שמדובר על תכנות לילדים היא שיש להן עקומת למידה חדה עם סביבות פיתוח “מאיימות”. בהחלט לא משהוא שמתאים לילדים בכיתה ה’ ומנסיוני גם בכיתות גבוהות יותר זה לא פשוט לרוב התלמידים.
מצד שני ישנן שפות תכנות וויזואליות כגון: סקראץ’, טינקר, אליס בהן לא מקלידים את התכניות בעורך טקסט אלא יוצרים אותן באמצעות גרירת בלוקים אשר מייצגים פעולות שונות. היתרון הגדול של השפות הוויזואליות הללו הוא שעקומת הלמידה שלהן מתונה, קל מאוד להתחיל לתכנת איתן וסביבות הפיתוח שלהן לא מאיימות ואפילו משעשעות.
ישנן דיעות שונות לגבי יעילותן של שפות הפיתוח הוויזואליות בהכשרת התלמידים לעתיד טכנולוגי. במבחן התוצאה עשרות מליוני ילדים לומדים באמצעותן תיכנות, חשיבה מחשובית, רובוטיקה וכד’ ולכן דעתי היא שהן בהחלט תורמות ומתאימות ללימוד בגילאי יסודי.
אף אל פי כן אני אישית מעדיף ללמד את התלמידים שלי תכנות טקסטואלי ממספר סיבות:
א. לדעתי זה מכין אותם טוב יותר לקראת כניסה לעולם התכנות האמיתי – הם לא יקבלו הלם בפוגשם לראשונה שפת פיתוח אמיתית
ב. יותר קל (לדעתי כמובן) לקרוא ולתחזק תכנית מחשב טקסטואלית על פני תכנית וויזואלית. איך שהוא תכניות וויזואליות מורכבות נראות לי תמיד כמו איזה פזל ענקי מבלבל בעיניים. קשה לערוך אותן, לבצע שינויים מהירים ואי אפשר פשוט להעתיק את הקוד ולשמור בקובץ טקסט או לשלוח בדואר האלקטרוני. חייבים להסתמך על יכולות ניוד ושיתוף של סביבת הפיתוח וזה מגביל.
כשהמצאתי את שפת התכנות לילדים SceneMax3D שאפתי לתת פתרון שהוא מצד אחד קל וידידותי כמו סקראץ’ ומצד שני מאפשר כן כתיבת קוד טקסטואלית כמו ב “שפות של הגדולים” כך שהתלמידים יעשו מכאן מעבר חלק לתכנות בעולם האמיתי.
בסרטון הבא ניתן לראות השוואה בין שפות וויזואליות לשפות טקסטואליות:
מה עושים במקרה של תלמיד המתקשה בחומר?
תמיד יהיו מספר תלמידים כאלה בכיתה. הכינו מראש קבצי Baseline ז”א אומרת קבצים מוכנים עם הקוד הרלבנטי לאותו שעור. תלמיד שלא מצליח להדביק את החומר עדיף ליישר לו קו עם קבצי ה Baseline ולאפשר לו להמשיך לעבוד מאשר לאבד אותו בכלל.
דבר נוסף שאפשר לעשות זה לבקש מתלמידים מתקדמים לסייע לו בהבנת הבעיה. במקרים מסויימים גם עבודה בזוגות יכולה להצליח אם כי באופן כללי זה לא מומלץ בשעורי תכנות.
לסיכום
במאמר זה העליתי את הדברים שעל פי נסיוני מאפשרים לימודי תכנות לילדים באופן מיטבי במסגרת המגבלות הידועות. מטרת העל של כולנו היא לקרב את דור העתיד למקצועות הטכנולוגיה לרבות תכנות מחשבים וכל כלי וכל שיטה שעושה את העבודה הרי זה מבורך.
בהצלחה!