שלוש תובנות על פיתוח בעידן ה AI מהיוצר של Open Code
הקשבתי לראיון עם דקס רד, היוצר של אופןקוד בפודקסט של Pragmatic Engineer. בחור מרתק ואני ממליץ להקשיב לפרק הזה כשיש לכם זמן. מכל הדברים אני רוצה להתיחס ל-3 תובנות שהוא מעלה על פיתוח באמצעות AI היום, שלושה דברים שתמיד היו אבל היום עם ה AI הפכו משמעותיים בהרבה:
הכנסת פיצ'רים שלא באמת שווים את זה - מאחר וכל כך קל להוסיף פיצ'רים אנחנו מעלים הרבה יותר פיצ'רים במוצרים שלנו. הבעיה היא שכל פיצ'ר ימשיך ללוות אותנו שנים קדימה, אנשים אחרים יסתמכו עליו ונצטרך לתמוך בו. דקס העיד שאחרי שהם ניסו לרוץ מהר ולשבור דברים היום הצוות שלהם מחפש איך ליצור צווארי בקבוק ולהעלות פחות פיצ'רים למוצר כי הם גילו שעוד פיצ'רים לא הופכים את המוצר לטוב יותר.
קשה יותר לשלוט בפתרונות עקומים - פעם כשהיית צריך לבנות פיצ'ר שלא בדיוק התאים למערכת היית צריך לבחור אם לחשוב מחדש על חלקים גדולים במערכת או לבנות פתרון לא מדויק ולעקם את המערכת כדי שזה יעבוד. היום בפיתוח עם AI הסוכן עושה את זה בשבילך ולסוכני קידוד יש Bias ליצירת הפתרונות העקומים. התוצאה היא שהרבה פעמים אנחנו לא יודעים שנבחר פתרון עקום ולא חושבים עד הסוף על ההשלכות ומקרי הקצה. יותר מזה, מרגע שנבחר הפתרון העקום סוכני קידוד ישתמשו ב Bias השני שלהם לתאימות אחורה וימשיכו לבנות עוד שכבות של פיצ'רים על גבי אותו פתרון עקום וכך כשאנחנו מזהים את הבעיה עלול להיות מאוחר מדי לתקן אותה.
עלינו להשקיע יותר זמן בניקוי הקוד - התוצאה המתבקשת של שתי הנקודות הראשונות. סוכני קידוד שרצים חופשי יבנו אינסוף פיצ'רים כי אין להם יכולת לסנן ויכניסו פתרונות עקומים למערכת עבור כל פיצ'ר כזה. הדרך היחידה להשתלט על הכאוס היא ליצור צווארי בקבוק מלאכותיים ולהשקיע יותר זמן בניקוי הקוד. ניקוי כאן הכוונה לראות פתרון עקום, לחשוב מחדש על המערכת כדי להגיע לפתרון הנכון ואז להשתמש ב AI כדי לבצע Refactor לחלק גדול מהקוד.
אני רוצה לסיים בדוגמה קצרה מהפרויקט שלי לאותו רעיון של פתרונות עקומים. קומיט:
https://github.com/ynonp/langlets-rails/commit/24f9d380e593a2886f8163cbf989c9405cbc7402
רציתי להוסיף ל langlets כפתור לעבור בין "מצב בהיר" ל"מצב כהה". באיטרציה הראשונה הסוכן שם כפתור מרחף בצד ימין למטה של המסך ואני ביקשתי להעביר את הכפתור לשורת הכותרת.
התוצאה - הסוכן כתב את הכפתור בשורת הכותרת וגם השאיר את הקוד שמצייר את הכפתור המרחף בצד ימין למטה. אז הוא הוסיף משתנה בשם suppress_floating_theme_toggle עם ערך ברירת מחדל "אמת" שגורם לתבנית להסתיר את אותו כפתור מרחף. בלי ניקוי של הקוד הכפתור הזה היה נשאר ומופיע מדי פעם במסכים חדשים פשוט בגלל שמישהו שכח להגדיר את המשתנה. ניקוי של הקוד הוא קריטי בדיוק בגלל אותן התנהגויות מובנות של סוכני קידוד.