સોફ્ટવેર એન્જિનિયરિંગ મૃત્યુ પામી ગયું છે. ટેક ટ્વિટર પરના સૌથી મોટેથી બોલતા લોકો તમને એવું માનવા ઈચ્છે છે. તેઓ AI ટૂલ્સ દ્વારા માત્ર એક પેરેગ્રાફના પ્રોમ્પ્ટથી આખી એપ્લિકેશન તૈયાર થઈ જતી હોય તેવા સ્ક્રીન રેકોર્ડિંગ શેર કરે છે અને પૂછે છે કે કોઈ માણસને કોડ લખવા માટે પૈસા કેમ આપશે. આ ગભરાટ સમજી શકાય તેવો છે, પરંતુ તે મૂળ મુદ્દાથી સાવ દૂર છે.

AI એન્જિનિયરો માટે નથી આવી રહ્યું. તે એવા લોકો માટે આવી રહ્યું છે જેઓ ટાઈપિંગની ઝડતને ટેકનિકલ નિર્ણયશક્તિ (technical judgment) સમજી લેવાની ભૂલ કરે છે. કોડિંગ અને એન્જિનિયરિંગ વચ્ચે મોટો તફાવત છે, અને આ તફાવત જ આખા વ્યવસાયનો મુખ્ય આધાર છે.

એક AI આસિસ્ટન્ટ તમે તમારી કોફી પીવાનું પૂરું કરો તે પહેલાં જ તમને કોઈ ફીચર અમલમાં મૂકવા માટે પાંચ અલગ-અલગ રીતો આપી શકે છે. હવે અવરોધ (bottleneck) બદલાઈ ગયો છે. હવે આપણે કેવી રીતે શરૂઆત કરવી તે વિચારીને ખાલી ફાઈલ સામે તાકી રહેતા નથી. તેના બદલે, આપણે પાંચ સંભવિત ઉકેલો સામે જોઈને વિચારતા હોઈએ છીએ કે જ્યારે વાસ્તવિક ટ્રાફિક આવશે ત્યારે કયો ઉકેલ તૂટી નહીં જાય. તે નિર્ણય લેવાની પ્રક્રિયા એ જ એન્જિનિયરિંગ છે. બાકી બધું માત્ર સિન્ટેક્સ (syntax) છે.

ડેમો એ પ્રોડક્ટ નથી

કોઈપણ AI કોડિંગ ડેમો જુઓ અને તમે જોશો કે મિનિટોમાં એક સુંદર ઇન્ટરફેસ તૈયાર થઈ જાય છે. પરંતુ તમે જે નહીં જુઓ તે છે લોડ હેઠળ ડેટાબેઝ કનેક્શન પૂલ કેવી રીતે ખાલી થઈ જાય છે. તમે API એન્ડપોઇન્ટ પર ખૂટતી રેટ લિમિટ્સ, ઓડિટ લોગ્સનો અભાવ, અથવા દરેક યુઝર ઇન્ટરેક્શનને ઓબ્જેક્ટ બકેટમાં લોગ કરવાના સ્ટોરેજ ખર્ચને નહીં જોઈ શકો, કારણ કે AI ને લાગ્યું કે સ્ટેટ (state) ડમ્પ કરવા માટે તે એક અનુકૂળ જગ્યા છે.

પ્રોડક્શન સિસ્ટમ્સ સ્કેલેબિલિટી, સુરક્ષા, પર્ફોર્મન્સ અને ખર્ચ નિયંત્રણની માંગ કરે છે. આ ગુણો સ્પ્રિન્ટ રિવ્યુમાં દેખાતા નથી. તેઓ ત્યારે જ સામે આવે છે જ્યારે વાસ્તવિક યુઝર્સ તેમના અનિશ્ચિત વર્તન, તેમના એજ કેસીસ (edge cases), અને તમે અપેક્ષા રાખી હોય તે ક્રમમાં બટનો ક્લિક ન કરવાની આદત સાથે આવે છે. મેં એવા ઘણા AI-આધારિત પ્રોજેક્ટ્સ જોયા છે જે QA માં બધું બરાબર દેખાતા હતા, પરંતુ લોન્ચ થયાના એક અઠવાડિયા પછી મોંઘા પાઠ બની ગયા.

કામ કરતો કોડ સસ્તો થઈ ગયો છે. પરંતુ સારું એન્જિનિયરિંગ નથી.

હવે શું મહત્વનું છે

આ પરિવર્તનમાં જે એન્જિનિયરો સફળ થઈ રહ્યા છે તેઓ સૌથી ઝડપથી ટાઈપ કરનારા નથી. તેઓ એવા છે જેમને એક પણ લાઇન જનરેટ થાય તે પહેલાં કયા પ્રશ્નો પૂછવા તે ખબર છે.

  • તેઓ સમસ્યાઓને સ્પષ્ટ રીતે વ્યાખ્યાયિત કરે છે. જો તમે તેને પરવાનગી આપો તો AI મોડલ ખુશીથી ખોટી સમસ્યાનો ઉકેલ લાવી દેશે. તે એવા રીડ-હેવી (read-heavy) ડેશબોર્ડ માટે જટિલ કેશિંગ લેયર બનાવશે જેનો ઉપયોગ માત્ર છ આંતરિક એનાલિસ્ટ્સ જ કરે છે. તે એ પૂછવા માટે નહીં રોકાય કે વાસ્તવિક સમસ્યા ડેટાબેઝ ઇન્ડેક્સનો અભાવ છે કે મૂળભૂત રીતે ખામીયુક્ત ડેટા મોડલ છે. એક કુશળ એન્જિનિયર સમસ્યાને ત્યાં સુધી ફરીથી વ્યાખ્યાયિત કરે છે જ્યાં સુધી ઉકેલ સ્પષ્ટ ન થઈ જાય, પછી ભલે તે ઉકેલમાં કોડનો સમાવેશ થતો હોય કે ન હોય.

  • તેઓ મોટા સિસ્ટમોને નાના ટુકડાઓમાં વિભાજિત કરે છે. AI લોકલ કોન્ટેક્સ્ટમાં ઉત્કૃષ્ટ છે. તે એક સિંગલ ફંક્શન, એક સિંગલ કમ્પોનન્ટ અથવા એક સિંગલ ટેસ્ટ લખી શકે છે. પરંતુ તે આખી ડિસ્ટ્રિબ્યુટેડ આર્કિટેક્ચરને સમજવામાં સંઘર્ષ કરે છે. એન્જિનિયરો જે મોનોલિથ (monolith) ને વિભાજિત કરી શકે છે, સર્વિસિસની આસપાસ સીમાઓ નક્કી કરી શકે છે અને ટીમો વચ્ચે કોન્ટ્રાક્ટ્સ વ્યાખ્યાયિત કરી શકે છે, તેઓ જ જનરેટ થયેલા સ્નિપેટ્સને ટકાઉ સિસ્ટમ્સમાં ફેરવે છે.

  • તેઓ AI ના સૂચનોને પડકારે છે. મોડલનો આત્મવિશ્વાસ એક મૃગજળ છે. તે એવી આર્કિટેક્ચર પ્રસ્તાવિત કરશે જે નેટવર્ક લેટન્સીને અવગણે છે, વર્ષોથી વપરાશમાં ન હોય તેવી લાઇબ્રેરીઓની ભલામણ કરશે, અથવા એવા ફીચર્સનો ઉકેલ આપશે જે વાસ્તવમાં જરૂરિયાતોમાં છે જ નહીં.