לימודי מחשבים בשיטת בטא/למה לא אוגנדה

מה קשור אוגנדה?

edit

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

למה הולכים בבטא ישר לC ולטכנולוגיות קשות?

edit

התשובה שנתן the_duke לPanic! ב18.02.2021 כשעלתה שאלה דומה:

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

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

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

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

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

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

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

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

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

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

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

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

ואם אני לא מסכים איתך, וחושב שאם הם יתחילו משפות קלות, הם כן ימשיכו לשפות אחרות קשות יותר, כי השפות של ההתחלה ירגישו להם מוגבלות בשלב מסוים?

edit

זה גם מה שאני תיארתי לגבי התכנון שלי עם הHTML.

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

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

המבנה בבטא מספיק גמיש כדי לאפשר ניסויים כאלו.