תשומת לב - המיומנות של העשור הבא
חברה נתנה ל AI לכתוב פיצ'ר שמוחק רווחים מהתחלה או סוף של שם לפני שמירה. ה AI כתב את הקוד וגם כתב לו את הבדיקה הבאה:
test 'Person name with only spaces is trimmed to empty' do
b = Person.new(name: ' ')
b.save
assert_equal('', b.name)
end
הבדיקה עברה ואני קיבלתי את ה PR. הבעיה היחידה? במערכת יש וולידציה שמוודאת ש name לא יכול להיות ריק.
בקריאה שניה ברור מה קורה פה - פקודת save של ריילס מחזירה ערך בוליאני אם השמירה הצליחה או נכשלה. אף אחד לא מסתכל על ערך זה ובעצם ה AI הפעיל save רק בשביל להטריג את הקוד שלו שמוחק רווחים ואז הוא מוודא שהרווח נמחק. אבל עכשיו השארנו בקוד מוקש. אם בעתיד AI או בן אדם ייתקל בבדיקה הזאת הם עלולים לחשוב שיכולים להיות אוביקטי Person עם שמות ריקים.
יש לא מעט מפתחי AI שיתנו ל AI לסדר את זה. אני מודה שאני לא אחד מהם ובמקרים כאלה אני נכנס לקוד ומתקן ידנית את השורה האמצעית:
test 'Person name with only spaces is trimmed to empty' do
b = Person.new(name: ' ')
b.valid? # trigger validation to trim b.name
assert_equal('', b.name)
end
בכל מקרה בעיניי זה היופי בפיתוח בעזרת AI - כשדברים עובדים אני יכול להתמקד באיך לשמור על הקוד נקי כי את עבודת ההקלדה עושה ה AI.