છેલ્લાં બે વર્ષથી, વર્ક એન્ડ કંપની ખાતેની મારી ટીમ અને હું AI કોડિંગ ટૂલ્સનું પરીક્ષણ કરી રહ્યાં છીએ અને ધીમે ધીમે કોપાયલોટ, કર્સર, ક્લાઉડ અને ચેટજીપીટીને સંકલિત કરી રહ્યાં છીએ જેથી અમને જનતા દ્વારા ઉપયોગમાં લેવાતા વેબ અનુભવો મોકલવામાં મદદ મળે. સ્વીકાર્યપણે, કેટલાક પ્રારંભિક સંશયવાદ અને થોડી આહા ક્ષણો પછી, વિવિધ AI સાધનોએ મારા રોજિંદા ઉપયોગમાં તેમનો માર્ગ શોધી કાઢ્યો છે. સમય જતાં, એપ્લીકેશનની યાદી જ્યાં અમને સમજાયું કે AI ને કબજો લેવા દેવાનો અર્થ વધવા લાગ્યો, તેથી મેં "જવાબદાર વિકાસકર્તા" તરીકે ઓળખાતા AI ટૂલ્સ માટે કેટલાક વ્યવહારુ ઉપયોગના કિસ્સાઓ શેર કરવાનું નક્કી કર્યું. જવાબદાર વિકાસકર્તા દ્વારા મારો અર્થ શું છે? અમારે ખાતરી કરવી પડશે કે અમે અમારા હિતધારકો અને ગ્રાહકોની અપેક્ષા મુજબ ગુણવત્તા કોડ વિતરિત કરીએ છીએ. અમારા યોગદાન (એટલે કે, પુલ વિનંતીઓ) અમારા સાથીદારો પર બોજ બનવું જોઈએ નહીં જેમણે અમારા કાર્યની સમીક્ષા કરવી પડશે અને પરીક્ષણ કરવું પડશે. ઉપરાંત, જો તમે કોઈ કંપની માટે કામ કરો છો: અમે જે સાધનોનો ઉપયોગ કરીએ છીએ તે અમારા એમ્પ્લોયર દ્વારા મંજૂર કરવામાં આવે તે જરૂરી છે. સુરક્ષા અને ગોપનીયતા જેવા સંવેદનશીલ પાસાઓને યોગ્ય રીતે હેન્ડલ કરવાની જરૂર છે: નીતિની મંજૂરી વિના ટૂલ્સમાં રહસ્યો, ગ્રાહક ડેટા (PII) અથવા માલિકીનો કોડ પેસ્ટ કરશો નહીં. તેને ઇન્ટરનેટ પર અજાણી વ્યક્તિના કોડની જેમ માનો. હંમેશા પરીક્ષણ અને ચકાસો. નોંધ: આ લેખ VSCode અથવા કર્સરની અંદર કોપાયલોટ જેવા AI કોડિંગ ટૂલ્સ સાથેની કેટલીક ખૂબ જ મૂળભૂત પરિચિતતા ધારે છે. જો તમને આ બધું તદ્દન નવું અને અજાણ્યું લાગતું હોય, તો Github Copilot વિડિયો ટ્યુટોરિયલ્સ તમારા માટે એક અદભૂત પ્રારંભિક બિંદુ બની શકે છે.
AI કોડિંગ ટૂલ્સની મદદરૂપ એપ્લિકેશન નોંધ: નીચેના ઉદાહરણો મુખ્યત્વે JavaScript-આધારિત વેબ એપ્લિકેશનો જેમ કે React, Vue, Svelte, અથવા Angular માં કામ કરવા પર ધ્યાન કેન્દ્રિત કરશે. અજાણ્યા કોડબેઝની સમજ મેળવવી સ્થાપિત કોડબેઝ પર કામ કરવું અસામાન્ય નથી, અને મોટા લેગસી કોડબેઝમાં જોડાવું ડરામણું હોઈ શકે છે. ફક્ત તમારા પ્રોજેક્ટ અને તમારા AI એજન્ટને ખોલો (મારા કિસ્સામાં, VSCodeમાં કોપાયલોટ ચેટ) અને તમે કોઈ સાથીદારને પૂછો છો તે જ રીતે પ્રશ્નો પૂછવાનું શરૂ કરો. સામાન્ય રીતે, હું કોઈપણ એઆઈ એજન્ટ સાથે વાત કરવાનું પસંદ કરું છું જેમ હું કોઈ સાથી માણસ સાથે કરું છું. અહીં એક વધુ શુદ્ધ ઉદાહરણ પ્રોમ્પ્ટ છે: "મને ઉચ્ચ-સ્તરનું આર્કિટેક્ચર વિહંગાવલોકન આપો: એન્ટ્રીપોઇન્ટ્સ, રૂટીંગ, ઓથ, ડેટા લેયર, બિલ્ડ ટૂલિંગ. પછી ક્રમમાં વાંચવા માટે 5 ફાઇલોની સૂચિ બનાવો. સમજૂતીઓને પૂર્વધારણા તરીકે ગણો અને સંદર્ભિત ફાઇલો પર કૂદીને પુષ્ટિ કરો."
તમે ફોલો-અપ પ્રશ્નો પૂછવાનું ચાલુ રાખી શકો છો જેમ કે "રાઉટીંગ વિગતવાર કેવી રીતે કાર્ય કરે છે?" અથવા “મને પ્રમાણીકરણ પ્રક્રિયા અને પદ્ધતિઓ દ્વારા વાત કરો” અને તે તમને અજાણ્યા કોડબેઝના અંધારામાં થોડો પ્રકાશ લાવવા માટે મદદરૂપ દિશાઓ તરફ દોરી જશે. અવલંબનને અપગ્રેડ કરતી વખતે બ્રેકિંગ ચેન્જીસને ટ્રાયજિંગ npm પેકેજોને અપડેટ કરવું, ખાસ કરીને જ્યારે તેઓ બ્રેકિંગ ફેરફારો સાથે આવે છે, તે કંટાળાજનક અને સમય માંગી લેતું કામ હોઈ શકે છે, અને તમને યોગ્ય પ્રમાણમાં રીગ્રેસન ડીબગ કરવા માટે બનાવે છે. મારે તાજેતરમાં ડેટા વિઝ્યુલાઇઝેશન લાઇબ્રેરી plotly.js ને વર્ઝન 2 થી 3 સુધીનું એક મોટું રીલીઝ વર્ઝન અપગ્રેડ કરવું પડ્યું અને તેના પરિણામે, કેટલાક ગ્રાફમાં અક્ષ લેબલીંગ કામ કરવાનું બંધ કરી દીધું. મેં ChatGPT ને પૂછ્યું: "મેં મારો કોણીય પ્રોજેક્ટ અપડેટ કર્યો જે પ્લોટલીનો ઉપયોગ કરે છે. મેં plotly.js — ડિસ્ટ પેકેજ સંસ્કરણ 2.35.2 થી 3.1.0 સુધી અપડેટ કર્યું — અને હવે x અને y અક્ષ પરના લેબલો ગયા છે. શું થયું?"
એજન્ટ તરત જ ઉકેલ લઈને પાછો આવ્યો (નીચે તમારા માટે જુઓ). નોંધ: મેં હજી પણ ફિક્સ મોકલતા પહેલા સત્તાવાર સ્થળાંતર માર્ગદર્શિકા સામે સમજૂતીની ચકાસણી કરી છે.
ફાઇલોમાં સુરક્ષિત રીતે રિફેક્ટર્સની નકલ કરવી વધતા કોડબેસેસ ચોક્કસપણે કોડ એકીકરણ માટેની તકોનું અનાવરણ કરે છે. ઉદાહરણ તરીકે, તમે ફાઈલોમાં કોડ ડુપ્લિકેશન જોશો કે જેને એક ફંક્શન અથવા કમ્પોનન્ટમાં એક્સટ્રેક્ટ કરી શકાય છે. પરિણામે, તમે એક વહેંચાયેલ ઘટક બનાવવાનું નક્કી કરો છો જે તેના બદલે શામેલ કરી શકાય છે અને તે રીફેક્ટરને એક ફાઇલમાં કરી શકો છો. હવે, તમારી બાકીની ફાઇલોમાં તે ફેરફારોને મેન્યુઅલી કરવાને બદલે, તમે તમારા એજન્ટને તમારા માટે રિફેક્ટર રોલ આઉટ કરવા કહો. એજન્ટો તમને સંદર્ભ તરીકે બહુવિધ ફાઇલો પસંદ કરવા દે છે. એકવાર એક ફાઇલ માટે રિફેક્ટર થઈ જાય, પછી હું સંદર્ભમાં રિફેક્ટેડ અને અનટચ્ડ બંને ફાઇલો ઉમેરી શકું છું અને એજન્ટને અન્ય ફાઇલોમાં આના જેવા ફેરફારો રોલ આઉટ કરવા માટે પ્રોમ્પ્ટ કરી શકું છું: "ફાઇલ A માં મેં કરેલા ફેરફારોને B ફાઇલમાં પણ નકલ કરો". અપરિચિત ટેક્નોલોજીમાં સુવિધાઓનો અમલ AI કોડિંગ ટૂલ્સનો ઉપયોગ કરીને મારી મનપસંદ અહા-ક્ષણોમાંની એક એ હતી કે જ્યારે તેણે મને GLSL માં એકદમ જટિલ એનિમેટેડ ગ્રેડિયન્ટ એનિમેશન બનાવવામાં મદદ કરી, જે ભાષાથી હું એકદમ અજાણ્યો હતો. તાજેતરના પ્રોજેક્ટ પર, અમારા ડિઝાઇનર્સ 3D ઑબ્જેક્ટ પર લોડિંગ સ્ટેટ તરીકે એનિમેટેડ ગ્રેડિયન્ટ સાથે આવ્યા હતા. મને ખરેખર ખ્યાલ ગમ્યો અને અમારા ગ્રાહકોને કંઈક અનોખું અને ઉત્તેજક પહોંચાડવા માગું છું. આસમસ્યા: તેને અમલમાં મૂકવા માટે મારી પાસે માત્ર બે દિવસ હતા, અને GLSL પાસે ખૂબ જ તીવ્ર શીખવાની કર્વ છે. ફરીથી, એક AI ટૂલ (આ કિસ્સામાં, ChatGPT) હાથમાં આવ્યું, અને મેં તેને મારા માટે એક એકલ HTML ફાઇલ બનાવવા માટે પ્રોમ્પ્ટ કરવાનું શરૂ કર્યું જે કેનવાસ અને ખૂબ જ સરળ એનિમેટેડ કલર ગ્રેડિયન્ટ રેન્ડર કરે છે. એક પછી એક પગલું, મેં યોગ્ય પરિણામ પર ન પહોંચે ત્યાં સુધી AI ને તેમાં વધુ સુંદરતા ઉમેરવા માટે પ્રોમ્પ્ટ કર્યું જેથી હું મારા વાસ્તવિક કોડબેઝમાં શેડરને એકીકૃત કરવાનું શરૂ કરી શકું. અંતિમ પરિણામ: અમારા ગ્રાહકો ખૂબ જ ખુશ હતા, અને અમે AIને આભારી થોડા સમયમાં જટિલ સુવિધા આપી. લેખન કસોટીઓ મારા અનુભવમાં, એકમ અને એકીકરણ પરીક્ષણોના યોગ્ય સ્યુટને સતત લખવા અને જાળવવા માટે પ્રોજેક્ટ્સ પર ભાગ્યે જ પૂરતો સમય હોય છે, અને તે ટોચ પર, ઘણા વિકાસકર્તાઓ પરીક્ષણો લખવાના કાર્યનો ખરેખર આનંદ લેતા નથી. તમારા AI સહાયકને તમારા માટે પરીક્ષણો સેટ કરવા અને લખવા માટે પ્રોમ્પ્ટ કરવું સંપૂર્ણપણે શક્ય છે અને તે થોડા સમયમાં થઈ શકે છે. અલબત્ત, તમારે, એક વિકાસકર્તા તરીકે, હજુ પણ ખાતરી કરવી જોઈએ કે તમારા પરીક્ષણો ખરેખર તમારી એપ્લિકેશનના નિર્ણાયક ભાગો પર એક નજર નાખે છે અને યોગ્ય પરીક્ષણ સિદ્ધાંતોનું પાલન કરે છે, પરંતુ તમે અમારા AI સહાયકને પરીક્ષણોના લેખનને "આઉટસોર્સ" કરી શકો છો. ઉદાહરણ પ્રોમ્પ્ટ: "જેસ્ટનો ઉપયોગ કરીને આ કાર્ય માટે એકમ પરીક્ષણો લખો. સુખી પાથ, ધારના કેસ અને નિષ્ફળતાના મોડને આવરી લો. દરેક પરીક્ષણ શા માટે અસ્તિત્વમાં છે તે સમજાવો."
તમે તમારા એજન્ટને માર્ગદર્શિકા તરીકે ટેસ્ટિંગ ગુરુ કેન્ટ સી. ડોડ્સની ટેસ્ટિંગ શ્રેષ્ઠ પ્રેક્ટિસ પણ પસાર કરી શકો છો, જેમ કે નીચે:
આંતરિક ટૂલિંગ અગાઉ ઉલ્લેખિત શેડર ઉદાહરણ જેવું કંઈક અંશે, મને તાજેતરમાં કોડબેઝમાં કોડ ડુપ્લિકેશનનું વિશ્લેષણ કરવાનું અને રિફેક્ટરની પહેલાં અને પછી સરખામણી કરવાનું કામ સોંપવામાં આવ્યું હતું. જો તમે મેન્યુઅલી ફાઇલોની તુલના કરવાના સમય માંગી લે તેવા માર્ગ પર જવા માંગતા ન હોવ તો ચોક્કસપણે એક તુચ્છ કાર્ય નથી. કોપાયલોટની મદદથી, મેં એક સ્ક્રિપ્ટ બનાવી જે મારા માટે કોડ ડુપ્લિકેશનનું વિશ્લેષણ કરે છે, ટેબલમાં આઉટપુટને ગોઠવી અને ઓર્ડર કરે છે અને તેને એક્સેલમાં નિકાસ કરે છે. પછી મેં તેને એક ડગલું આગળ લઈ લીધું. જ્યારે અમારું કોડ રિફેક્ટર થઈ ગયું, ત્યારે મેં એજન્ટને મારી હાલની એક્સેલ શીટને બેઝલાઇન તરીકે લેવા, અલગ કૉલમમાં ડુપ્લિકેશનની વર્તમાન સ્થિતિમાં ઉમેરવા અને ડેલ્ટાની ગણતરી કરવા માટે પ્રોમ્પ્ટ કર્યો. ઘણા સમય પહેલા લખાયેલ કોડ અપડેટ કરી રહ્યો છે તાજેતરમાં, મારા એક જૂના ક્લાયન્ટે મને માર્યો, કારણ કે સમય જતાં, તેની વેબસાઇટ પર હવે કેટલીક સુવિધાઓ યોગ્ય રીતે કામ કરતી નથી. કેચ: વેબસાઈટ લગભગ દસ વર્ષ પહેલા બનાવવામાં આવી હતી, અને JavaScript અને SCSS એ જૂના કમ્પાઈલ ટૂલ્સનો ઉપયોગ કરી રહ્યા હતા જેમ કે requireJS, અને સેટઅપ માટે Node.js ના જૂના વર્ઝનની જરૂર હતી જે મારા 2025 MacBook પર પણ ચાલશે નહીં. આખી બિલ્ડ પ્રક્રિયાને હાથથી અપડેટ કરવામાં મને ઘણા દિવસો લાગ્યા હશે, તેથી મેં AI એજન્ટને પૂછવાનું નક્કી કર્યું, "શું તમે JS અને SCSS બિલ્ડ પ્રક્રિયાને Vite જેવા દુર્બળ 2025 સ્ટેક પર અપડેટ કરી શકો છો?" તે ખાતરીપૂર્વક થયું, અને એજન્ટ સાથે શુદ્ધિકરણના લગભગ એક કલાક પછી, મેં મારા SCSS અને JS બિલ્ડને Vite પર સ્વિચ કર્યું, અને હું વાસ્તવિક બગફિક્સિંગ પર ધ્યાન કેન્દ્રિત કરવામાં સક્ષમ હતો. તમારી બિલ્ડ પ્રક્રિયામાં આવા અભિન્ન ફેરફારો કરતી વખતે આઉટપુટ અને કમ્પાઇલ કરેલી ફાઇલોને યોગ્ય રીતે માન્ય કરવાની ખાતરી કરો. સારાંશ અને ડ્રાફ્ટિંગ શું તમે કમિટ મેસેજ માટે તમારા તમામ તાજેતરના કોડ ફેરફારોને એક વાક્યમાં સારાંશ આપવા માંગો છો, અથવા કમિટ્સની લાંબી સૂચિ ધરાવો છો અને તેમને ત્રણ બુલેટ પોઈન્ટમાં સરવાળો કરવા માંગો છો? કોઈ વાંધો નહીં, AI ને તેની કાળજી લેવા દો, પરંતુ કૃપા કરીને તેને પ્રૂફરીડ કરવાની ખાતરી કરો. એક ઉદાહરણ પ્રોમ્પ્ટ સાથી માણસને મેસેજ કરવા જેટલું સરળ છે: "કૃપા કરીને સંક્ષિપ્ત બુલેટ પોઈન્ટ્સમાં મારા તાજેતરના ફેરફારોનો સરવાળો કરો". અહીં મારી સલાહ એ છે કે સાવધાની સાથે લખવા માટે GPT નો ઉપયોગ કરો અને કોડની જેમ, કૃપા કરીને મોકલતા અથવા સબમિટ કરતા પહેલા આઉટપુટ તપાસો. ભલામણો અને શ્રેષ્ઠ વ્યવહાર પ્રોમ્પ્ટીંગ AI નો ઉપયોગ કરવાના અસ્પષ્ટ ફાયદાઓમાંનો એક એ છે કે તમારા પ્રોમ્પ્ટ્સ જેટલા વધુ ચોક્કસ અને અનુરૂપ છે, તેટલું સારું આઉટપુટ. AI એજન્ટને પ્રોમ્પ્ટ કરવાની પ્રક્રિયા અમને લખવા અને કોડ કરતા પહેલા અમારી જરૂરિયાતોને શક્ય તેટલી ચોક્કસ રીતે ઘડવા દબાણ કરે છે. તેથી જ, સામાન્ય નિયમ તરીકે, હું તમારા સંકેત સાથે શક્ય તેટલું ચોક્કસ રહેવાની ભલામણ કરું છું. રીમિક્સના સહ-લેખક રેયાન ફ્લોરેન્સ, વાક્ય સાથે તમારા પ્રારંભિક પ્રોમ્પ્ટને સમાપ્ત કરીને આ પ્રક્રિયાને સુધારવા માટે એક સરળ પણ શક્તિશાળી રીત સૂચવે છે: "અમે શરૂ કરીએ તે પહેલાં, શું તમારી પાસે મારા માટે કોઈ પ્રશ્નો છે?"
આ બિંદુએ, AI સામાન્ય રીતે મદદરૂપ પ્રશ્નો સાથે પાછા આવે છે જ્યાં તમે તમારા ચોક્કસ હેતુને સ્પષ્ટ કરી શકો છો, એજન્ટને તમારા કાર્ય માટે તમને વધુ અનુકૂળ અભિગમ પ્રદાન કરવા માટે માર્ગદર્શન આપે છે.
સંસ્કરણ નિયંત્રણનો ઉપયોગ કરો અને સુપાચ્ય હિસ્સામાં કામ કરો ગિટ જેવા વર્ઝન કંટ્રોલનો ઉપયોગ માત્ર એક જ કોડબેઝ પર ટીમ તરીકે સહયોગ કરતી વખતે જ કામમાં આવતો નથી પણ તમને એક તરીકે પ્રદાન કરવા માટે પણકટોકટીની સ્થિતિમાં પાછા ફરવા માટે સ્થિર પોઈન્ટ સાથે વ્યક્તિગત યોગદાનકર્તા. તેના બિન-નિર્ધારિત સ્વભાવને લીધે, AI કેટલીકવાર બદમાશ થઈ શકે છે અને ફેરફારો કરી શકે છે જે તમે જે હાંસલ કરવાનો પ્રયાસ કરી રહ્યાં છો તેના માટે ફક્ત મદદરૂપ નથી અને છેવટે વસ્તુઓને ન ભરવાપાત્ર રીતે તોડી નાખે છે. તમારા કાર્યને બહુવિધ કમિટ્સમાં વિભાજિત કરવાથી તમને સ્થિર પોઈન્ટ બનાવવામાં મદદ મળશે કે જ્યાં વસ્તુઓ બાજુમાં જાય તો તમે તેના પર પાછા આવી શકો છો. અને તમારા સાથી ખેલાડીઓ પણ તમારો આભાર માનશે, કારણ કે જ્યારે તમારા કોડને અર્થપૂર્ણ રીતે સારી રીતે સંરચિત ભાગોમાં વિભાજિત કરવામાં આવશે ત્યારે તેઓને તમારા કોડની સમીક્ષા કરવામાં સરળ સમય મળશે. સંપૂર્ણ સમીક્ષા કરો આ એક સામાન્ય શ્રેષ્ઠ પ્રથા છે, પરંતુ મારા મતે, વિકાસ કાર્ય માટે AI સાધનોનો ઉપયોગ કરતી વખતે તે વધુ મહત્વપૂર્ણ બની જાય છે: તમારા કોડના પ્રથમ નિર્ણાયક સમીક્ષક બનો. તમારા ફેરફારોની લાઇન પર પંક્તિથી આગળ વધવા માટે થોડો સમય લેવાની ખાતરી કરો, જેમ તમે કોઈ બીજાના કોડની સમીક્ષા કરો છો, અને તમારું કાર્ય તમારી પોતાની સ્વ-સમીક્ષા પસાર કરે તે પછી જ સબમિટ કરો. "અત્યારે મારા માટે બે બાબતો સાચી છે: AI એજન્ટો અદ્ભુત છે અને ઉત્પાદકતામાં વધારો કરે છે. જો તમે તમારા મગજને બંધ કરી દો અને સંપૂર્ણપણે છોડી દો તો તે એક વિશાળ સ્લોપ મશીન પણ છે."- આર્મીન રોનાચર તેના બ્લોગ પોસ્ટ એજન્ટ સાયકોસિસમાં: શું આપણે પાગલ થઈ રહ્યા છીએ?
નિષ્કર્ષ અને જટિલ વિચારો મારા મતે, AI કોડિંગ ટૂલ્સ ડેવલપર તરીકે દૈનિક ધોરણે અમારી ઉત્પાદકતામાં સુધારો કરી શકે છે અને વધુ આયોજન અને ઉચ્ચ-સ્તરની વિચારસરણી માટે માનસિક ક્ષમતાને મુક્ત કરી શકે છે. તેઓ અમને અમારા ઇચ્છિત પરિણામને ઝીણવટભરી વિગતો સાથે સ્પષ્ટ કરવા દબાણ કરે છે. કોઈપણ AI, અમુક સમયે, આભાસ કરી શકે છે, જેનો મૂળભૂત અર્થ એ છે કે તે આત્મવિશ્વાસના સ્વરમાં રહેલો છે. તેથી કૃપા કરીને તપાસો અને પરીક્ષણ કરવાનું સુનિશ્ચિત કરો, ખાસ કરીને જ્યારે તમને શંકા હોય. AI એ સિલ્વર બુલેટ નથી, અને હું માનું છું કે વિકાસકર્તા તરીકે શ્રેષ્ઠતા અને સમસ્યાઓ હલ કરવાની ક્ષમતા ક્યારેય ફેશનની બહાર જશે નહીં. વિકાસકર્તાઓ કે જેઓ હમણાં જ તેમની કારકિર્દીની શરૂઆત કરી રહ્યા છે, આ સાધનો તેમના માટે મોટાભાગનું કામ કરવા માટે ખૂબ જ આકર્ષક હોઈ શકે છે. અહીં જે ખોવાઈ શકે છે તે છે બગ્સ અને મુદ્દાઓ જે ડિબગ કરવા અને ઉકેલવા માટે મુશ્કેલ છે, ઉર્ફે "ધ ગ્રાઇન્ડ" દ્વારા વારંવાર નિષ્ક્રિય અને પીડાદાયક કાર્ય છે. કર્સર એઆઈના પોતાના લી રોબિન્સન પણ તેમની એક પોસ્ટમાં આ પ્રશ્ન કરે છે:
AI કોડિંગ ટૂલ્સ ઝડપી ગતિએ વિકસિત થઈ રહ્યા છે, અને આગળ શું થશે તે માટે હું ઉત્સાહિત છું. હું આશા રાખું છું કે તમને આ લેખ અને તેની ટીપ્સ મદદરૂપ લાગી છે અને આમાંથી કેટલાક તમારા માટે અજમાવવા માટે ઉત્સાહિત છો.