𝗩𝗶𝗯𝗲 𝗖𝗼𝗱𝗶𝗻𝗴 𝗜𝘀𝗻'𝘁 𝗧𝗵𝗲 𝗣𝗿𝗼𝗯𝗹𝗲𝗺. 𝗡𝗼𝘁 𝗨𝗻𝗱𝗲𝗿𝘀𝘁𝗮𝗻𝗱𝗶𝗻𝗴 𝗧𝗵𝗲 𝗦𝘁𝗮𝗰𝗸 𝗜𝘀.
ஒருமுறை ஒரு AI கருவி எனக்கு இந்த config கோப்பை வழங்கியது:
DATABASE_URL = "postgresql://admin:SuperSecret123@db.internal:5432/app"
API_KEY = "sk-live-4f9a..."
அது வேலை செய்கிறது. அதுதான் ஒரு பொறி. டெமோ இயங்குகிறது, மதிப்பாய்வாளர் (reviewer) தலையசைக்கிறார். ஆனால் அந்த ரகசியத் தகவல் (secret) இப்போது உங்கள் git வரலாற்றில் (history) என்றென்றும் இருக்கும். உங்கள் repo-விற்குள் நுழையும் எவரும் அதைப் பார்க்க முடியும்.
நான் ஒரு டெவலப்பர் அல்ல. நான் சிஸ்டம்ஸ் இன்ஜினியரிங்கில் (systems engineering) இருபது ஆண்டுகள் செலவிட்டேன். அப்ளிகேஷன்கள் இயங்கும் அடித்தளத்தை நான் உருவாக்குகிறேன். நான் ஹோஸ்ட்கள் (hosts), நெட்வொர்க் மற்றும் டேட்டாபேஸ்களை உருவாக்குகிறேன்.
நான் AI கருவிகளைப் பயன்படுத்தும்போது, மற்றவர்களைப் போலத் தவறுவதில்லை. அதற்கான காரணம் இதோ.
ஆண்ட்ரே கார்பதி (Andrej Karpathy) "vibe coding" பற்றி ஒருமுறை பேசினார், அது தற்காலிகத் திட்டங்களுக்கானது (throwaway projects). சிலர் இதை மிகத் தவறாக எடுத்துக்கொண்டனர். அவர்கள் குறியீட்டை (code) பார்ப்பதை நிறுத்திவிட்டார்கள். இப்போது, அவர்கள் சிஸ்டத்தையும் (system) பார்ப்பதை நிறுத்திவிட்டார்கள். நீங்கள் குறியீட்டைப் புறக்கணிக்கலாம், ஆனால் சிஸ்டத்தைப் புறக்கணிக்க முடியாது. சிஸ்டம் தான் உண்மையில் இயங்குகிறது.
AI வழங்கும் ஆலோசனைகளை நான் பெரும்பாலும் மாற்றியமைப்பேன் (override), ஏனெனில் அந்த மாடலுக்கு செயல்பாட்டு சூழல் (operational context) தெரிவதில்லை:
- Operating Systems: ஒரு பாதுகாப்பு அப்ளிகேஷனுக்கு AI விண்டோஸை (Windows) பரிந்துரைக்கலாம். அது உரிமச் செலவை (license cost) புறக்கணிக்கிறது. ஒரு இலவச உபுண்டு (Ubuntu) கணினி அதே வேலையை மலிவாகச் செய்யும்.
- Databases: ஒரு AI MySQL-ஐத் தேர்ந்தெடுக்கலாம். ஒரு வருடத்திற்குப் பிறகு அதிகாலை 2 மணிக்கு எந்த இன்ஜினை என்னால் நிர்வகிக்க முடியும் என்பது அதற்குத் தெரியாது.
- Security: ஒரு AI "login works" என்பதோடு நின்றுவிடும். உண்மையான பாதுகாப்பிற்கு நிபந்தனை அணுகல் (conditional access) மற்றும் நம்பகமான சாதனங்கள் (trusted devices) தேவை. இதை வெறும் 'vibes' மூலம் கண்டறிய முடியாது.
- Networking: ஒரு AI பெரும்பாலும் இணையத்திற்குத் திறந்த நிலையில் போர்ட்களை (ports) திறக்கப் பரிந்துரைக்கும். நான் அணுகலை குறிப்பிட்ட மேலாண்மை நெட்வொர்க்குகளுக்கு (management networks) மட்டுமே கட்டுப்படுத்துகிறேன்.
AI நெட்வொர்க்கை வேறொருவரின் பிரச்சனையாகக் கருதுகிறது. ஆனால் அது அப்படி இல்லை.
Hardcoded secrets-க்கான தீர்வு எளிது. சூழல் மாறிகளை (environment variables) பயன்படுத்தவும்:
import os
DATABASE_URL = os.environ["DATABASE_URL"]
நீங்கள் அதைத் தடுக்காவிட்டால், அந்த மாடல் ரகசியத் தகவல்களை உங்கள் கோப்புகளுக்குள்ளேயே (inline) சேர்த்துவிடும்.
Vibe coders தோல்வியடைகிறார்கள், ஏனெனில் அப்ளிகேஷன் குறியீடு மட்டுமே முழு சிஸ்டம் என்று அவர்கள் நினைக்கிறார்கள். அது உண்மையல்ல. ஒரு கட்டிடத்தின் ஒரு மாடிதான் அப்ளிகேஷன். நீங்கள் அடித்தளத்தை (foundation) சரியாக அமைக்கவில்லை என்றால், கட்டிடம் சரிந்துவிடும்.
நான் AI-ஐப் பயன்படுத்தும்போது, "எனக்காக X-ஐ உருவாக்கு" என்று தொடங்குவதில்லை. அது தயாரிப்பு நிலையில் (production) செயலிழந்து போகும் டெமோக்களை உருவாக்கும். நான் முதலில் கட்டுப்பாடுகள் (constraints) மற்றும் சமரசங்கள் (tradeoffs) பற்றி முப்பது நிமிடங்கள் விவாதிப்பேன். அந்த தர்க்கத்தின் அடிப்படையில் ஒரு விவரக்குறிப்பை (spec) எழுத அந்த மாடலைச் செய்வேன். இது பின்னர் பல மணிநேரத் தூய்மைப்படுத்தும் பணிகளைத் தவிர்க்க உதவும்.
பிரச்சனை கருவி அல்ல. மாற்றங்கள் எதைத் தொடுகின்றன என்பதைப் பார்க்காமல் மாற்றங்களைச் செய்வதே பிரச்சனை. நீங்கள் அடித்தளத்தைப் புரிந்து கொண்டால், vibes-ஐப் பின்பற்றுவது பாதுகாப்பானது.
பிரிக்கும் கோடு என்பது நீங்கள் எவ்வளவு குறியீடு தட்டச்சு செய்கிறீர்கள் என்பதில் இல்லை. உங்கள் குறியீடு எந்த அடித்தளத்தின் மீது நிற்கிறது என்பதை நீங்கள் புரிந்து கொள்கிறீர்களா என்பதுதான் அது.
மாடல் ஒவ்வொரு முறையும் தவறாகச் செய்வதால், நீங்கள் மீண்டும் மீண்டும் செய்ய வேண்டிய override என்ன?
ஆதாரம்: https://dev.to/kkierii/vibe-coding-isnt-the-problem-not-understanding-the-stack-is-4kif
விருப்பமான கற்றல் சமூகம்: https://t.me/GyaanSetuAi