ನಾನು ನನ್ನ ತಂಡದ AI ಕೋಡ್ ಅನ್ನು ಆಡಿಟ್ ಮಾಡಿದೆ. ನಮಗೆ ಏನು ಸಿಕ್ಕಿತು ಎಂಬುದು ಇಲ್ಲಿದೆ.

ನನ್ನ ತಂಡವು ದಾಖಲೆ ವೇಗದಲ್ಲಿ ಕೋಡ್ ನಿರ್ಮಿಸಲು AI ಅನ್ನು ಬಳಸಿತು. ನಾವು ಮೂರನೇ ಒಂದು ಭಾಗದಷ್ಟು ಸಮಯದಲ್ಲೇ ಫೀಚರ್‌ಗಳನ್ನು ಬಿಡುಗಡೆ ಮಾಡಿದೆವು. ನಮ್ಮ ವೇಗವು ಅದ್ಭುತವಾಗಿತ್ತು. ನಮ್ಮ ಟೆಸ್ಟ್ ಕವರೇಜ್ 91% ತಲುಪಿತು.

ನಂತರ ನಾವು ಅಡೆತಡೆ ಎದುರಿಸಿದೆವು.

ನಾವು ಸರಿಪಡಿಸಲು ಕಷ್ಟವಾಗುವ ಪ್ರೊಡಕ್ಷನ್ ಬಗ್‌ಗಳನ್ನು (production bugs) ಎದುರಿಸಿದೆವು. ಒಂದು ಸರಳ ರಿಫ್ಯಾಕ್ಟರ್ (refactor) ಮಾಡಲು ನಾಲ್ಕು ದಿನಗಳ ಬದಲಿಗೆ ನಾಲ್ಕು ವಾರಗಳು ಬೇಕಾದವು. ಹೊಸದಾಗಿ ಸೇರಿದ ಉದ್ಯೋಗಿಯೊಬ್ಬರು ಕೋಡ್ ಸ್ವಚ್ಛವಾಗಿದೆ ಆದರೆ ಅರ್ಥಮಾಡಿಕೊಳ್ಳಲು ಅಸಾಧ್ಯ ಎಂದು ನನಗೆ ಹೇಳಿದರು.

ನಾವು ಕೋಡ್‌ಬೇಸ್ ಅನ್ನು ಆಡಿಟ್ ಮಾಡಲು ಮೂರು ವಾರಗಳನ್ನು ಕಳೆದವು. ಯಾವುದೇ ಸ್ಕ್ಯಾನರ್ ಪತ್ತೆಹಚ್ಚಲು ಸಾಧ್ಯವಾಗದ ತಾಂತ್ರಿಕ ಸಾಲವನ್ನು (technical debt) ನಾವು ಕಂಡುಕೊಂಡೆವು. ಆ ಸಾಲವು ಆರ್ಕಿಟೆಕ್ಚರಲ್ (architectural) ಆಗಿತ್ತು ಮತ್ತು ಬಿಹೇವಿಯರಲ್ (behavioral) ಆಗಿತ್ತು.

AI ಪರಿಕರಗಳು ನಿಮ್ಮ ಪ್ರಾಂಪ್ಟ್‌ನಲ್ಲಿರುವ ತಕ್ಷಣದ ಸಮಸ್ಯೆಯನ್ನು ಪರಿಹರಿಸುತ್ತವೆ. ಅವು ಸ್ಥಳೀಯ ಕಾರ್ಯಕ್ಕಾಗಿ (local task) ಸುಧಾರಣೆ ಮಾಡುತ್ತವೆ. ಅವು ಇಡೀ ವ್ಯವಸ್ಥೆಯನ್ನು ಅರ್ಥಮಾಡಿಕೊಳ್ಳುವುದಿಲ್ಲ. ನೀವು ಯಾವ ಸೇವೆಗಳನ್ನು ಶೀಘ್ರದಲ್ಲೇ ಅಳಿಸಲು ಯೋಜಿಸಿದ್ದೀರಿ ಎಂಬುದು ಅವುಗಳಿಗೆ ತಿಳಿದಿಲ್ಲ. ನಿಮ್ಮ ದೀರ್ಘಾವಧಿಯ ಡೇಟಾ ಮಾಡೆಲ್‌ಗಳ ಬಗ್ಗೆ ಅವುಗಳಿಗೆ ತಿಳಿದಿಲ್ಲ.

ಇದರ ಪರಿಣಾಮವಾಗಿ ಕೋಡ್ ಸ್ಥಳೀಯವಾಗಿ ಸರಿಯಾಗಿರುತ್ತದೆ ಆದರೆ ಜಾಗತಿಕವಾಗಿ ಅಸ್ಥಿರವಾಗಿರುತ್ತದೆ (globally fragile).

ನಾವು ನಾಲ್ಕು ನಿರ್ದಿಷ್ಟ ಮಾದರಿಗಳನ್ನು ಕಂಡುಕೊಂಡೆವು:

  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 coupling) ಎಂದರ್ಥ.

AI ಶತ್ರುವಲ್ಲ. ನೀವು AI ಅನ್ನು ಜೂನಿಯರ್ ಎಂಜಿನಿಯರ್‌ನಂತೆ ಪರಿಗಣಿಸಬೇಕು. ನೀವು ಮಾರ್ಗದರ್ಶನ ನೀಡಬೇಕು, ನಿರೀಕ್ಷೆಗಳನ್ನು ನಿಗದಿಪಡಿಸಬೇಕು ಮತ್ತು ಔಟ್‌ಪುಟ್ ಅನ್ನು ಬದಲಾಯಿಸಲು ನಿಮ್ಮ ವಿವೇಚನೆಯನ್ನು ಬಳಸಬೇಕು.

ಪರಿಕರಗಳು ಕಾರ್ಯಗಳನ್ನು (tasks) ಮಾಡುವಲ್ಲಿ ಅತ್ಯುತ್ತಮವಾಗಿವೆ. ಆದರೆ ಕೆಲಸವನ್ನು (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