נשארים מעודכנים
הצטרפו לקהילת 'הגיע זמן חינוך' וקבלו עדכון שבועי עם כל מה שמורות ומורים צריכים לדעת
כמורה למדעי המחשב אני מגלה בכל פעם מחדש כי יש מורים למקצועות אחרים שפשוט אינם יודעים מה קורה בשיעורים שלי ומה אני מלמד. כולנו למדנו בתיכון תנ"ך, ספרות, הסטוריה ולשון, ומסיבה זו כולנו מכירים את האופי של המקצועות האלו ומהם הנושאים הנלמדים בהם, גם אם אנחנו לא זוכרים את כולם. כיוון שרוב המורים לא למדו מדעי המחשב, הם אינם בקיאים בנושאים הנלמדים וגם לא תמיד מבינים את מהות המקצוע. אני מזמין אתכם לקרוא ולהתקרב אל עולם מדעי המחשב, על מנת לסייע לכם להחליט בעצמכם האם המגמה העולמית להכנסת תכנות לבתי הספר היסודיים היא הדרך הנכונה ללכת בה.
אני זוכר את עצמי בגיל 11 מתכנת בשפת basic במחשב שקוראים לו spectra video. מתכנת? קורא תוכניות שאחרים כתבו, משנה פה משהו, שם משהו, מריץ שוב ומבין מתוך ניסוי וטעיה. זה היה הבסיס שלי ללימודי מדעי המחשב בתיכון ומאוחר יותר לתואר במדעי המחשב. אני לא בטוח שהבסיס הזה היה הכרחי עבורי להצלחה ולא הייתי יכול להשלים את מה שלמדתי בשלב מאוחר יותר, אבל אין ספק שזה תרם. בעידן של היום הכל גדול יותר, מהיר יותר ובמקרה של תכנות - גם מוקדם יותר.
בשנים האחרונות התפתחה ואף מתחזקת מגמה עולמית, בה הגיל שבו ילדים לומדים לתכנת הולך ויורד. ניתן להניח שחלק מהסיבה לכך היא כי הטכנולוגיה הזמינה מאפשרת הקמה של מסגרות לימוד לתכנות ביתר קלות. האתר code.com מציע תוכניות לימודים ללא תשלום לשיעורי תכנות, והוא הופך ליותר ויותר שימושי בארה"ב, שבה מספר המדינות המכניסות שיעורי תכנות כשיעורי חובה לתוכנית הלימודים עולה בהתמדה. בישראל האדרה של יחידות כמו 8200, ממר"מ ואחרות, שיוצאיהן נחטפים על ידי חברות פרטיות בשוק ההייטק, מעצימה את המגמה, ואם עד לפני כמה שנים יחידות מיוחדות עם לוחמים קרביים נחשבו לעילית של הצבא, נראה כי היום יחידות המיחשוב הפכו לנחשקות יותר בעיניי הצעירים. נוסיף לזה את אופן הצגתן של חברות סטארטאפ בתקשורות ואת המשכורות הגבוהות בהייטק (אפילו ביחס למקצועות יוקרתיים אחרים במשק) ודי בזה כדי להבין את הרצון של ההורים שילדיהם יהפכו למארק צוקרברג הבא. ואם כבר בצוקרברג עסקינן, אזי ניתן למצוא דמויות בולטות נוספות מתחום הטכנולוגיה כמו ביל גייטס, ג'ק דורסי (מייסד tweeter), דרו יוסטון (מייסד dropbox) ודמויות משפיעות אחרות כמו ברק אובמה וכריס בוש (שחקן NBA), המעודדות ילדים לתכנת. ולא רק הם. משרד החינוך ובראשו השר נפתלי בנט, הכריזו על תוכנית שתכליתה היא לימוד מדעים ושפת תוכנה. מטרת התוכנית היא הנגשה של תחומי המתמטיקה ומדעי המחשב לתלמידים. אז כולם רוצים שהילדים ילמדו תכנות, אבל מה זה בעצם לתכנת ומה צריך ללמוד בשביל זה?
מה זה בכלל תכנות?
שפת תכנות היא שפה עם תחביר ודקדוק, כאשר המשמעות ליצירת "משפטים" בשפה, היא הפעלת פקודות על המחשב. קיימות שפות תכנות המגיעות עם סביבות פיתוח המתאימות לילדים. סביבת פיתוח היא התוכנה שאיתה המתכנת עובד, יוצר תוכניות, בודק ומפעיל אותן (נקרא גם להריץ תוכנית). ישנן סביבות פיתוח שבהן המתכנת גורר אובייקטים ופקודות אל שטח במסך שבו מתנהלת זרימת המידע בתוכנית (כמו scratch). חלק מסביבות הפיתוח מצריכות כתיבה, גם אם פשוטה ומצומצמת, של קוד, כלומר כתיבה של פקודות בשפה (כמו smallbasic) וחלקן מאפשרות שילוב של גרירת פקודות יחד עם כתיבת קוד (כמו greenfoot). סביבת הפיתוח מאפשרת כתיבת קוד ובו פקודות בשפת תכנות, אשר מהוות יחד פתרון לבעיה במספר סופי של פעולות. קוראים לזה אלגוריתם.
אבל כמו כל מוצר, השלב הראשון אינו מתחיל בייצור. קידוד הוא רק שלב אחד, ובלימודי מדעי המחשב קיימים לא מעט קורסים שאינם כתיבת קוד, כי כדי לפתור בעיה צריך לזהות אותה, לנתח אותה מזוויות שונות, להכיר את הנושא שבו הבעיה עוסקת, לבחון פתרונות אפשריים ובעיות ביישומם, לתכנן את הפתרון האופטימאלי, ליישם אותו באופן הנכון ולבחון את האופן שבו היישום פותר את הבעיה.
מבחר סביבות הפיתוח, השפות והזמינות של שפות תכנות שונות הופך את הכניסה של לימודי התכנות לבתי הספר לקלה יותר. ניתן לבחור באופציה הנפוצה scratch או בסביבה לבוגרים יותר כמו smallbasic, אך ניתן ללמוד תכנות גם באמצעות משחק עם CodeMonkey או CodeCombat ואפילו להתנסות עם הצב של לוגו המוכר והאהוב. הזמינות באה לידי ביטוי גם באפליקציות ללימוד תכנות אשר ניתנות להורדה כמו ScratchJr, Daisy the Dinosaur או CodeMonkey.
מיומנויות תכנות
יש המחזיקים בתפיסה שגויה כי תכנות היא משימה טכנית, בדומה להברגת ברגים במכונה שתוכננה מראש על ידי אחר. תכנות היא פעולה יצירתית. משלב ניתוח הבעיה ועד לשלב היישום וההטמעה דרושה יצירתיות וחשיבה. היצירתיות באה לידי ביטוי בהפעלת תרחישים לגבי פתרונות אפשריים, דרכים שונות להגיע לפתרון וגם ניסיונות לתקוף את הבעיה מזויות לא שגרתיות. משימת תכנות דורשת הפעלת דימיון לפיתוח רעיונות החדשים, התנסות בעבודת צוות, דיוק והתמדה, חקר ושיפור מתמיד ולעיתים חשיבה מחודשת על הפתרון שנבחר. התמודדות עם כשלונות היא חלק מהותי מעבודתו של מתכנת, אשר מתקן את תוכניתו מבחינת תחביר ודקדוק השפה, על מנת שהתוכנית שכתב תפעל ולאחר מכן הוא נדרש לבצע בה תיקונים שוב ושוב, כדי שתבצע את המטרה שלשמה נכתבה ולא תקרוס או תפעל בצורה לא תקינה. למעשה, לעיתים קרובות לימודי תכנות מתחילים בלימוד של פעולות חשבון בסיסיות ולוגיקה ורק לאחריהם לומדים את השפה שאיתה ימומש הפיתרון. אם ילד חווה את כל זה, ולבסוף יוצא עם מיומנויות שניתנות לפיתוח לקריירה בהייטק בהמשך - אז מה רע?
אז למה לא בעצם?
הביקורת כלפי המגמה לשילוב שעות תכנות כבר בבתי הספר היסודיים מגיעה ממספר כיוונים. יש הטוענים כי המוטיבציה הגבוהה של הממסד וההורים המכוונים את הילדים ללמוד תכנות, מסלילים להם את הדרך לקריירה ומונעים מהילדים את הבחירה כבר בגיל כל כך צעיר. טענה נוספת מתייחסת לעידוד צעירים לשבת מול מסך במסגרת שיעורי התכנות וכאשר מדובר על דור המסכים, זה מצמצם משמעותית את מספר השעות שבהן הילדים מנותקים מהמסכים. עוד טענה גורסת שתכנות הוא מקצוע, ובבית הספר יש ללמד חשיבה עצמאית ויצירתית, ערכים ומוסר ולא להכשיר את הילדים לצורכי התעשייה. הטענה הזו מקבלת משנה תוקף כאשר המעודדים את לימודי התכנות מעלים שוב ושוב את הצורך בהכשרת דור מתכנתי המחר כצורך לאומי.
הוראה ולמידה מתקיימות תמיד בהקשר למטרה שלהן. האם המטרה של בתי הספר היא להכשיר את הילדים להניע בעתיד את התעשייה, או שהמטרה היא לסייע לילדים לצמוח ולהתפתח לכיוון של הגשמה עצמית? האם יש לבתי הספר בכלל זכות למנוע התפתחות מיטבית מילדים באמצעות ניתוב הילד לתחומים, מקצועות ומספר רב של יחידות לימוד במקצועות הנדרשים למשק הישראלי? האם לשם אנו מכוונים כשאנו משתמשים בביטוי "הבוגר הרצוי"? ואם כבר מלמדים מקצועות נדרשים בבית הספר, מדוע דווקא תכנות ולא מקצועות אחרים? האם לא חשוב יותר ללמד בבית ספר חשיבה ביקורתית, שתעסוק בקריאה ביקורתית של כתבות באינטרנט, אבחנה בפרסומות סמויות, דלית מידע בין השורות מדיונים ברחבי הרשת ומחשבה אודות מקורם של תכנים ובעלי אינטרסים העומדים מאחוריהם? האם אין זה נכון ללמד סיטואציות של אתיקה ומוסר מהחיים האמתיים ומאלו הווירטואליים לפני שכותבים קוד?
סוף דבר – או רק ההתחלה
בעידן שבו אנו קרובים לבינה מלאכותית, לא בטוח שכל אדם על כדור הארץ נדרש להיות גם מתכנת. תחום הנדסת האנוש אחראי לקרב את האופן שבו מכונות פועלות אל האינטואיציה האנושית ולא להיפך. לימוד תכנות משלב פיתוח של לוגיקה, יצירתיות, פתרון בעיות והתמודדות עם קשיים וכישלונות. מבחינה זו הלימוד הוא חיובי. אך אם נצטרך לבחור בין תכנות לבין אסטרונומיה למשל, שיש בהוראתה תרומה לא פחותה למיומנויות של הילד, נראה כי המשיכה של ההורים לקריירת הייטק של ילדיהם והצורך של המדינה בעובדים, יכריעו בעד התכנות. לדעתי יש נטיה לקפוץ על עגלות נוסעות כי אנו לא רוצים להישאר מאחור, אבל הבעיה היא שאנו לא תמיד יודעים לאן העגלה נוסעת. חשוב שנחשוף את הילדים לחוויות מגוונות, נעודד אותם לפתח את התחומים שבהם הם חזקים ונמשיך למצוא תחומים חדשים עבורם ולייצר להם חוויות ראשוניות של הנאה, הצלחה ועניין. אני חושב שככל שילדים יתנסו, יחשפו, יכירו ויחוו מגוון רחב יותר של חוויות – מגוון המיומנויות שלהם יגדל וישתכלל ונגדיל את האפשרות שלהם לזהות מה מעניין אותם, לדעת במה הם טובים ובמה פחות, לבחור את תחומי העניין שלהם שבהם יתעמקו ויהפכו לתחביבים. ילדים הם סקרנים וחברותיים מטבעם, ומתפקידו של בית הספר לשמור על המצב הזה ולפתח אותו. בהקשר זה אני לא רואה פסול בשילוב של שיעורי תכנות בבית הספר. להיפך. אבל אני גם לא רואה בתכנות כתחום חשוב יותר מכל תחום אחר.
אם הייתה בידיכם האפשרות לבחור מה ילמדו ילדי יסודי במשך שעה שבועית, האם הייתם הופכים את לימודי התכנות לחובה או רק אופציה לבחירה? האם תבחרו להוסיף שעה למקצוע לימוד אחר או אולי להוסיפה למקצוע שאינו נלמד בבית הספר? אני לא בטוח שאם תנסו לענות על השאלות הללו תמצאו תשובות, אבל הרהור אודות השאלות והתשובות האפשריות להן ומשמעותן, יקרבו אתכם לגיבוש האג'נדה החינוכית שלכם.