ভাইব কোডিং
ভাইব কোডিং কী?
ভাইব কোডিং হল ২০২৪/২০২৫ সালে অ্যান্ড্রেজ কারপ্যাথি দ্বারা পরিচিত একটি এআই-চালিত প্রোগ্রামিং পদ্ধতি। ভাইব কোডিংয়ে, আপনি প্রাকৃতিক ভাষার প্রম্পটে যা চান তা বর্ণনা করেন এবং সাধারণত বৃহৎ ভাষার মডেলসমূহ (LLMs) আপনার জন্য অধিকাংশ, প্রায়ই সমস্ত কাজ করা কোড তৈরি করে দেয়। যদি আপনার সময় থাকে, তাহলে ভাইব কোডিং-এর শিল্প দেখুন, যা রিক রুবিন দ্বারা অভিযোজিত হয়েছে, যাতে ভাইব কোডিং-এর পদ্ধতি সম্পর্কে আরও জানতে পারেন।
এই নতুন পদ্ধতির একটি বড় সুবিধা হল অ্যাক্সেসিবিলিটি, কারণ কোডিংয়ের কোনো অভিজ্ঞতা না থাকা ব্যক্তিরাও প্রকল্প তৈরি করতে পারেন, এবং অভিজ্ঞ ডেভেলপাররা দ্রুত নতুন ধারণাগুলোর প্রোটোটাইপ তৈরি করতে পারেন পূর্ণতায় গিয়ে কাজ শুরু করার আগে। স্টার্টআপগুলোর জন্য এটি বিশেষভাবে সহায়ক। কিন্তু ত্রুটি হলো যে ডেভেলপাররা সম্ভবত জেনারেট হওয়া কোডটি সম্পূর্ণভাবে বুঝবে না। ছোট পার্শ্বপ্রকল্পগুলির জন্য এটা ঠিক আছে, কিন্তু প্রডাকশন-লেভেল সফটওয়্যারের জন্য এটি দীর্ঘমেয়াদী সমস্যা এবং টেকনিক্যাল ডেব্ট সৃষ্টি করতে পারে।
বাইব কোডিংকে সহজতর করতে অনেক টুল আছে। কার্সর IDE, ক্লাউড কোড CLI, গিটহাব কপাইলট, লাভএবল, রিপ্লিট, v0 এবং অন্যান্য সরঞ্জামগুলি আপনাকে আপনার পরিবেশেই সরাসরি এআই-র সাথে কাজ করার সুযোগ দেয় বা ভাইব কোডিংয়ের জন্য নিবেদিত ইন্টারফেস প্রদান করে। ব্যক্তিগতভাবে, আমি এই প্রকল্পগুলোর জন্য প্রধানত কার্সর IDE এবং ক্লাউড কোড CLI ব্যবহার করেছি।
কিন্তু ব্যাপারটি হলো—এই টুলগুলিও খরচসাপেক্ষ। প্রচলিত কোডিংয়ে আপনি প্রধানত আপনার সময় দিয়ে পরিশোধ করেন। ভাইব কোডিংয়ে, আপনি আপনার পকেট দিয়ে পরিশোধ করছেন। এবং যদি আপনি কি করছেন তা না জানেন, আপনি পকেট এবং আপনার সময়—দুয়েকেই দিয়ে পরিশোধ করছেন। এই পৃষ্ঠার প্রতিটি প্রকল্প তৈরি করতে খরচ হয়েছে প্রায় $10 থেকে $20। যদি আপনি প্রচুর পরীক্ষা-নিরীক্ষা করেন, তা যোগ হয়ে যায়। আমি মনে করি এই মডেলগুলো উন্নত এবং আরও দক্ষ হয়ে উঠলে খরচ অবরোধ হবে। আপাতত, যখন সিদ্ধান্ত নেবেন ভাইব কোডিং আপনার প্রকল্পের জন্য উপযুক্ত কি না, তখন এটি বিবেচ্য বিষয়ে পড়ে।
কি সম্ভব হবে সে বিষয়ে কৌতূহলী হয়ে, আমি নিজেই ভাইব কোডিং চেষ্টা করেছি এবং প্রকল্পগুলোর মাধ্যমে এই নীতিটি অন্বেষণ করতে এই পৃষ্ঠা তৈরি করেছি। আমি কেবল পণ্য তৈরি করছি না, আমি পরীক্ষা করছি এবং প্রদর্শন করছি ভাইব কোডিং বাস্তবে কী করতে পারে। এটা কেবল মজা করার জন্য, কিন্তু এটি দেখায় ভবিষ্যতে যখন এই মডেলগুলো আরও উন্নত হবে তখন কোডিং কেমন হতে পারে তার এক ঝলক।
অসীম বানর তত্ত্ব
আপনি কি অসীম বানর তত্ত্ব সম্পর্কে কখনও শুনেছেন? এটি একটি দার্শনিক চিন্তার পরীক্ষা যা বলে যে যদি আপনি অসীম সংখ্যক বানরকে অসীম সংখ্যক টাইপরাইটার এবং অসীম সময় দেন, অবশেষে তাদের মধ্যে একজন র্যান্ডমভাবে কী-বোর্ডে আঘাত করে উইলিয়াম শেক্সপিয়ার-এর সম্পূর্ণ রচনাসমূহও উৎপন্ন করবে।
অবাক লাগতে পারে, তাই না? কিন্তু এখানে অদ্ভুততা হচ্ছে—ভাইব কোডিং কিছুটা এরকমই, শুধু বানরের বদলে আমাদের কাছে আছে এআই মডেল, টাইপরাইটারের বদলে আছে কোডিং ভাষা, এবং শেক্সপিয়ারের বদলে আমরা পাচ্ছি কাজ করা সফটওয়্যার।
এটি সম্পর্কে ভাবুন। বৃহৎ ভাষার মডেলগুলো কোডের, প্যাটার্নের, এবং উদাহরণগুলোর বিলিয়ন লাইনের উপর প্রশিক্ষিত। যখন আপনি একটি LLM-কে প্রম্পট দেন, এটি মানুষের মতো ধাপে ধাপে আপনার সমস্যাটি “ভাবছে” না। বরং, এটি প্রশিক্ষণের সময় শিখে নেওয়া প্যাটার্নগুলোর ভিত্তিতে পরবর্তী সবচেয়ে সম্ভাব্য টোকেনটি ভবিষ্যদ্বাণী করে। এটি মৌলিকভাবে সঠিক বলে মনে হওয়া স্ট্যাটিস্টিক্যালি যেটা ঠিক সেটার উপর ভিত্তি করে কোড জেনারেট করে শিক্ষিত অনুমান করে।
আর কোনভাবে, প্রায়ইই, এটা কাজ করে। মডেল এমন কোড আউটপুট করে যা আসলে কম্পাইল হয়, চলে, এবং আপনার সমস্যার সমাধান করে। বুঝার মাধ্যমে নয়, বরং একটি বিশাল মাত্রায় সম্ভাব্য প্যাটার্ন মিলানোর মাধ্যমে। এটা যেন মহাবিশ্বের সবচেয়ে উন্নত র্যান্ডম টেক্সট জেনারেটর “সঠিক” উত্তরটি পেয়েছে। কিন্তু এখানে পার্থক্য হচ্ছে গতি। ওই বানরগুলোকে বাস্তবে অসীম সময় লাগবে। আপনার এআই? কয়েক সেকেন্ড বা মিনিটে সেখানে পৌঁছে যায়।
সুতরাং একভাবে, যখন আপনি ভাইব কোডিং ব্যবহার করেন, আপনি লক্ষ লাখ লাইন কোডের প্যাটার্নকে—একটি মডেলে সংক্ষিপ্ত করে—সমাধান জেনারেট করতে ব্যবহার করছেন। এটা সচেতন সমস্যা সমাধান নয়, এটা স্ট্যাটিস্টিক্যাল ম্যাজিক। এবং এজন্যই এটি এত শক্তিশালী এবং, স্বীকার করতে হবে, কেন কোডটি আসলে কী করে তা বোঝা এখনও গুরুত্বপূর্ণ।
প্রশ্নটি উত্তর থেকে বেশি গুরুত্বপূর্ণ
এখানে একটি গুরুত্বপূর্ণ বিষয় আছে যা প্রায়ই উপেক্ষিত হয়। ভাইব কোডিং কোনো উত্তর পাওয়ার ব্যাপার নয়, এটি সঠিক প্রশ্ন জিজ্ঞাসা করার ব্যাপার। ভাবুন [দ্য হ্যাচহাইকার’স গাইড টু দ্য গ্যালাক্সি]-এর (The Hitchhiker’s Guide to the Galaxy) Deep Thought সুপারকম্পিউটার সম্পর্কে। এটি জীবন, মহাবিশ্ব, এবং সমস্ত কিছুর চূড়ান্ত প্রশ্নের উত্তর বের করতে কোটি কোটি বছর কষে কাজ করে, এবং শেষে একটি সংখ্যা দেয়—42। উত্তরটি প্রযুক্তিগতভাবে সঠিক ছিল, কিন্তু অর্থহীন কারণ প্রকৃত সমস্যা ছিল প্রথমে কোন প্রশ্নটি জিজ্ঞাসা করা উচিত তা নির্ণয় করা।
ভাইব কোডিং একইভাবে কাজ করে। আপনার প্রম্পটই সবকিছু, কিন্তু সাথে সাথে কনটেক্সট ম্যানেজমেন্টও। অস্পষ্ট প্রম্পট আপনাকে অস্পষ্ট কোড দেবে, এবং যদি আপনি সঠিক ফাইল, ডকুমেন্টেশন, বা উদাহরণসমূহ কনটেক্সট হিসাবে না দেন, মডেল বুঝবে না আপনি ঠিক কী চান। যদি আপনি এমন একজন হন যে কোডিং, আর্কিটেকচার, এবং সিস্টেম ডিজাইন বোঝেন, আপনি বিস্তারিত প্রম্পট লিখে এবং সঠিক কনটেক্সট কিউরেট করে LLM-কে চমৎকার সমাধানের দিকে নির্দেশ করতে পারেন। কিন্তু যদি আপনি জানেন না কি চাইতে হবে বা কি কনটেক্সট দিতে হবে, এআই-ও জানবে না।
এই কারণেই ভাইব কোডিং অভিজ্ঞ ডেভেলপারদের জন্য এত শক্তিশালী। আমরা জানি ভালো কোড কেমন লাগে, আমরা ঝুঁকি বুঝি, এবং আমরা এমন প্রম্পট লিখতে পারি যা মডেলকে ভুল পথে যাওয়া থেকে বিরত রাখে। কিন্তু টেকনিক্যাল ব্যাকগ্রাউন্ড না থাকা শুরু করারদের জন্য এটি একটি বাস্তব সীমাবদ্ধতা হয়ে দাঁড়ায়। আপনি কাজ করা কোড পেতে পারেন, কিন্তু কি ভুল হয়েছে বা পরেরবার কী চাইতে হবে তা না জেনে আপনি আটকে পড়তে পারেন।
যখন ভাইব কোডিং যথেষ্ট নয়
সর্বশেষ এআই মডেলগুলো মারাত্মক ছাপ ফেলেছে, কিন্তু তারা কোনো জাদুকরী সমাধান নয়। ভাইব কোডিং প্রডাকশনে কাজ করতে পারে, কিন্তু কেবল যদি আপনি এতে সেরিয়াস হন। আপনার শক্তপোক্ত ইউনিট টেস্ট দরকার। আপনার সিস্টেম কী করতে হবে তার স্পষ্ট বিশ্বাসযোগ্য সূত্র থাকতে হবে। আপনাকে ধরতে হবে কখন কিছু ভেঙে পড়ছে বা কেবল হীরে যাচ্ছে। এবং আপনাকে হ্যাকারদের মানসিকতা দরকার। বাক্সের বাইরে চিন্তা করুন এবং অপ্রত্যাশিতভাবে আপনার ভাইব-কোডেড প্রকল্পটি ভেঙে দেখুন। আপনি কোন এজ কেসগুলো বিবেচনা করেননি? কোন নিরাপত্তার দুর্বলতাগুলো কেউ কাজে লাগাতে পারে? এটাই আলাদা করে দেয় কেবল কাজ করা কোড এবং এমন কোড যা বাস্তবে রবারাস্ট।
আবার ব্যাপারটা হলো—এআই আপনার মালিক নয়। আপনি এআই-র মালিক। কেবল যা জেনারেট করেছে তা গ্রহণ করবেন না। সেটি রিভিউ করুন। সেটি টেস্ট করুন। সেটি ভাঙুন। এবং সৎভাবে বলতে গেলে, আপনার কোডবেসের নির্দিষ্ট অংশগুলোর জন্য আপনাকে পুরনো স্কুল কোডিং-এ ফিরতে দিতে হবে। মনোযোগ দিয়ে বসুন, গভীরভাবে চিন্তা করুন, নিজে লিখুন। ভাইব কোডিং গতি বাড়ায়, কিন্তু যখন গুরুত্বপূর্ণ হয় তখন এটি প্রকৃত প্রোগ্রামিংয়ের বিকল্প নয়।
আরও একটি জিনিস আমি শিখেছি। কখনও কখনও আপনাকে এআই-র সাথে একটি সেশন শেষ করে নতুন করে শুরু করতে হয়। আপনার কথোপকথনের ইতিহাস যত বড় হয়, মডেলের কর্মক্ষমতা তত অবনতি ঘটে। এটি বেশি ভুল করে, কম সঙ্গতিপূর্ণ কোড জেনারেট করে, এবং আরও বেশি হলুসিনেশন করতে শুরু করে। আপনি যদি এটি ধরতে না পারেন এবং থামান না, এই ত্রুটিগুলো একে অপরের উপরে জড়ো হয় এবং পরিস্থিতি ক্রমশ খারাপ হয়। এটি এমন যেন বারবার ফটোকপি করা একটি ডকুমেন্ট পড়ার চেষ্টা করা। নতুন থেকে শুরু করলে বিষয়গুলো পরিষ্কার ও ধারালো থাকে।
ভাইব-কোডড প্রকল্পসমূহ
নীচে দুটি প্রকল্প আছে, স্টেয়ার্স (রিপো) এবং ট্রান্সসেন্ডেন্টাল (রিপো), যা আমি ভাইব কোডিং পদ্ধতি ব্যবহার করে তৈরি করেছি। বেশিরভাগই প্রম্পট থেকে জেনারেট করা হয়েছে, ম্যানুয়াল কাজ সীমাবদ্ধ ছিল কনটেক্সট প্রদান করা, ডিবাগিং করা, এবং GitHub পেজেস-এ ডিপ্লয় করা। এগুলো মজার স্ট্যাটিক সাইট এক্সপেরিমেন্ট যা প্রদর্শন করে যখন আপনি সৃজনশীল ধারণাগুলো কোডের সাথে মিলিয়ে ভাইব কোডিং ব্যবহার করেন তখন কি সম্ভব হতে পারে। উভয়েই হোস্ট করা আছে গিটহাব-এ।