פיצוץ בין כוכבי של שורות קוד

מתגבשות לי מסקנות על פיתוח אפליקציות עם בינה מלאכותית

לחץ להאזנה

אהלן חברים,

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

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

אני יודע שיש הרבה סקרנות סביב היכולת הזו ולכן אני מרגיש הכרח או אולי יותר תחושת שליחות לשתף אתכם במסקנות שלי עד כה.

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

איפיון, איפיון, ועוד מלא פעמים איפיון…

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

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

תדעו מה אתם רוצים

תדעו מה שאתם רוצים. זה הנקודה. אבל מעבר ללדעת מה שאתם רוצים – חשוב שתדעו לאפיין את המודל של האפליקציה. כשאני אומר מודל אני מתכוון למבנה הנתונים שהאפליקציה שלכם מנהלת אותו. לקחתי את המילה ׳מודל׳ מהרעיון שנקרא Model View Controller שזו ארכיטקטורה של אפליקציות… לא משנה. הנקודה היא: אם אתם למשל רוצים לבנות רשת חברתית אז אתם צריכים להגדיר מה יש שם – למשל, פוסטים, תגובות, לייקים וכו׳. צריך לפרט מה כל מבנה מכיל. נניח – פוסט יש לו תאריך יצירה, מי יצר אותו, התוכן וכו׳ כל אלה זה מבנה הנתונים של האפליקציה, או במונח המקצועי – מודל. זה הדבר הכי חשוב (לדעתי) באיפיון. בנוסף צריך להגדיר איזה פעולות ניתן לבצע עם הנתונים האלה. למשל: ליצור פוסט, למחוק פוסט, לערוך פוסט. כמה שיותר שהדברים האלה יהיו מוגדרים מראש – חסכתם לכם בלאגן בעתיד.

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

לא לפחד להתחיל מחדש (אפילו 7 פעמים)

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

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

להבין מה קלוד עושה (אפילו בערך)

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

לדאוג תמיד לתת לו מספיק הקשר כדי לבצע את המשימה

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

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

לרוב העבודה תהיה הוספה של שורה או שתיים, ולכן כאשר אתם מקבלים קוד של קובץ שלם ומעתיקים אותו לתוך קובץ קיים – שימו לב למספר השורות. למשל אם היה לכם 140 שורות, ואחרי העתקה יש לכם 142 שורות – סיכוי טוב שזה בסדר. אם פתאום זה צונח ל 120 שורות: זה הזמן לחשוד מה קרה פה.

בקרת גרסאות (גיט)

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

תתייעצו עם קלוד על האסטרטגיה

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

לעבוד באופן מודולארי, ולהריץ בדיקות

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

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

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

סיכום

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


Comments

תגובה אחת על “מתגבשות לי מסקנות על פיתוח אפליקציות עם בינה מלאכותית”

  1. תמונת פרופיל של אלי נחומזון
    אלי נחומזון

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

כתיבת תגובה

האימייל לא יוצג באתר. שדות החובה מסומנים *