תשומת לב - המיומנות של העשור הבא

23/07/2025

חברה נתנה ל 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.