AI ಕೋಡಿಂಗ್ ಏಜೆಂಟ್‌ಗಳಿಗೆ ಪ್ರಾಂಪ್ಟ್‌ಗಳಿಗಿಂತ ಟೆಸ್ಟ್‌ಗಳೇ ಹೆಚ್ಚು ಬೇಕು

ನಾನು 25 ವರ್ಷಗಳಿಂದ ಸಾಫ್ಟ್‌ವೇರ್ ಬರೆಯುತ್ತಿದ್ದೇನೆ. ನನ್ನ ಇಡೀ ವೃತ್ತಿಜೀವನಕ್ಕಿಂತ ಕಳೆದ ಎಂಟು ತಿಂಗಳುಗಳಲ್ಲಿ ನನ್ನ ಕೆಲಸದ ವಿಧಾನವು (workflow) ಹೆಚ್ಚು ಬದಲಾಗಿದೆ.

AI ಕೋಡಿಂಗ್ ಪರಿಕರಗಳು ಮೊದಲು ರಿಫ್ಯಾಕ್ಟರಿಂಗ್ (refactoring) ಅಥವಾ ದೋಷಗಳನ್ನು ವಿವರಿಸುವಂತಹ ಸಣ್ಣ ಕೆಲಸಗಳಿಗೆ ಮಾತ್ರ ಬಳಕೆಯಾಗುತ್ತಿದ್ದವು. AI ಬಳಸಿ ದೊಡ್ಡ ಫೀಚರ್‌ಗಳನ್ನು ನಿರ್ಮಿಸುವುದು ಕಷ್ಟಕರವಾಗಿತ್ತು.

ಈಗ ಪರಿಸ್ಥಿತಿ ಬದಲಾಗಿದೆ. ಆಧುನಿಕ ಏಜೆಂಟ್‌ಗಳು ಒಂದು ನಿರ್ದಿಷ್ಟ ಲೂಪ್ ಅನ್ನು ಅನುಸರಿಸುತ್ತವೆ:

  • ಕೋಡ್ ಓದುವುದು.
  • ಕೋಡ್ ಬದಲಾಯಿಸುವುದು.
  • ಕಮಾಂಡ್ ರನ್ ಮಾಡುವುದು.
  • ಯಾವುದು ವಿಫಲವಾಯಿತು ಎಂದು ನೋಡುವುದು.
  • ಅದನ್ನು ಸರಿಪಡಿಸುವುದು.
  • ಪುನರಾವರ್ತಿಸುವುದು.

ಈ ಲೂಪ್ ಶಕ್ತಿಯುತವಾಗಿದೆ, ಆದರೆ ಏಜೆಂಟ್‌ಗಳು ವಿಜುವಲ್ ಇಂಟರ್‌ಫೇಸ್‌ಗಳೊಂದಿಗೆ (visual interfaces) ಹೆಣಗಾಡುತ್ತವೆ. ಒಂದು ಬಟನ್ ಕೆಲಸ ಮಾಡುತ್ತಿದೆಯೇ ಎಂದು ನೋಡಲು ಅವು UI ಮೂಲಕ ವಿಶ್ವಾಸಾರ್ಹವಾಗಿ ಕ್ಲಿಕ್ ಮಾಡಲು ಸಾಧ್ಯವಿಲ್ಲ.

ನಾನು ನನ್ನ ವಿಧಾನವನ್ನು ಬದಲಾಯಿಸಿದೆ. ನಾನು ಹೊಸ ಫೀಚರ್‌ಗಳನ್ನು ಮೊದಲು ಕಮಾಂಡ್ ಲೈನ್‌ನಿಂದ ಕೆಲಸ ಮಾಡುವಂತೆ ನಿರ್ಮಿಸುತ್ತೇನೆ.

ಏಜೆಂಟ್‌ಗೆ "ಈ ಸ್ಕ್ರೀನ್ ನೋಡು" ಎಂದು ಕೇಳುವ ಬದಲು, ನಾನು ಅದಕ್ಕೆ ಒಂದು ಕಮಾಂಡ್ ನೀಡುತ್ತೇನೆ:

  • npm run test:feature-x
  • node scripts/run-new-feature-client.js

ಏಜೆಂಟ್‌ಗಳಿಗೆ ಕಮಾಂಡ್‌ಗಳು ಎಂದರೆ ಇಷ್ಟ. ಇದು ಅವುಗಳಿಗೆ ಕಾರ್ಯಗತಗೊಳಿಸಬಹುದಾದ ಫೀಡ್‌ಬ್ಯಾಕ್ ಲೂಪ್ ಅನ್ನು ನೀಡುತ್ತದೆ.

ನನ್ನ ಪ್ರಸ್ತುತ ಕೆಲಸದ ವಿಧಾನ ಹೀಗಿದೆ:

  • ಮಾರ್ಕ್‌ಡೌನ್ (Markdown) ಫೈಲ್‌ನಲ್ಲಿ ಫೀಚರ್ ಅನ್ನು ಯೋಜಿಸುವುದು.
  • ಟೆಸ್ಟ್ ಕ್ಲೈಂಟ್ ಅಥವಾ ಯೂನಿಟ್ ಟೆಸ್ಟ್ ರಚಿಸುವುದು.
  • ಸ್ಪಷ್ಟವಾದ ಟೆಸ್ಟ್ ಕೇಸ್‌ಗಳನ್ನು ವ್ಯಾಖ್ಯಾನಿಸುವುದು.
  • ಏಜೆಂಟ್‌ಗೆ ಫೀಚರ್ ಅನ್ನು ಅಳವಡಿಸಲು (implement) ಬಿಡುವುದು.
  • ಏಜೆಂಟ್ ಪದೇ ಪದೇ ಟೆಸ್ಟ್‌ಗಳನ್ನು ರನ್ ಮಾಡಲು ಬಿಡುವುದು.
  • ಫಲಿತಾಂಶಗಳನ್ನು ಪರಿಶೀಲಿಸುವುದು.

ಎಚ್ಚರಿಕೆ: ನೀವು ಏಜೆಂಟ್‌ಗೆ "ಎಲ್ಲಾ ಟೆಸ್ಟ್‌ಗಳು ಪಾಸಾಗುವಂತೆ ಮಾಡು" ಎಂದು ಹೇಳಿದರೆ, ಅದು ಅದನ್ನು ಮಾಡುತ್ತದೆ. ಯಶಸ್ವಿಯಾಗಲು ಅದು ಸಾಫ್ಟ್‌ವೇರ್ ಎಂಜಿನಿಯರಿಂಗ್ ನಿಯಮಗಳನ್ನು ಉಲ್ಲಂಘಿಸಬಹುದು. ಕೇವಲ ಫೇಲ್ಯೂರ್ ಮೆಸೇಜ್ ಬರದಂತೆ ತಡೆಯಲು ಅದು ದುರ್ಬಲವಾದ ಟೆಸ್ಟ್‌ಗಳನ್ನು ಬರೆಯಬಹುದು ಅಥವಾ ದೋಷಗಳನ್ನು ಮರೆಮಾಡಲು try/catch ಬ್ಲಾಕ್‌ಗಳನ್ನು ಬಳಸಬಹುದು.

ಇದೇ ಕಾರಣಕ್ಕೆ ಟೆಸ್ಟ್ ವ್ಯಾಖ್ಯಾನವು (test definition) ನನ್ನ ಅತ್ಯಂತ ಪ್ರಮುಖವಾದ ಮ್ಯಾನುಯಲ್ ಕೆಲಸವಾಗಿದೆ. ನೀವು ಈ ಕೆಳಗಿನವುಗಳನ್ನು ಕೇಳಲೇಬೇಕು:

  • ಈ ಟೆಸ್ಟ್ ನಿಜವಾದ ಬಳಕೆ ಪ್ರಕರಣವನ್ನು (use case) ಪ್ರತಿನಿಧಿಸುತ್ತದೆಯೇ?
  • ಇದು ನಿಜವಾದ ರಿಗ್ರೆಷನ್ ಅನ್ನು ಪತ್ತೆಹಚ್ಚುತ್ತದೆಯೇ?
  • ಇದು ತುಂಬಾ ಕಿರಿದಾಗಿದೆಯೇ?

AI ಯುಗದಲ್ಲಿ, ಟೆಸ್ಟ್-ಡ್ರಿವನ್ ಡೆವಲಪ್‌ಮೆಂಟ್ (TDD) ಕೇವಲ ಸುರಕ್ಷತಾ ಜಾಲವಲ್ಲ. ಅದು ಸ್ಟೀರಿಂಗ್ ವೀಲ್ ಇದ್ದಂತೆ. ಟೆಸ್ಟ್‌ಗಳಿಲ್ಲದೆ, ಏಜೆಂಟ್ ಕೇವಲ ನಂಬಲರ್ಹವಾದ ಕೋಡ್ ಅನ್ನು ನೀಡುತ್ತದೆ. ಉತ್ತಮ ಟೆಸ್ಟ್‌ಗಳಿದ್ದರೆ, ಏಜೆಂಟ್‌ಗೆ ಅಳೆಯಬಹುದಾದ ಗುರಿ ಇರುತ್ತದೆ.

ಇನ್ನೊಂದು ಸಲಹೆ: ಟೆಸ್ಟ್ ಔಟ್‌ಪುಟ್‌ಗಳಿಗಾಗಿ ರಚನಾತ್ಮಕ ಫೈಲ್‌ಗಳನ್ನು (structured files) ಬಳಸಿ. ಚಾಟ್‌ಗೆ ದೊಡ್ಡ ಲಾಗ್‌ಗಳನ್ನು ಹಾಕುವ ಬದಲು, ನಿಮ್ಮ ಸ್ಕ್ರಿಪ್ಟ್‌ಗಳು ಒಂದು ಫೋಲ್ಡರ್‌ನಲ್ಲಿ JSON ಅಥವಾ ಮಾರ್ಕ್‌ಡೌನ್ ಫೈಲ್‌ಗಳಿಗೆ ಬರೆಯುವಂತೆ ಮಾಡಿ.

ಇದು ಈ ಕೆಳಗಿನ ಕಾರಣಗಳಿಗಾಗಿ ಸಹಾಯ ಮಾಡುತ್ತದೆ:

  • ಏಜೆಂಟ್ ನೇರವಾಗಿ ಸಂಬಂಧಿತ ಡೇಟಾಕ್ಕೆ ಹೋಗುತ್ತದೆ.
  • ಸಂದರ್ಭವು (Context) ಚಿಕ್ಕದಾಗಿರುತ್ತದೆ.
  • ಟೋಕನ್ ಬಳಕೆ ಕಡಿಮೆಯಾಗುತ್ತದೆ.
  • ಇದು ಹಣವನ್ನು ಉಳಿಸುತ್ತದೆ.

AI ಏಜೆಂಟ್‌ಗಳು ಡೆವಲಪರ್‌ಗಳ ಬದಲಿಗೆ ಬರುವುದಿಲ್ಲ. ಅವು ನಮ್ಮ ಗಮನವನ್ನು ಬದಲಾಯಿಸುತ್ತವೆ. ನಾವು ಕೋಡ್ ಟೈಪ್ ಮಾಡಲು ಕಡಿಮೆ ಸಮಯ ಮತ್ತು ಈ ಕೆಳಗಿನವುಗಳಿಗಾಗಿ ಹೆಚ್ಚು ಸಮಯವನ್ನು ವ್ಯಯಿಸುತ್ತೇವೆ:

  • ಸಮಸ್ಯೆಗಳನ್ನು ಸ್ಪಷ್ಟವಾಗಿ ವಿವರಿಸುವುದು.
  • ಫೀಡ್‌ಬ್ಯಾಕ್ ಲೂಪ್‌ಗಳನ್ನು ರಚಿಸುವುದು.
  • ಗುಣಮಟ್ಟದ ಟೆಸ್ಟ್‌ಗಳನ್ನು ವ್ಯಾಖ್ಯಾನಿಸುವುದು.
  • ಆರ್ಕಿಟೆಕ್ಚರ್ ಅನ್ನು ಪರಿಶೀಲಿಸುವುದು.

AI ಅಭಿವೃದ್ಧಿಯ ಭವಿಷ್ಯವು ಅತ್ಯುತ್ತಮ ಪ್ರಾಂಪ್ಟ್‌ಗಳನ್ನು ಬರೆಯುವ ವ್ಯಕ್ತಿಗೆ ಸೇರಿದ್ದಲ್ಲ. ಅದು ಅತ್ಯುತ್ತಮ ಫೀಡ್‌ಬ್ಯಾಕ್ ಲೂಪ್‌ಗಳನ್ನು ನಿರ್ಮಿಸುವ ವ್ಯಕ್ತಿಗೆ ಸೇರಿದೆ.

Source: https://dev.to/stoefln6/ai-coding-agents-need-tests-more-than-prompts-11pm

Optional learning community: https://t.me/GyaanSetuAi