నా టీమ్ యొక్క AI కోడ్‌ను నేను ఆడిట్ చేశాను. మేము ఏమి కనుగొన్నామో ఇక్కడ ఉంది.

నా టీమ్ రికార్డు వేగంతో కోడ్ రూపొందించడానికి AIని ఉపయోగించింది. మేము ఫీచర్లను మూడింట ఒక వంతు సమయంలోనే విడుదల చేశాము. మా వేగం అద్భుతంగా కనిపించింది. మా టెస్ట్ కవరేజ్ 91% కి చేరుకుంది.

అప్పుడు మేము ఒక పెద్ద సమస్యను ఎదుర్కొన్నాము.

మేము పరిష్కరించడానికి కష్టమైన ప్రొడక్షన్ బగ్స్‌ను ఎదుర్కొన్నాము. ఒక సాధారణ రిఫ్యాక్టర్ (refactor) చేయడానికి నాలుగు రోజులకు బదులుగా నాలుగు వారాలు పట్టింది. కొత్తగా చేరిన ఉద్యోగి కోడ్ క్లీన్‌గా ఉందని, కానీ అర్థం చేసుకోవడం అసాధ్యమని నాకు చెప్పారు.

మేము కోడ్‌బేస్‌ను ఆడిట్ చేయడానికి మూడు వారాలు కేటాయించాము. ఏ స్కానర్ కూడా గుర్తించలేని టెక్నికల్ డెట్ (technical debt) ను మేము కనుగొన్నాము. ఆ డెట్ ఆర్కిటెక్చరల్ (architectural) మరియు బిహేవియరల్ (behavioral) పరంగా ఉంది.

AI టూల్స్ మీ ప్రాంప్ట్‌లోని తక్షణ సమస్యను పరిష్కరిస్తాయి. అవి కేవలం లోకల్ టాస్క్ కోసం మాత్రమే ఆప్టిమైజ్ చేస్తాయి. వాటికి మొత్తం సిస్టమ్ గురించి అవగాహన ఉండదు. మీరు త్వరలో ఏ సర్వీసులను తొలగించాలని ప్లాన్ చేస్తున్నారో వాటికి తెలియదు. మీ లాంగ్-టర్మ్ డేటా మోడల్స్ గురించి కూడా వాటికి తెలియదు.

దీని ఫలితం ఏమిటంటే, కోడ్ లోకల్‌గా సరిగ్గా ఉన్నప్పటికీ, గ్లోబల్‌గా చాలా బలహీనంగా (fragile) ఉంటుంది.

మేము నాలుగు నిర్దిష్ట నమూనాలను (patterns) కనుగొన్నాము:

  1. దాగి ఉన్న ఎడ్జ్ కేసెస్ (Hidden Edge Cases) AI మీరు ఇచ్చే టెస్ట్‌లను పాస్ అయ్యేలా కోడ్‌ను రాస్తుంది. తన సొంత తప్పుల కోసం టెస్ట్‌లను రాయడంలో అది అంత సమర్థవంతంగా ఉండదు.
  • పరిష్కారం: ఒక ఇంజనీర్ కోడ్‌ను చూడకుండానే తన సహోద్యోగికి వివరించాలి. ఒకవేళ వారు వివరించలేకపోతే, దానిని మెర్జ్ (merge) చేయకూడదు.
  1. టెస్ట్ కవరేజ్ థియేటర్ (Test Coverage Theater) AI ప్రస్తుతం ఉన్న కోడ్‌ను కవర్ చేసే టెస్ట్‌లను మాత్రమే జనరేట్ చేస్తుంది. సిస్టమ్ నిజంగా ఎలా ప్రవర్తించాలో దానికి తెలియదు.
  • పరిష్కారం: ప్రతి AI టెస్ట్ సూట్ ఒక అడ్వర్సేరియల్ రివ్యూ (adversarial review) పాస్ చేయాలి. రెండో ఇంజనీర్ ఆ కోడ్‌ను బ్రేక్ చేయడానికి ప్రయత్నించాలి.
  1. అదృశ్య కప్లింగ్ (Invisible Coupling) ప్రాంప్ట్‌ను త్వరగా పరిష్కరించడానికి AI డిపెండెన్సీలను (dependencies) జోడిస్తుంది. ఇది నోటిఫికేషన్ లాజిక్‌ను మీ బిల్లింగ్ లేదా యూజర్ మాడ్యూల్స్‌లో కలిపేయవచ్చు. దీనివల్ల తర్వాత సర్వీసులను వేరు చేయడం అసాధ్యమవుతుంది.
  • పరిష్కారం: AI ద్వారా పరిచయం చేయబడిన ఏ కొత్త డిపెండెన్సీనైనా సీనియర్ ఇంజనీర్ తప్పనిసరిగా ఆమోదించాలి.
  1. లోతైనది కాని ఎర్రర్ హ్యాండ్లింగ్ (Shallow Error Handling) AI తరచుగా ఎర్రర్ బ్లాక్‌లను రాస్తుంది, అవి చూడటానికి పూర్తిస్థాయిలో ఉన్నట్లు అనిపించినా, నిజమైన సిస్టమ్ ఫెయిల్యూర్స్‌ను ఎదుర్కోవడంలో విఫలమవుతాయి.
  • పరిష్కారం: మేము 'చేంజ్ టెస్ట్' (change test) ఉపయోగిస్తాము. మేము ఒక చిన్న మార్పు చేసినప్పుడు ఎన్ని ఫైళ్లు దెబ్బతింటాయో కొలుస్తాము. ఎక్కువ ప్రభావం (high impact) ఉంటే, అక్కడ కప్లింగ్ ఎక్కువగా ఉందని అర్థం.

AI శత్రువు కాదు. మీరు AIని ఒక జూనియర్ ఇంజనీర్‌లా చూడాలి. మీరు దానికి మార్గదర్శకత్వం అందించాలి, అంచనాలను (expectations) సెట్ చేయాలి మరియు దాని అవుట్‌పుట్‌ను సరిదిద్దడానికి మీ విచక్షణను ఉపయోగించాలి.

ఆ టూల్స్ టాస్క్‌లను చేయడంలో అద్భుతంగా ఉంటాయి. కానీ పూర్తి స్థాయి ఉద్యోగాన్ని (job) నిర్వహించడంలో అవి అద్భుతంగా ఉండవు.

మూలం: https://dev.to/emilywoodsnyc/i-spent-3-weeks-auditing-my-teams-ai-generated-code-here-is-what-we-found-1kj5

ఐచ్ఛిక అభ్యాస సమూహం: https://t.me/GyaanSetuAi