વાઇબ કોડિંગ (Vibe Coding) સમસ્યા નથી. સ્ટેક (Stack) ને ન સમજવું એ સમસ્યા છે.

એક AI ટૂલે મને એકવાર આ કન્ફિગ ફાઇલ આપી હતી: DATABASE_URL = "postgresql://admin:SuperSecret123@db.internal:5432/app" API_KEY = "sk-live-4f9a..."

તે કામ કરે છે. એ જ તો જાળ છે. ડેમો ચાલે છે અને રિવ્યુઅર માથું હલાવે છે. પરંતુ તે સિક્રેટ હવે કાયમ માટે તમારા git history માં છે. જે કોઈ પણ તમારા repo માં પ્રવેશ કરે તે તેને જોઈ શકે છે.

હું ડેવલપર નથી. મેં સિસ્ટમ્સ એન્જિનિયરિંગમાં વીસ વર્ષ વિતાવ્યા છે. હું એ પાયો તૈયાર કરું છું જ્યાં એપ્લિકેશન્સ ચાલે છે. હું હોસ્ટ્સ, નેટવર્ક અને ડેટાબેઝ બનાવીશ.

જ્યારે હું AI ટૂલ્સનો ઉપયોગ કરું છું, ત્યારે હું બીજાની જેમ નિષ્ફળ નથી જતો. તેનું કારણ અહીં છે.

એન્ડ્રેજ કાર્પાથીએ (Andrej Karpathy) "throwaway projects" માટે "vibe coding" વિશે વાત કરી હતી. કેટલાક લોકોએ આને જરૂર કરતાં વધુ આગળ વધારી દીધું. તેઓએ કોડ જોવાનું બંધ કરી દીધું. હવે, તેઓ સિસ્ટમ જોવાનું પણ બંધ કરી રહ્યા છે. તમે કોડને અવગણી શકો છો, પરંતુ તમે સિસ્ટમને અવગણી શકતા નથી. સિસ્ટમ એ છે જે ખરેખર ચાલે છે.

હું અવારનવાર AI ના સૂચનોને ઓવરરાઈડ (override) કરું છું કારણ કે મોડેલમાં ઓપરેશનલ સંદર્ભ (operational context) નો અભાવ હોય છે:

  • Operating Systems: એક AI સુરક્ષા એપ્લિકેશન માટે Windows સૂચવી શકે છે. તે લાયસન્સના ખર્ચને અવગણે છે. એક મફત Ubuntu બોક્સ તે જ કામ સસ્તામાં કરી શકે છે.
  • Databases: એક AI MySQL પસંદ કરી શકે છે. તેને ખબર નથી હોતી કે એક વર્ષ પછી રાત્રે ૨ વાગ્યે હું કયા એન્જિનનું સંચાલન કરી શકીશ.
  • Security: એક AI "login works" ત્યાં જ અટકી જાય છે. વાસ્તવિક સુરક્ષા માટે કન્ડિશનલ એક્સેસ (conditional access) અને ટ્રસ્ટેડ ડિવાઇસીસની જરૂર હોય છે. તમે માત્ર 'વાઇબ્સ' દ્વારા તે મેળવી શકતા નથી.
  • Networking: AI ઘણીવાર આખા ઇન્ટરનેટ માટે પોર્ટ્સ ખોલવાનું સૂચવે છે. હું એક્સેસને ચોક્કસ મેનેજમેન્ટ નેટવર્ક્સ સુધી મર્યાદિત રાખું છું.

AI નેટવર્કને બીજા કોઈની સમસ્યા તરીકે જુએ છે. પણ તે નથી.

હાર્ડકોડેડ સિક્રેટ્સ (hardcoded secrets) માટેનો ઉકેલ સરળ છે. એન્વાયરમેન્ટ વેરિયેબલ્સ (environment variables) નો ઉપયોગ કરો: import os DATABASE_URL = os.environ["DATABASE_URL"]

જ્યાં સુધી તમે તેને રોકશો નહીં ત્યાં સુધી મોડેલ તમારી ફાઇલોમાં સિક્રેટ્સ ઇનલાઇન (inline) કરી દેશે.

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

જ્યારે હું AI નો ઉપયોગ કરું છું, ત્યારે હું "build me X" થી શરૂઆત નથી કરતો. તે એવા ડેમો બનાવે છે જે પ્રોડક્શનમાં તૂટી જાય છે. હું પહેલા મર્યાદાઓ (constraints) અને ટ્રેડ-ઓફ્સ (tradeoffs) વિશે વાત કરવામાં ત્રીસ મિનિટ વિતાવું છું. હું તે લોજિકના આધારે મોડેલ પાસે સ્પેસિફિકેશન (spec) લખાવું છું. આનાથી પછીના કલાકોના ક્લીનઅપથી બચી શકાય છે.

સમસ્યા ટૂલની નથી. સમસ્યા એ છે કે ફેરફારો કરવાથી તે શું અસર કરશે તે જોયા વગર ફેરફાર કરવા. જો તમે પાયાને સમજો છો, તો વાઇબ્સ (vibes) ને અનુસરવા સુરક્ષિત છે.

મુખ્ય તફાવત એ નથી કે તમે કેટલો કોડ ટાઈપ કરો છો. પરંતુ તે એ છે કે તમે જે પાયા પર તમારો કોડ ટકી રહ્યો છે, તેને તમે સમજો છો કે નહીં.

એ કયો ઓવરરાઈડ (override) છે જે તમારે વારંવાર કરવો પડે છે કારણ કે મોડેલ દર વખતે ભૂલ કરે છે?

સ્ત્રોત: https://dev.to/kkierii/vibe-coding-isnt-the-problem-not-understanding-the-stack-is-4kif

વૈકલ્પિક લર્નિંગ કોમ્યુનિટી: https://t.me/GyaanSetuAi