আমি কোড লেখা বন্ধ করে দিয়েছি। তবুও ৩ দিনের মধ্যে আমার অ্যাপটি শিপ হয়েছে।
তিন মাস আগে, আমি একটি ফুল-স্ট্যাক SaaS ড্যাশবোর্ড তৈরি করেছিলাম। আমি মাত্র ২০০ লাইনের মতো কোড লিখেছিলাম। বাকিটা ছিল AI-জেনারেটেড, AI-রিভিউড এবং AI-রিফ্যাক্টরড।
অ্যাপটি এখন প্রোডাকশনে আছে। ব্যবহারকারীরা এর জন্য টাকা দিচ্ছে। বাগ (bug) নিয়ে দুশ্চিন্তা করে আমাকে আর রাত জাগতে হয় না।
এটি কোনো বড়াই নয়। এটি একটি সতর্কবার্তা।
ডেভেলপারদের ভূমিকা দ্রুত পরিবর্তিত হচ্ছে। যারা জিতবে তারা সেই ডেভেলপাররা নয় যারা AI-এর বিরুদ্ধে লড়াই করে। বরং তারা যারা এই পরিবর্তনটি বুঝতে পারে।
AI-native ডেভেলপমেন্ট হলো একটি নতুন মেন্টাল মডেল। এটি কেবল অটো-কমপ্লিট (autocomplete) নয়। এটি AI-কে একজন সহযোগী হিসেবে বিবেচনা করা। ইমপ্লিমেন্টেশনের দায়িত্ব AI-এর। আর আর্কিটেকচার, উদ্দেশ্য এবং বিচারবুদ্ধির দায়িত্ব আপনার।
পরিবর্তনটি দেখতে অনেকটা এরকম:
- পুরাতন মডেল: আপনি কোড লেখেন। AI আপনাকে দ্রুত লিখতে সাহায্য করে।
- নতুন মডেল: আপনি কী এবং কেন তা নির্ধারণ করেন। AI কীভাবে করতে হবে তা সামলায়। আপনি যাচাই করেন এবং দিকনির্দেশনা দেন।
যদি AI কোড লেখে, তবে শুধু কোডিং দক্ষতা আপনাকে অপরিহার্য করে তুলবে না। মেটা-স্কিল (Meta-skills) আপনাকে অপরিহার্য করে তুলবে।
AI প্যাটার্ন তৈরিতে দক্ষ। কিন্তু প্যাটার্ন নির্বাচনে এটি দুর্বল। AI জানে না:
- আপনার একটি server action নাকি API route প্রয়োজন।
- state কি Zustand-এ থাকবে নাকি URL param-এ।
- আপনার একটি monorepo প্রয়োজন কি না।
এগুলো হলো বিচারবুদ্ধির বিষয় (judgment calls)। এগুলোর জন্য আপনার টিম এবং কাজের পরিধি (scale) সম্পর্কে ধারণা থাকা প্রয়োজন। সেই ধারণা আপনার আছে, কিন্তু AI-এর নেই।
একজন জুনিয়র এবং একজন সিনিয়র AI ডেভেলপারের মধ্যে পার্থক্য হলো প্রম্পট (prompt)।
- দুর্বল প্রম্পট: একটি rate limiter লেখো।
- শক্তিশালী প্রম্পট: একটি Next.js API route-এর জন্য Redis-backed rate limiter middleware লেখো। প্রতি IP-তে প্রতি মিনিটে ১০টি রিকোয়েস্টের সীমা নির্ধারণ করো। একটি 429 error রিটার্ন করো। অ্যাডমিন ইউজারদের জন্য rate limiting বাদ দাও। Throttled রিকোয়েস্টগুলো একটি Prisma টেবিলে লগ করো।
দ্বিতীয় প্রম্পটটি আপনাকে প্রোডাকশন-রেডি (production-ready) কোড দেবে। এখন নির্ভুলতা (precision) হলো একটি শীর্ষস্থানীয় ইঞ্জিনিয়ারিং দক্ষতা।
আপনাকে ব্যর্থতার ধরনগুলো (failure modes) সম্পর্কেও সতর্ক থাকতে হবে। AI-এর লেখা কোড প্রায়ই দেখতে সঠিক মনে হলেও সূক্ষ্মভাবে ভুল হতে পারে। এটি টেস্ট পাস করতে পারে কিন্তু এর ভেতরে কোনো সিকিউরিটি হোল (security hole) বা রেস কন্ডিশন (race condition) লুকিয়ে থাকতে পারে। একজন জুনিয়র ডেভেলপারের কোড যেভাবে যাচাই করেন, ঠিক একইভাবে AI-এর আউটপুটকেও সমালোচনামূলক দৃষ্টিতে দেখুন।
যে ডেভেলপাররা AI-কে ভয় পান, তারা ভুল বিষয়ে মনোযোগ দেন। তারা কম কোড লেখার বিষয়ে দুশ্চিন্তা করেন। আসল ঝুঁকি হলো কোডের চারপাশের দক্ষতাগুলো উন্নত করতে ব্যর্থ হওয়া।
লক্ষ্য ডেভেলপার হওয়া বন্ধ করা নয়। বরং আরও ভালো একজন ডেভেলপার হওয়া।
অ্যাপটি ৩ দিনের মধ্যে শিপ হয়েছে কারণ আমি আমার সময় ব্যয় করেছি:
- ডেটা মডেল (data model) নিয়ে।
- ইউজার ফ্লো (user flow) নিয়ে।
- এজ কেস (edge cases) নিয়ে।
- বিজনেস লজিক (business logic) নিয়ে।
এখন এটাই হলো আসল কাজ।
আপনার বর্তমান AI-to-handwritten কোড রেশিও (ratio) কত? কমেন্টে আমাকে জানান।