לימודי תכנות עם AI - מה יותר קל, מה יותר קשה ולאן זה הולך
חבר שואל - אני רוצה ללמוד תכנות אבל לא בטוח אם יש טעם. אני רוצה לעבוד בפיתוח אבל כל מה שאני רוצה לכתוב ה AI כותב טוב יותר. מי צריך אותי שם בכלל?
בואו נתחיל בלשים את הקלפים על השולחן: ג'מיני יודע היום לכתוב משחק סנייק יותר טוב ויותר מהר ממה שאני כותב. קלוד כתב לי משחק כרטיסיות ללימוד ספרדית עם מנגנון Spaced Repetition כשכל המידע שמור בקבצי טקסט והתרגול משורת הפקודה (ראסט כמובן). לא יהיה הזוי להגיד שכבר היום או בעתיד המאוד קרוב מנועי AI יוכלו לפתור כל תרגיל תכנות של בית ספר יותר טוב מהתלמידים וכנראה גם יותר טוב מהמורה.
עכשיו מה זה אומר עלינו?
1. מה יותר קל
עברו מזמן הימים בהם אנחנו צריכים להזיע רק כדי שתוכנית תתקמפל, תרוץ או אפילו תחזיר תשובה נכונה. יש לך בעיית קומפילציה? תדביק אותה ל AI ותקבל הסבר מלא לבעיה (כולל אפשרות לשאול שאלות המשך). התוכנית התרסקה בגלל בעיית זכרון? ה AI ימצא לך את הטעות. התוכנית לא החזירה את התשובה הנכונה? ה AI יסביר למה. התוכנית נראית עובדת? בוא ניתן ל AI לקרוא ולוודא שהכל נכון ב 100% ולהציע שיפורים. והדובדבן על הקצפת - אחרי שכבר סיימתי את כל התרגילים אני יכול לבקש מ AI לייצר לי קבוצה נוספת של תרגולים כדי לוודא שהבנתי הכל.
מי שרוצה ללמוד יכול לקבל היום מורה פרטי 24/7 שמסביר כל פרט ומכיר את כל ההיסטוריה. אז נכון מנועי AI (לדעתי) לא מספיק טובים בבניית סילבוס או בהסבר מאפס, אבל בתור מוצר משלים לקורס הם משפרים כל חוויה לימודית.
2. מה יותר קשה
הבעיה שאנחנו לא מצליחים לעצור שם. החוויה הלימודית האנושית של בוגרי מערכת החינוך היא מרדף אחרי הצלחות קטנות, מרוץ כדי לסמן V ולהצליח במבחן. בעולם של AI זאת בעיה, כי כל תרגיל לימודי שתנסו לעשות ה AI יכול לפתור בשבילכם יותר מהר.
הבעיה הזאת דומה לבעיה של תלמידי יסודי עם מחשבון. הם לא מבינים למה להתאמץ לפתור תרגיל חשבון בלי מחשבון ואנחנו לא מבינים למה להתאמץ לכתוב תוכנית בלי AI. אבל ההבדל הוא תהומי: תלמידי בית ספר יסודי לומדים כי הם יודעים שבמבחן המורה לא תתן להם להשתמש במחשבון, וכי הם עוד קטנים. מי שלומד תכנות חושב על אופציות לתעסוקה וכרגע קשה לו מאוד לראות איזה ערך הוא יקבל מלימודי תכנות. "מה זה מה שאני אעשה כל היום? אגיד ל AI איזה קוד לכתוב?".
ה AI, בכך שהופך את לימודי התכנות להרבה יותר קלים, מוריד משמעותית מהמוטיבציה ללמוד. בגלל שאנחנו לא יודעים איך יראו החיים המקצועיים של מפתחי תוכנה בעוד שנתיים אנחנו מרגישים שקשה להתחייב וללמוד תכנות, שאולי לא יהיה בו צורך.
3. ובכל זאת
מתכנתים היום שעובדים עם AI מתחלקים ל-2. יש את מי שמשתמש ב AI כדי להשתפר, מבין כל שורה שה AI כותב ודואג שה AI יכתוב את הקוד שהוא היה כותב בעצמו. כן ה AI כותב בדקה משחק סנייק שהיה לוקח לי יום לכתוב וזה מדהים, אבל בגלל שכתבתי כבר משחקי סנייק דומים אני יכול להסתכל על משחק הסנייק שה AI כתב ולוודא שהוא זהה למה שאני הייתי כותב. כן ה AI כותב אלף בדיקות יותר מהר ממה שלוקח לי לשים כוס קפה, אבל מספיק לי לרוץ על הבדיקות האלה בעין כמה דקות כדי להבין אם הוא היה בכיוון או אם צריך להעיף את כל הבדיקות ולייצר אותן מחדש עם פרומפט יותר מדויק.
סוג שני של מפתחים מעדיפים לדלג על הקוד ולהתמקד ב Spec בצד אחד וב Output בצד שני. הם ינסחו יחד עם ה AI מפרט בדיקות מדויק לאותו משחק סנייק ואז יוודאו שהקוד עושה מה שצריך לפי המפרט. הם לא רוצים לדעת מה כתוב שם וממילא מרגישים שזה בזבוז זמן. לא צריך ללמוד מה זה עץ אדום שחור ומתי להשתמש בו במערכת אמיתית, מספיק לאפיין ל AI מה רמת הביצועים הנדרשת ושה AI יבחר איזה מבנה נתונים יתאים.
וצריך להגיד ביושר, אנחנו לא יודעים איך יראו החיים המקצועיים של מפתחי תוכנה בעוד שנתיים, ארבע או שמונה שנים, ואם הם יהיו יותר דומים לתיאור הראשון או השני. כל תיאור מתאים לעבודה אחרת, ואנחנו צריכים לבחור "מה אנחנו רוצים להיות" בלי לדעת אם הדבר שנבחר בכלל יהיה קיים כשנסיים את הלימודים.
ובכל זאת, שני התיאורים כן עוזרים לנו לתכנן קצת יותר בבירור את ההמשך. הנה הנקודות המרכזיות שהייתי משאיר בראש:
סיכוי טוב שבעשור הקרוב נמשיך לראות את שני סוגי התפקידים. יהיו לא מעט אנשים שייכנסו לקוד ואם אתם אוהבים את ההיבט הטכני של איך דברים בנויים ועובדים זה מסלול שכדאי לקחת. יש פה גם הרבה כיף. יהיו גם לא מעט אנשים שיאפיינו מערכות ופיצ'רים לסוכני AI ואם אתם מסוג האנשים שאוהבים לתכנן מה לבנות החיים שלכם כנראה יהיו הרבה יותר מעניינים בזכות ה AI. היום אנחנו קוראים לתפקידים מהסוג הראשון מפתחי תוכנה ומהסוג השני מנהלי מוצר, אבל ההיבטים הספציפיים של כל תפקיד הולכים בוודאי להשתנות.
אם העולם של פיתוח תוכנה מעניין אתכם כדאי להסתכל על AI בתור "מורה" ולא בתור "עובד". אתם לא בתחרות איתו, אתם כן צריכים להבין כל שורת קוד ולהיות מסוגלים לכתוב כל מערכת בעצמכם.
מפתחי תוכנה עדיין לומדים הכי טוב דרך הקלדה. AI לא משנה את זה. כדאי לחשוב על AI כמו ספר לימוד ולא כמו מחשבון.
ולחבר מהפתיח הייתי אומר - אתה צודק. כל מה שאתה כותב היום ה AI כותב טוב יותר. כרגע מבחוץ זה נראה כאילו AI כותב קוד יותר טוב ויותר מהר מכל האנשים שאתה מכיר וקשה להבין למה צריך מתכנתים בעולם. אבל דברים שרואים מכאן לא רואים משם והאמת היא שהבנה מערכתית, היכרות לעומק עם עולם פיתוח התוכנה ובעיקר יכולת ניתוח וחשיבה עם המושגים בעולם זה היא עדיין רחוקה מהיכולות של מערכות AI. במובן מסוים AI העלה את הרף והגביר את קצב הלימוד האפשרי. בזכות ה AI אתה לומד יותר מהר, אבל כך גם כל המתחרים שלך שמתמודדים על אותם תפקידים בתעשייה.
ובאותו נושא שווה לקרוא גם את הפוסט האחרון של הסולידית: https://www.hasolidit.com/וייב-קודינג-לעצמאות-כלכלית. שאלת המפתח שלה:
"אם הדיוטה כמוני יכולה “לשאול” מיומנות בהינף רגע, יכולת שאחרים השקיעו שנים כדי לרכוש ולפתח, האם עוד אפשר בכלל להתייחס אליה כמיומנות?"
אני מבין למה זה נראה ככה מבחוץ. מבפנים אנחנו יודעים שרוב מוחלט של המפתחים בתעשייה לא בונים מערכות שאפשר להחליף עם Vibe Coding. כשהתחיל טרנד ה Outsource חבר הזהיר אותי שעוד רגע לא יהיו בארץ מפתחי תוכנה כי הכל יעבור להודו. עברו כמעט 20 שנה ואנחנו עוד פה ועדיין כותבים קוד. כן וייב קודינג זה מדליק אבל זה רחוק מלאיים על העולם של פיתוח תוכנה.
מה דעתכם? אם הייתם מתחילים היום ללמוד תכנות הייתם מעדיפים לרוץ ולבנות פרויקטים עם AI בתור עובד או ללמוד מה עושה כל שורה עם AI בתור מורה? ולמה?