לקחתי על עצמי אתגר שנחשב בלתי אפשרי בעיני רבים:
ללמד אנשים ללא רקע בקוד
לבנות אפליקציות אמיתיות
במהלך קורס (אינטנסיבי) של שבועיים…
באמצעות בינה מלאכותית!
כל סעיף פה הוא אתגר בפני עצמו.
אני שומע ספקנות רבה סביבי (מאנשים שמבינים עניין) בנוגע לבינה מלאכותית: האם היא מייתרת את ההבנה בקוד? הרי פיתוח אפליקציות זה הרבה מעבר לכתיבה ממשית של קוד.. זה תכנון, זה ארכיטקטורה, זה לוגיקה, זה הרגישות לכל המרכיבים השונים, זה הכרת המערכות ועוד….
בנוסף – עולה השאלה השנייה ע״י אנשים רציניים מאוד בתעשייה – האמנם בינה מלאכותית מסוגלת להתמודד עם פרוייקט מלא, גדול, של החיים האמיתיים. מעבר ל״סנייק״ הנחמד, או ״אפליקציית ניהול משימות״ קטנה וחביבה שלא דורשת יותר מדי קוד. האם לבינה מלאכותית יש say משמעותי בפרוייקט של עשרות אלפי שורות? כאשר ברור שאין לה את היכולת להכיל את כולו בחלון הקונטקסט שלה?
וכמובן השאלה האחרונה שצצה ובצדק רב: איך יתכן בכלל ללמד את כל זה בתוך שבועיים?! קורסים של שנה ויותר שאנשים עושים כדי ללמוד פיתוח – האם ניתן לצמק אותם לתקופת זמן כזו??
אלו שאלות טובות מאוד. ולמעשה אין תשובה מוכנה, מכיון שאף אחד (כנראה) לא עשה את זה לפניי. זה בלתי אפשרי עד ש… זה באמת מצליח.
אבל מה שאני מגלה תוך כדי תנועה, ממקד את עצמי בזה, ומאמין מאוד זה —
א. לוגיקה תכנון ארכיטקטורה וכו׳ – זה בהחלט ידע נחוץ לפיתוח אפליקציות. ללא שום ספק. אבל זה ידע נרכש. כלומר זה הבנה אינטואיטיבית שכל אדם יכול לפתח דרך התבוננות ניסוי וטעיה. כמו ילד שבונה קוביות או משחק עם בקבוקים וצינורות באמבטיה מחבר דברים ורואה אותם זזים ומבין מה קורה….. מה שחסר זה הגישה – זה היכולת *לראות* את הדברים. לראות מעבר לקוד למספרים לפקודות ולטקסטים המפחידים האלה… כשמבינים מה קורה שם – זה פשוט הגיוני.
אנשים ללא רקע בקוד – לא ידעו פתאום בבת אחת לפתח אפליקציות בלי ללמוד משהו חדש, לעשות דרך, להתקדם… אבל השאלה אם הם רוצים ללמוד, האם הם סקרנים מספיק, האם יש להם גישה פתוחה לידע הזה או שהוא מרגיש להם עולם אחר, לא מובן ולא נגיש בעליל. זו השאלה.
זה לא משהו שהם ילמדו באופן מלא ביום אחד וגם לא בשבועיים (סעיף ג׳) אבל אם הדלת תיפתח בפניהם יכול להיווצר הקליק שאומר: ״אני רוצה לדעת לעשות משהו שבא לי לעשות, אני מבין את הבסיס כדי שאוכל לחקור לבד ולהתקדם״.
ב. האם לבינה מלאכותית יש יכולת להחזיק אפליקציות גדולות ואתגרים מורכבים: יש טעות במחשבה שבינה מלאכותית עושה את העבודה במקומנו. החוכמה זה לשלב אותה בתהליכים, לתת לה את המקום והתפקיד שלה בתוך מערך מסויים. יחס הכוחות בין הבינה המלאכותית אלינו הוא כמו מנהל לעובד. מנהל פיתוח של תוכנה – מחזיק בראש את ההבנה המלאה לגבי כל הארכיטקטורה, הוא מבין כל איזור בקוד מה הוא עושה, הוא מבין את הרכיבים, המודולים, השונים, איך הם מתחברים יחד ומביאים לתוצאה הרצויה. המתכנת הזוטר – גם אם הוא מאוד מוכשר בכתיבת קוד – לא תמיד מחזיק את כל הסיפור הזה בראש, וזה עדיין לא מפריע לו לקבל הנחיות מהמנהל ולהתרכז באיזור ספציפי של הפיתוח.
דוגמא פשוטה: יש מתכנתים שעוסקים בניהול הנתונים, יש מתכנתים שעוסקים בתשתיות, יש מתכנתים שעוסקים בקוד שרת, יש מתכנתים שעוסקים בעיצוב הממשק… כל אחד מתמחה בתחומו ועדיין זה לא מפריע לפיתוח אפליקציה מלאה – כמובן בתנאי שיש מנהל מעל הכל שיודע לתמרן את הכשרונות השונים, לחלק להם את המשימות, לתת להם את הידע הנחוץ להם, ולעשות אינטגרציה נכונה להכל. במקרה שלנו הבינה המלאכותית – ובאופן ספציפי יותר: קלוד, מתמחה בהכל. הוא מומחה בעיצוב ממשק, מומחה בקוד שרת, מומחה בנתונים, מומחה בתשתיות… אבל הוא לא יכול לחבר הכל יחד. פשוט בכל פעם שנקרא לו – הוא יבוא בכובע אחר. אפשר גם להתייעץ איתו כיועץ מומחה כללי לארכיטקטורה אבל אז הוא יהיה בכובע יועץ. בסוף הוא לא יחזיק את העבודה בשלמותה – אבל אם נבקש ממנו הוא יסביר לנו איך לעשות אותה.
בשורה התחתונה: אנחנו מנהלי הפרוייקט. כל מה שחסר לנו – אפשר להתייעץ עליו. אבל האחריות היא עדיין עלינו. אנחנו צריכים להבין את הרכיבים השונים, אנחנו צריכים לקבל את ההחלטות הגדולות. ושוב – אנחנו לא צריכים להיות מומחים, כי אפשר להתייעץ, אבל אנחנו צריכים לבנות תמונה בראש – להבין, ללמוד, לחקור… ולהוביל (!) זה למעשה תהליך ניהול קלאסי. אין מנהל שמבין באופן טבעי בכל התחומים שהוא מנהל, אבל הוא לומד כל הזמן, הוא מתייעץ, בסוף יש לו תמונה ברורה מספיק והוא מחליט. ככה זה בדיוק העבודה על פרוייקט עם קלוד. תופתעו כמה מהר אפשר ללמוד דברים חדשים וכבר לנהל אותם – בתוך התהליך הזה…
כלל ברזל בעבודה עם קלוד (ובכלל בינה מלאכותית) ובמיוחד עם קוד: חייבים חייבים לוודא שקלוד *יודע את ההקשר* של המשימה שהוא מבצע כרגע. אם למשל ביקשנו ממנו לכתוב רכיב מסויים לאפליקציה – האחריות שלנו להבין את הרגישויות של הרכיב הזה, מה הממשקים שלו, מה צריך להיות בנקודת הקצה, ומה הסטנדרט שהוא צריך למלא ביחס לשאר המערכת כדי שהוא יעבוד. בקיצור – אנחנו יודעים את ההקשר, ועלינו לוודא שגם קלוד יודע אותו כאשר הוא מציע לנו קוד. אם קלוד יודע את ההקשר – הוא יעשה עבודה מצויינת, גם בלי שננחה אותו במיוחד. הוא יפעל מתוך ההקשר הנכון בכיוון שראוי לפעול. אבל כאשר לקלוד חסרים פרטים קריטיים בהקשר של המשימה – הוא עלול לפעול בביטחון מוחלט כאילו הוא יודע מה הוא עושה – בעוד שלמעשה הוא יהרוס יותר מאשר יועיל. פה יש בעיה, אכן, וכדי לעשות את זה נכון נדרש מאיתנו ללמוד את המערכת שאיתה אנחנו מתעסקים ולהבין את הקשרים בין הרכיבים השונים. וגם: להתקדם ל-א-ט… כן. להאט את התהליך. נשמע מוזר בהקשר של בינה מלאכותית שכל היתרון שלה זה שהיא רצה מהר – אבל דווקא בגלל זה, דווקא בגלל שגם ככה הבינה המלאכותית מאיצה את התהליך – אנחנו יכולים להאט אותה בכח ועדיין …. לקבל המון יתרונות של מהירות שקיימים בה. לפעול לאט זה להנחות את קלוד – לא להציע קוד אלא קודם כל לתכנן ולשקף לנו את ההבנה שלו. אפשר גם לשאול אותו על נקודות שעלולות להיות בעייתיות, ושוב הוא יחבוש את כובע היועץ ויעזור לנו בזה…
רק אחרי שנוודא שאנחנו מבינים את האתגר ויש לנו את הפתרון – וקלוד קיבל חפיפה על הידע הנחוץ לו – נוכל להתקדם בבטחון. ואז זה אפשרי – כן. גם באפליקציות גדולות. ועם הזמן והנסיון לומדים לעשות את זה מהר יותר ומקבלים את הבטחון בקלות רבה יותר.
ג. האם אפשר ללמוד את כל זה בשבועיים????
ללמוד במובן של לדעת הכל עד הסוף? בוודאי שלא. אין מתכנת בעולם שיודע הכל, וכל המתכנתים הכי טובים – ממשיכים ללמוד מדי יום! וזה המגמה שאני רוצה ומעודד אליה עבור כל אחד שנכנס לתחום הזה. אם פתאום תלמיד מגלה שיש לו המון מה ללמוד – זה לא באג, זה פיצ׳ר! העולם של הקוד הוא כל כך עשיר וכל כך משוכלל ומאפשר שאיזה יופי שיש כל כך הרבה דברים שאפשר לעשות וממילא המון מערכות שצריך (ואפשר!) ללמוד.
אבל הבסיס הוא תמיד אותו בסיס. והידע איך לגשת למערכות, איך ללמוד אותן (עם או בלי בינה מלאכותית) זה הידע הנחוץ, ואת זה אני מתכוון להקצות בהתנסות של אותם שבועיים. את החיבור.
יש תלמידים, גם במחזור הראשון ועכשיו גם במחזור השני, שאני רואה איך הם קיבלו את החיבור ונשאבו פנימה, וזהו. אני לא צריך לגעת. רק מדי פעם הכוונות – להיות זמין לשאלות,וכו׳.. אבל מהר מאוד זה שלהם וכל החומר פתוח ברשת והם יתפתחו מפרוייקט לפרוייקט בעצמם. והמוטיבציה נמצאת בתוכם – כי מי לא רוצה לבנות דברים בעצמו ולחוות את המחשבה שלו הופכת למציאות. זה פשוט חוויה עצומה! הנקודה היא התיווך שלה. לתת לבנאדם את הכלי ביד, להראות לו איך משחקים איתו, ושירגיש שזה עובד לו, שהוא מצליח, שהוא יכול עכשיו ללכת לעוד אלף כיוונים שונים אם ירצה. זה עולם הפיתוח….
בשורה התחתונה – אני מאמין גדול. זה לא פשוט. אני שומע הרבה ספקות סביבי. גם מקולגות גם מתלמידים שמתקשים. אבל הערך שמתקבל פה בסוף הוא עצום לכן גם אם זה קשה – זה שווה. כל מה שנראה בלתי אפשרי – הופך לאפשרי ברגע שהוא קורה. אנחנו בעולם חדש ולכן עדיין לא רואים את זה מספיק, אבל בעתיד הלא רחוק זה יהיה ברור הרבה יותר לכולם.
התמונה: על פי המלצה של שמואל רונן על לורה בסגנון פילם של פעם.. תודה <3
כתיבת תגובה