ਸਾਫਟਵੇਅਰ ਇੰਜੀਨੀਅਰਿੰਗ ਖਤਮ ਹੋ ਗਈ ਹੈ। ਟੈਕ ਟਵਿੱਟਰ (tech Twitter) 'ਤੇ ਉੱਚੀ ਬੋਲਣ ਵਾਲੀਆਂ ਆਵਾਜ਼ਾਂ ਇਹੀ ਚਾਹੁੰਦੀਆਂ ਹਨ ਕਿ ਤੁਸੀਂ ਇਸ 'ਤੇ ਵਿਸ਼ਵਾਸ ਕਰੋ। ਉਹ AI ਟੂਲਜ਼ ਦੀਆਂ ਸਕ੍ਰੀਨ ਰਿਕਾਰਡਿੰਗਾਂ ਸਾਂਝੀਆਂ ਕਰਦੇ ਹਨ ਜੋ ਇੱਕ ਸਿੰਗਲ ਪੈਰਾਗ੍ਰਾਫ ਪ੍ਰੋਂਪਟ ਤੋਂ ਪੂਰੀਆਂ ਐਪਲੀਕੇਸ਼ਨਾਂ ਤਿਆਰ ਕਰ ਦਿੰਦੇ ਹਨ ਅਤੇ ਪੁੱਛਦੇ ਹਨ ਕਿ ਕੋਡ ਲਿਖਣ ਲਈ ਕੋਈ ਇਨਸਾਨ ਨੂੰ ਪੈਸੇ ਕਿਉਂ ਦੇਵੇਗਾ। ਇਹ ਘਬਰਾਹਟ ਸਮਝਣਯੋਗ ਹੈ, ਪਰ ਇਹ ਪੂਰੀ ਤਰ੍ਹਾਂ ਮੂਲ ਗੱਲ ਨੂੰ ਸਮਝਣ ਵਿੱਚ ਅਸਫਲ ਰਹਿੰਦੀ ਹੈ।
AI ਇੰਜੀਨੀਅਰਾਂ ਲਈ ਨਹੀਂ ਆ ਰਿਹਾ। ਇਹ ਉਨ੍ਹਾਂ ਲੋਕਾਂ ਲਈ ਆ ਰਿਹਾ ਹੈ ਜੋ ਟਾਈਪਿੰਗ ਦੀ ਰਫ਼ਤਾਰ ਨੂੰ ਤਕਨੀਕੀ ਫੈਸਲੇ ਲੈਣ ਦੀ ਸਮਰੱਥਾ (technical judgment) ਸਮਝਣ ਦੀ ਗਲਤੀ ਕਰਦੇ ਹਨ। ਕੋਡਿੰਗ ਅਤੇ ਇੰਜੀਨੀਅਰਿੰਗ ਵਿਚਕਾਰ ਇੱਕ ਵੱਡਾ ਫਰਕ ਹੈ, ਅਤੇ ਉਹ ਫਰਕ ਹੀ ਪੂਰੇ ਪੇਸ਼ੇ ਦਾ ਅਧਾਰ ਹੈ।
ਇੱਕ AI ਸਹਾਇਕ (assistant) ਤੁਹਾਡੀ ਕੌਫੀ ਪੀਣ ਤੋਂ ਪਹਿਲਾਂ ਹੀ ਤੁਹਾਨੂੰ ਕਿਸੇ ਫੀਚਰ ਨੂੰ ਲਾਗੂ ਕਰਨ ਦੇ ਪੰਜ ਵੱਖ-ਵੱਖ ਤਰੀਕੇ ਦੱਸ ਸਕਦਾ ਹੈ। ਰੁਕਾਵਟ (bottleneck) ਹੁਣ ਬਦਲ ਗਈ ਹੈ। ਹੁਣ ਅਸੀਂ ਇਹ ਸੋਚ ਕੇ ਖਾਲੀ ਫਾਈਲ ਵੱਲ ਨਹੀਂ ਦੇਖਦੇ ਕਿ ਸ਼ੁਰੂਆਤ ਕਿਵੇਂ ਕਰੀਏ। ਅਸੀਂ ਪੰਜ ਸੰਭਾਵਨਾਤਮਕ ਹੱਲਾਂ ਵੱਲ ਦੇਖਦੇ ਹਾਂ ਅਤੇ ਸੋਚਦੇ ਹਾਂ ਕਿ ਕਿਹੜਾ ਹੱਲ ਅਸਲ ਟ੍ਰੈਫਿਕ ਆਉਣ 'ਤੇ ਟੁੱਟੇਗਾ ਨਹੀਂ। ਉਹ ਫੈਸਲਾ ਲੈਣਾ ਹੀ ਇੰਜੀਨੀਅਰਿੰਗ ਹੈ। ਬਾਕੀ ਸਭ ਕੁਝ ਸਿਰਫ਼ ਸਿੰਟੈਕਸ (syntax) ਹੈ।
ਡੈਮੋ (Demo) ਉਤਪਾਦ ਨਹੀਂ ਹੈ
ਕੋਈ ਵੀ AI ਕੋਡਿੰਗ ਡੈਮੋ ਦੇਖੋ ਅਤੇ ਤੁਸੀਂ ਦੇਖੋਗੇ ਕਿ ਕੁਝ ਹੀ ਮਿੰਟਾਂ ਵਿੱਚ ਇੱਕ ਸੁੰਦਰ ਇੰਟਰਫੇਸ ਤਿਆਰ ਹੋ ਜਾਂਦਾ ਹੈ। ਪਰ ਤੁਸੀਂ ਉਹ ਨਹੀਂ ਦੇਖੋਗੇ ਜੋ ਲੋਡ (load) ਪੈਣ 'ਤੇ ਡਾਟਾਬੇਸ ਕਨੈਕਸ਼ਨ ਪੂਲ (database connection pool) ਖਤਮ ਹੋ ਜਾਂਦਾ ਹੈ। ਤੁਸੀਂ API ਐਂਡਪੁਆਇੰਟ (endpoint) 'ਤੇ ਮੌਜੂਦ ਰੇਟ ਲਿਮਿਟਸ (rate limits) ਦੀ ਘਾਟ, ਆਡਿਟ ਲੌਗਸ (audit logs) ਦੀ ਅਣਹੋਂਦ, ਜਾਂ ਹਰ ਯੂਜ਼ਰ ਇੰਟਰੈਕਸ਼ਨ ਨੂੰ ਆਬਜੈਕਟ ਬੱਕਟ (object bucket) ਵਿੱਚ ਸਟੋਰ ਕਰਨ ਦੀ ਲਾਗਤ ਨਹੀਂ ਦੇਖੋਗੇ, ਕਿਉਂਕਿ AI ਨੇ ਸੋਚਿਆ ਕਿ ਇਹ ਡਾਟਾ ਰੱਖਣ ਲਈ ਇੱਕ ਸੁਵਿਧਾਜਨਕ ਜਗ੍ਹਾ ਹੈ।
ਪ੍ਰੋਡਕਸ਼ਨ ਸਿਸਟਮਾਂ (Production systems) ਨੂੰ ਸਕੈਲੇਬਿਲਟੀ (scalability), ਸੁਰੱਖਿਆ (security), ਪ੍ਰਦਰਸ਼ਨ (performance) ਅਤੇ ਲਾਗਤ ਨਿਯੰਤਰਣ (cost control) ਦੀ ਲੋੜ ਹੁੰਦੀ ਹੈ। ਇਹ ਗੁਣ ਸਪ੍ਰਿੰਟ ਰਿਵਿਊ (sprint review) ਵਿੱਚ ਦਿਖਾਈ ਨਹੀਂ ਦਿੰਦੇ। ਉਹ ਉਦੋਂ ਹੀ ਸਾਹਮਣੇ ਆਉਂਦੇ ਹਨ ਜਦੋਂ ਅਸਲ ਯੂਜ਼ਰ ਆਪਣੇ ਅਣਪਛਾਤੇ ਵਿਵਹਾਰ, ਐਜ ਕੇਸਾਂ (edge cases) ਅਤੇ ਤੁਹਾਡੇ ਉਮੀਦ ਮੁਤਾਬਕ ਬਟਨਾਂ 'ਤੇ ਕਲਿੱਕ ਨਾ ਕਰਨ ਦੀ ਆਦਤ ਨਾਲ ਆਉਂਦੇ ਹਨ। ਮੈਂ ਬਹੁਤ ਸਾਰੇ ਅਜਿਹੇ AI-ਸਹਾਇਤਾ ਪ੍ਰੋਜੈਕਟ ਦੇਖੇ ਹਨ ਜੋ QA ਵਿੱਚ ਸਹੀ ਲੱਗਦੇ ਸਨ ਪਰ ਲਾਂਚ ਹੋਣ ਦੇ ਇੱਕ ਹਫ਼ਤੇ ਬਾਅਦ ਮਹਿੰਗੇ ਸਬਕ ਬਣ ਗਏ।
ਕੰਮ ਕਰਨ ਵਾਲਾ ਕੋਡ ਸਸਤਾ ਹੋ ਗਿਆ ਹੈ। ਪਰ ਚੰਗੀ ਇੰਜੀਨੀਅਰਿੰਗ ਨਹੀਂ।
ਹੁਣ ਕੀ ਮਹੱਤਵਪੂਰਨ ਹੈ
ਇਸ ਬਦਲਾਅ ਵਿੱਚ ਉਹ ਇੰਜੀਨੀਅਰ ਤਰੱਕੀ ਕਰ ਰਹੇ ਹਨ ਜੋ ਸਭ ਤੋਂ ਤੇਜ਼ ਟਾਈਪ ਨਹੀਂ ਕਰਦੇ। ਉਹ ਉਹ ਹਨ ਜੋ ਇੱਕ ਲਾਈਨ ਵੀ ਲਿਖਣ ਤੋਂ ਪਹਿਲਾਂ ਇਹ ਜਾਣਦੇ ਹਨ ਕਿ ਕਿਹੜੇ ਸਵਾਲ ਪੁੱਛਣੇ ਹਨ।
ਉਹ ਸਮੱਸਿਆਵਾਂ ਨੂੰ ਸਪਸ਼ਟ ਰੂਪ ਵਿੱਚ ਪਰਿਭਾਸ਼ਿਤ ਕਰਦੇ ਹਨ। ਜੇਕਰ ਤੁਸੀਂ AI ਮਾਡਲ ਨੂੰ ਇਜਾਜ਼ਤ ਦਿੰਦੇ ਹੋ, ਤਾਂ ਉਹ ਖੁਸ਼ੀ-ਖੁਸ਼ੀ ਗਲਤ ਸਮੱਸਿਆ ਨੂੰ ਹੱਲ ਕਰ ਦੇਵੇਗਾ। ਇਹ ਇੱਕ ਅਜਿਹੇ ਡੈਸ਼ਬੋਰਡ ਲਈ ਇੱਕ ਗੁੰਝਲਦਾਰ ਕੈਸ਼ਿੰਗ ਲੇਅਰ (caching layer) ਬਣਾ ਦੇਵੇਗਾ ਜੋ ਸਿਰਫ਼ ਛੇ ਅੰਦਰੂਨੀ ਵਿਸ਼ਲੇਸ਼ਕਾਂ ਦੁਆਰਾ ਵਰਤਿਆ ਜਾਂਦਾ ਹੈ। ਇਹ ਇਹ ਪੁੱਛਣ ਲਈ ਨਹੀਂ ਰੁਕੇਗਾ ਕਿ ਕੀ ਅਸਲ ਸਮੱਸਿਆ ਇੱਕ ਗੁੰਮ ਹੋਇਆ ਡਾਟਾਬੇਸ ਇੰਡੈਕਸ (database index) ਹੈ ਜਾਂ ਇੱਕ ਬੁਨਿਆਦੀ ਰੂਪ ਵਿੱਚ ਖਰਾਬ ਡਾਟਾ ਮਾਡਲ। ਇੱਕ ਕੁਸ਼ਲ ਇੰਜੀਨੀਅਰ ਸਮੱਸਿਆ ਨੂੰ ਉਦੋਂ ਤੱਕ ਦੁਬਾਰਾ ਤਿਆਰ ਕਰਦਾ ਹੈ ਜਦੋਂ ਤੱਕ ਹੱਲ ਸਪਸ਼ਟ ਨਹੀਂ ਹੋ ਜਾਂਦਾ, ਚਾਹੇ ਉਸ ਹੱਲ ਵਿੱਚ ਕੋਡ ਸ਼ਾਮਲ ਹੋਵੇ ਜਾਂ ਨਹੀਂ।
ਉਹ ਵੱਡੇ ਸਿਸਟਮਾਂ ਨੂੰ ਛੋਟੇ ਹਿੱਸਿਆਂ ਵਿੱਚ ਵੰਡਦੇ ਹਨ। AI ਸਥਾਨਕ ਸੰਦਰਭ (local context) ਵਿੱਚ ਵਧੀਆ ਕੰਮ ਕਰਦਾ ਹੈ। ਇਹ ਇੱਕ ਸਿੰਗਲ ਫੰਕਸ਼ਨ, ਇੱਕ ਸਿੰਗਲ ਕੰਪੋਨੈਂਟ, ਜਾਂ ਇੱਕ ਸਿੰਗਲ ਟੈਸਟ ਲਿਖ ਸਕਦਾ ਹੈ। ਪਰ ਇਸ ਲਈ ਪੂਰੇ ਡਿਸਟ੍ਰੀਬਿਊਟਡ ਆਰਕੀਟੈਕਚਰ (distributed architecture) ਨੂੰ ਸਮਝਣਾ ਇਸ ਲਈ ਮੁਸ਼ਕਲ ਹੁੰਦਾ ਹੈ। ਉਹ ਇੰਜੀਨੀਅਰ ਜੋ ਇੱਕ ਮੋਨੋਲਿਥ (monolith) ਨੂੰ ਵੱਖ-ਵੱਖ ਹਿੱਸਿਆਂ ਵਿੱਚ ਵੰਡ ਸਕਦੇ ਹਨ, ਸਰਵਿਸਿਜ਼ ਦੇ ਆਲੇ-ਦੁਆਲੇ ਸੀਮਾਵਾਂ ਤੈਅ ਕਰ ਸਕਦੇ ਹਨ, ਅਤੇ ਟੀਮਾਂ ਵਿਚਕਾਰ ਸਮਝੌਤੇ (contracts) ਪਰਿਭਾਸ਼ਿਤ ਕਰ ਸਕਦੇ ਹਨ, ਉਹੀ ਬਣੇ ਹੋਏ ਕੋਡ ਦੇ ਟੁਕੜਿਆਂ ਨੂੰ ਟਿਕਾਊ ਸਿਸਟਮਾਂ ਵਿੱਚ ਬਦਲਦੇ ਹਨ।
ਉਹ AI ਦੇ ਸੁਝਾਵਾਂ ਨੂੰ ਚੁਣੌਤੀ ਦਿੰਦੇ ਹਨ। ਮਾਡਲ ਦਾ ਆਤਮ-ਵਿਸ਼ਵਾਸ ਇੱਕ ਭਰਮ ਹੈ। ਇਹ ਅਜਿਹੀਆਂ ਆਰਕੀਟੈਕਚਰਾਂ ਦਾ ਸੁਝਾਅ ਦੇ ਸਕਦਾ ਹੈ ਜੋ ਨੈੱਟਵਰਕ ਲੇਟੈਂਸੀ (network latency) ਨੂੰ ਨਜ਼ਰਅੰਦਾਜ਼ ਕਰਦੀਆਂ ਹਨ, ਅਜਿਹੀਆਂ ਲਾਇਬ੍ਰੇਰੀਆਂ ਦੀ ਸਿਫਾਰਸ਼ ਕਰ ਸਕਦੀਆਂ ਹਨ ਜੋ ਸਾਲਾਂ ਤੋਂ ਵਰਤੋਂ ਵਿੱਚ ਨਹੀਂ ਹਨ (deprecated), ਜਾਂ ਅਜਿਹੇ ਫੀਚਰਾਂ ਨੂੰ ਹੱਲ ਕਰ ਸਕਦੀਆਂ ਹਨ ਜੋ ਅਸਲ ਵਿੱਚ ਲੋੜਾਂ (requirements) ਵਿੱਚ ਮੌਜੂਦ ਹੀ ਨਹੀਂ ਹਨ।
