יש מעט מאוד מושגים שתפסו כל כך מהר כמו Vibe Coding, תכנות בסיוע בינה מלאכותית: אתה אומר לבינה מה אתה רוצה והיא אצה-רצה לכתוב את הקוד עבורך. כמו דברים רבים אחרים שקשורים בבינה מלאכותית, בהתחלה זה היה עקום ודי דפוק ובהדרגה זה הולך ומשתפר. זה מושך פנימה לא רק מתכנתים שמשתמשים בכלים האלו במסגרת העבודה שלהם, אלא גם אנשים רגילים, אנשים כמו שאול אמסטרדמסקי.
שאול, שהוא חבר, צלל לאירוע עם כל הלב ובסדרה של ציוצים הבהיר שהוא בלע את הגלולה. בתגובה, העליתי ציוץ שמשווה את חוויית הוייב-קודינג לחוויה של משחק בקזינו, ציוץ שמנסה להסביר למה אנשים נשאבים פנימה. זה לא מקרי.

הציוץ הזה זכה לתגובות רבות ובהן תגובה של אמסטרדמסקי עצמו ששאל "תגיד, ניסית את זה?". האמת היא שניסיתי אבל בצורה מאוד שטחית והשאלה של שאול היא לגמרי במקום. קשה לומר משהו רציני בנוגע למשהו, אם אתה לא מתנסה בו בעצמך. אז החלטתי לצלול לעניין קצת יותר לעומק. בניגוד לשאול שמשתמש בקלוד-קוד, אני החלטתי להשתמש בג'מיני.
ביקשתי ממנו לייצר אפליקציית ווב שתאפשר לי להעתיק ציטוטים מעניינים שאני רואה בכתבות או במאמרים ואז לשמור אותם למסד נתונים. ביקשתי ממנו לייצר טופס שבו אוכל להוסיף את הציטוט, להוסיף קישור לציטוט, ולסווג את הציטוטים השונים לקטגוריות (נניח "בינה מלאכותית", "תרבות", "ספרות" וכן הלאה).
בתוך זמן קצר ובדומה לשאול, נשאבתי לעניין ובגרסה 21 הבנתי שאני בעצם יכול להחליף את אפליקציית Raindrop.io שבה אני משתמש, שבתורה החליפה את תוסף Pocket שחברת "מוזילה" סגרה פחות משנה. Raindrop מאפשרת לי לשמור קישורים במבנה של תיקיות: אני בונה תיקייה (נניח "האם יש בועה?") ואז שומר בתוכה מאמרים, מחקרים, כתבות ושאר קישורים. הקישורים נשמרים עם תצוגה מקדימה מה שמקל עליי להבין מה שמרתי.
בגרסה 36 החלטתי שאני מייבא את כל הקישורים שיש לי ב-Raindrop (שאותם ייבאתי מ-Pocket) אל האפליקציה החדשה שבניתי עם ג'מיני. יש 1,679 כאלו, תודה רבה. ג'מיני עשה עבודה מדהימה: ייבא את התיקיות אל תוך האפליקציה שהוא בנה בצורה מושלמת תוך שהוא מחקה את המבנה המקורי.
היתה רק בעיה אחת. ב-Raindrop ניתן לבנות תיקיות בתוך תיקיות. היתה לי שם תיקייה בשם DONE שהיא תיקייה שמכילה תתי-תיקיות של דברים שהפכתי אותם לפרקים ב"עושים טכנולוגיה". ג'מיני אמר לי שזו לא בעיה, הוא ידע להתמודד עם הדבר הזה. ועדיין היתה בעיה אחת, בעיית תצוגה: איך מציגים את תתי-התיקיות בתוך תיקיית DONE. אחרי הכל, אלו לא קישורים אלא יצוג גרפי של תיקיות שכאשר אני לוחץ על אחת מהן, אני נכנס לתוכה ורק אז רואה את הקישורים שהיא מכילה. זה מה שהוא עשה:

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

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

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

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

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

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

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

על התוצאה הזו שנראית כאן, הוא נתקע במשך 15 ניסיונות נוספים. לא משנה כמה פעמים ביקשתי ממנו שיחזור אחורה, שיראה את הדבר הזה עם שני הטורים ויהפוך אותם לשישה, שום דבר לא עזר. פעם אחרי פעם קיבלתי את זה.
ג'מיני בנה אפליקציה מאפס, מכלום, יש בה 650 שורות קוד ב-HTML ועוד 170 שורות קוד בקובץ PHP. הוא אפשר לי להעלות קבצים בצמוד לכל קישור (נניח קובץ PDF), הוא פתר את בעיית התצוגה המקדימה, הוא אפשר לי להוסיף ציטוטים, למחוק אותם, להוסיף תיקיות, למחוק אותן, לייצר עץ של תתי-תיקיות, אבל את הבעיה הזו – לקחת שני טורים ולהפוך לשישה – הוא לא הצליח לפתור ולא משנה כמה הוא ניסה.
פתחתי חלון צ'אט חדש. אמרתי שאולי הוא פשוט התעייף. בכל זאת, אנחנו בגרסה 54. העליתי את הקוד עם שני הטורים, אמרתי לו שינסה מחדש. הוא לא הצליח.
בחלוף שש גרסאות נוספות ואינסוף טוקנים שהוא ייצר, הוא פתר את הבעיה.

התחלתי את הפרויקט הזה בסביבות 11 בבוקר, סיימתי אותו ב-1 בלילה.
חלק גדול מהזמן אתה מחכה, מחכה שהוא ייצר את התוצאה, ובחלק מהזמן אתה מנסה, מסביר, מתחנן, נוזף, קורא התנצלויות מעומק הלב, הסברים על הסברים שבהם הוא מסביר למה למה הוא נכשל ולמה עכשיו, ממש עכשיו, הכל יעבוד.
בסך הכל מדובר בקסם, קסם ממש. בניתי (עאלק "בניתי") אפליקציית ווב בהתאם לדרישות שלי ועכשיו היא ממש מוצלחת בעיניי, שימושית, אבל….
קודם כל אני מבין למה זה לוקח הרבה זמן. חוץ מזה אני מבין למה זה שואב אותך. זה כמו לעבוד עם מתכנת שאתה אומר לו מה אתה רוצה והוא עושה. "תזיז לפה, תשנה את הפונט, תחליף את הצבע, תוסיף לי עוד פונקציה, תשנה את תיבת הדיאלוג" – והוא עושה! עד שהוא לא עושה.
וכמובן שבעיית היסוד היא שאין לי שום סיכוי להבין האם בתוך הקוד הזה אין בעצם בעיה קריטית שאיכשהו תעלה לי ביוקר. אנסה להוסיף משהו והכל יתרסק, אנסה למחוק משהו ומסיבה כלשהי הכל ימחק, מישהו ינצל את האפליקצייה האומללה הזו כדי לפרוץ לאתר כולו. אין לי דרך לוודא, להבין באמת מה הוא עשה.
אפשר לומר שגם כאשר אתה עובד עם מתכנת אנושי אתה בידיים שלו – וזה כמובן לגמרי מדויק, ועדיין… למה אני מרגיש שיש כאן הבדל? למה אני בכל זאת מרגיש שיש כאן הבדל מהותי, יסודי. רק בגלל שזה חדש, שונה, אחר, בגלל שזו מכונה?
זה רק אני?
כתיבת תגובה