AI ਕੋਡਿੰਗ ਏਜੰਟਾਂ ਨੂੰ ਪ੍ਰੋਂਪਟਸ ਨਾਲੋਂ ਟੈਸਟਾਂ ਦੀ ਜ਼ਿਆਦਾ ਲੋੜ ਹੈ

ਮੈਂ 25 ਸਾਲਾਂ ਤੋਂ ਸਾਫਟਵੇਅਰ ਲਿਖ ਰਿਹਾ ਹਾਂ। ਮੇਰੇ ਕੰਮ ਕਰਨ ਦੇ ਤਰੀਕੇ (workflow) ਵਿੱਚ ਪਿਛਲੇ ਅੱਠ ਮਹੀਨਿਆਂ ਵਿੱਚ ਮੇਰੇ ਪੂਰੇ ਕਰੀਅਰ ਨਾਲੋਂ ਜ਼ਿਆਦਾ ਬਦਲਾਅ ਆਇਆ ਹੈ।

AI ਕੋਡਿੰਗ ਟੂਲ ਪਹਿਲਾਂ ਰੀਫੈਕਟਰੀਂਗ (refactoring) ਜਾਂ ਗਲਤੀਆਂ (errors) ਨੂੰ ਸਮਝਾਉਣ ਵਰਗੇ ਛੋਟੇ ਕੰਮਾਂ ਲਈ ਹੁੰਦੇ ਸਨ। AI ਨਾਲ ਵੱਡੀਆਂ ਵਿਸ਼ੇਸ਼ਤਾਵਾਂ (features) ਬਣਾਉਣਾ ਬਹੁਤ ਮੁਸ਼ਕਲ ਲੱਗਦਾ ਸੀ।

ਹੁਣ ਸਥਿਤੀ ਵੱਖਰੀ ਹੈ। ਆਧੁਨਿਕ ਏਜੰਟ ਇੱਕ ਖਾਸ ਲੂਪ (loop) ਦੀ ਪਾਲਣਾ ਕਰਦੇ ਹਨ:

  • ਕੋਡ ਪੜ੍ਹਨਾ।
  • ਕੋਡ ਬਦਲਣਾ।
  • ਇੱਕ ਕਮਾਂਡ ਚਲਾਉਣਾ।
  • ਦੇਖਣਾ ਕਿ ਕੀ ਫੇਲ੍ਹ ਹੋਇਆ।
  • ਇਸਨੂੰ ਠੀਕ ਕਰਨਾ।
  • ਦੁਹਰਾਉਣਾ।

ਇਹ ਲੂਪ ਸ਼ਕਤੀਸ਼ਾਲੀ ਹੈ, ਪਰ ਏਜੰਟ ਵਿਜ਼ੂਅਲ ਇੰਟਰਫੇਸ (visual interfaces) ਨਾਲ ਸੰਘਰਸ਼ ਕਰਦੇ ਹਨ। ਉਹ ਇਹ ਦੇਖਣ ਲਈ ਭਰੋਸੇਯੋਗ ਤਰੀਕੇ ਨਾਲ UI 'ਤੇ ਕਲਿੱਕ ਨਹੀਂ ਕਰ ਸਕਦੇ ਕਿ ਕੋਈ ਬਟਨ ਕੰਮ ਕਰ ਰਿਹਾ ਹੈ ਜਾਂ ਨਹੀਂ।

ਮੈਂ ਆਪਣਾ ਤਰੀਕਾ ਬਦਲ ਲਿਆ ਹੈ। ਮੈਂ ਨਵੀਆਂ ਵਿਸ਼ੇਸ਼ਤਾਵਾਂ ਇਸ ਤਰ੍ਹਾਂ ਬਣਾਉਂਦਾ ਹਾਂ ਕਿ ਉਹ ਪਹਿਲਾਂ ਕਮਾਂਡ ਲਾਈਨ (command line) ਤੋਂ ਕੰਮ ਕਰਨ।

ਏਜੰਟ ਨੂੰ "ਇਸ ਸਕ੍ਰੀਨ ਨੂੰ ਦੇਖੋ" ਕਹਿਣ ਦੀ ਬਜਾਏ, ਮੈਂ ਉਸਨੂੰ ਇੱਕ ਕਮਾਂਡ ਦਿੰਦਾ ਹਾਂ:

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

ਏਜੰਟਾਂ ਨੂੰ ਕਮਾਂਡਾਂ ਪਸੰਦ ਹਨ। ਇਹ ਉਹਨਾਂ ਨੂੰ ਇੱਕ ਐਗਜ਼ੀਕਿਊਟੇਬਲ ਫੀਡਬੈਕ ਲੂਪ (executable feedback loop) ਦਿੰਦਾ ਹੈ।

ਮੇਰਾ ਮੌਜੂਦਾ ਵਰਕਫਲੋ ਇਸ ਤਰ੍ਹਾਂ ਹੈ:

  • Markdown ਫਾਈਲ ਵਿੱਚ ਵਿਸ਼ੇਸ਼ਤਾ ਦੀ ਯੋਜਨਾ ਬਣਾਓ।
  • ਇੱਕ ਟੈਸਟ ਕਲਾਇੰਟ ਜਾਂ ਯੂਨਿਟ ਟੈਸਟ ਬਣਾਓ।
  • ਸਪਸ਼ਟ ਟੈਸਟ ਕੇਸਾਂ (test cases) ਨੂੰ ਪਰਿਭਾਸ਼ਿਤ ਕਰੋ।
  • ਏਜੰਟ ਨੂੰ ਵਿਸ਼ੇਸ਼ਤਾ ਨੂੰ ਲਾਗੂ ਕਰਨ ਦਿਓ।
  • ਏਜੰਟ ਨੂੰ ਵਾਰ-ਵਾਰ ਟੈਸਟ ਚਲਾਉਣ ਦਿਓ।
  • ਨਤੀਜਿਆਂ ਦੀ ਸਮੀਖਿਆ ਕਰੋ।

ਇੱਕ ਚੇਤਾਵਨੀ: ਜੇਕਰ ਤੁਸੀਂ ਕਿਸੇ ਏਜੰਟ ਨੂੰ "ਸਾਰੇ ਟੈਸਟ ਪਾਸ ਕਰੋ" ਕਹਿੰਦੇ ਹੋ, ਤਾਂ ਉਹ ਇਹ ਕਰ ਦੇਵੇਗਾ। ਸਫਲ ਹੋਣ ਲਈ ਉਹ ਸਾਫਟਵੇਅਰ ਇੰਜੀਨੀਅਰਿੰਗ ਦੇ ਨਿਯਮਾਂ ਦੀ ਉਲੰਘਣਾ ਕਰ ਸਕਦਾ ਹੈ। ਉਹ ਫੇਲ੍ਹ ਹੋਣ ਦੇ ਸੁਨੇਹੇ ਨੂੰ ਰੋਕਣ ਲਈ ਕਮਜ਼ੋਰ ਟੈਸਟ ਲਿਖ ਸਕਦਾ ਹੈ ਜਾਂ ਗਲਤੀਆਂ ਨੂੰ ਲੁਕਾਉਣ ਲਈ try/catch ਬਲਾਕਾਂ ਦੀ ਵਰਤੋਂ ਕਰ ਸਕਦਾ ਹੈ।

ਇਸੇ ਲਈ ਟੈਸਟ ਦੀ ਪਰਿਭਾਸ਼ਾ ਮੇਰਾ ਸਭ ਤੋਂ ਮਹੱਤਵਪੂਰਨ ਮੈਨੂਅਲ ਕੰਮ ਹੈ। ਤੁਹਾਨੂੰ ਪੁੱਛਣਾ ਚਾਹੀਦਾ ਹੈ:

  • ਕੀ ਇਹ ਟੈਸਟ ਇੱਕ ਅਸਲ ਯੂਜ਼ ਕੇਸ (use case) ਨੂੰ ਦਰਸਾਉਂਦਾ ਹੈ?
  • ਕੀ ਇਹ ਇੱਕ ਅਸਲ ਰਿਗਰੈਸ਼ਨ (regression) ਨੂੰ ਫੜ ਲਵੇਗਾ?
  • ਕੀ ਇਹ ਬਹੁਤ ਸੀਮਤ ਹੈ?

AI ਦੇ ਯੁੱਗ ਵਿੱਚ, ਟੈਸਟ-ਡਰਿਵਨ ਡਿਵੈਲਪਮੈਂਟ (TDD) ਸਿਰਫ਼ ਇੱਕ ਸੁਰੱਖਿਆ ਜਾਲ ਨਹੀਂ ਹੈ। ਇਹ ਸਟੀਅਰਿੰਗ ਵ੍ਹੀਲ ਹੈ। ਟੈਸਟਾਂ ਤੋਂ ਬਿਨਾਂ, ਇੱਕ ਏਜੰਟ ਅਜਿਹਾ ਕੋਡ ਪੈਦਾ ਕਰਦਾ ਹੈ ਜੋ ਦੇਖਣ ਵਿੱਚ ਸਹੀ ਲੱਗਦਾ ਹੈ। ਚੰਗੇ ਟੈਸਟਾਂ ਦੇ ਨਾਲ, ਇੱਕ ਏਜੰਟ ਕੋਲ ਇੱਕ ਮਾਪਣਯੋਗ ਟੀਚਾ ਹੁੰਦਾ ਹੈ।

ਇੱਕ ਹੋਰ ਸੁਝਾਅ: ਟੈਸਟ ਆਊਟਪੁੱਟ ਲਈ ਸੰਰਚਿਤ (structured) ਫਾਈਲਾਂ ਦੀ ਵਰਤੋਂ ਕਰੋ। ਚੈਟ ਵਿੱਚ ਵੱਡੇ ਲੌਗਸ (logs)