সফটওয়্যার ইঞ্জিনিয়ারিং মৃত। টেক টুইটারের সবচেয়ে জোরালো কণ্ঠস্বরগুলো আপনাকে ঠিক এটাই বিশ্বাস করাতে চায়। তারা এআই (AI) টুলের স্ক্রিন রেকর্ডিং শেয়ার করে যেখানে দেখা যায় একটি মাত্র প্যারাগ্রাফ প্রম্পট থেকে সম্পূর্ণ অ্যাপ্লিকেশন তৈরি হয়ে যাচ্ছে, এবং তারা প্রশ্ন করে যে কেন কেউ এখনও কোড লেখার জন্য একজন মানুষকে টাকা দেবে। এই আতঙ্কটি বোধগম্য, কিন্তু এটি মূল বিষয়টি সম্পূর্ণভাবে এড়িয়ে যাচ্ছে।
AI ইঞ্জিনিয়ারদের জন্য আসছে না। এটি আসলে তাদের জন্য আসছে যারা টাইপিং গতিকে প্রযুক্তিগত বিচারবুদ্ধি (technical judgment) বলে ভুল করে। কোডিং এবং ইঞ্জিনিয়ারিংয়ের মধ্যে একটি বিশাল ব্যবধান রয়েছে, আর সেই ব্যবধানের মধ্যেই এই পুরো পেশাটি টিকে আছে।
আপনি আপনার কফি শেষ করার আগেই একটি AI অ্যাসিস্ট্যান্ট আপনাকে একটি ফিচার ইমপ্লিমেন্ট করার পাঁচটি ভিন্ন উপায় বলে দিতে পারে। বাধার জায়গাটি (bottleneck) পরিবর্তিত হয়েছে। আমরা আর একটি খালি ফাইলের দিকে তাকিয়ে ভাবি না কীভাবে শুরু করতে হবে। আমরা এখন পাঁচটি সম্ভাব্য সমাধানের দিকে তাকিয়ে ভাবি যে কোনটি রিয়েল ট্রাফিক আসার সাথে সাথে ভেঙে পড়বে না। সেই সিদ্ধান্ত গ্রহণ করাই হলো ইঞ্জিনিয়ারিং। বাকি সবকিছু কেবল সিনট্যাক্স (syntax)।
ডেমোটি আসল পণ্য নয়
যেকোনো AI কোডিং ডেমো দেখলে আপনি দেখবেন কয়েক মিনিটের মধ্যে একটি সুন্দর ইন্টারফেস তৈরি হয়ে যাচ্ছে। কিন্তু আপনি যা দেখতে পাবেন না তা হলো লোডের চাপে একটি ডেটাবেস কানেকশন পুল কীভাবে শেষ হয়ে যাচ্ছে। আপনি একটি API এন্ডপয়েন্টে রেট লিমিটের অভাব, অডিট লগ না থাকা, অথবা প্রতিটি ইউজার ইন্টারঅ্যাকশন একটি অবজেক্ট বাকেটে লগ করার ফলে সৃষ্ট স্টোরেজ খরচ দেখতে পাবেন না—কারণ AI ভেবেছিল এটি স্টেট (state) রাখার জন্য একটি সুবিধাজনক জায়গা।
প্রোডাকশন সিস্টেমের জন্য স্কেলেবিলিটি, সিকিউরিটি, পারফরম্যান্স এবং খরচ নিয়ন্ত্রণের প্রয়োজন হয়। এই গুণগুলো একটি স্প্রিন্ট রিভিউতে দেখা যায় না। এগুলো কেবল তখনই প্রকাশ পায় যখন প্রকৃত ব্যবহারকারীরা তাদের অননুমেয় আচরণ, তাদের এজ কেস (edge cases) এবং আপনি যেভাবে আশা করেছিলেন সেভাবে বাটন ক্লিক না করার প্রবণতা নিয়ে আসে। আমি এমন অনেক AI-অ্যাসিস্টেড প্রজেক্ট দেখেছি যা QA-তে সব ঠিকঠাক (green) দেখালেও লঞ্চ করার সপ্তাহখানেকের মধ্যেই ব্যয়বহুল শিক্ষা হয়ে দাঁড়ায়।
কার্যকর কোড এখন সস্তা হয়ে গেছে। কিন্তু ভালো ইঞ্জিনিয়ারিং নয়।
এখন যা গুরুত্বপূর্ণ
এই পরিবর্তনের সাথে যারা সফল হচ্ছে তারা দ্রুত টাইপ করতে পারে এমন কেউ নয়। তারা হলো সেই সব মানুষ যারা একটি লাইন তৈরি হওয়ার আগেই জানে কোন প্রশ্নগুলো করতে হবে।
তারা সমস্যাগুলো স্পষ্টভাবে সংজ্ঞায়িত করে। আপনি যদি অনুমতি দেন, তবে একটি AI মডেল সানন্দে ভুল সমস্যা সমাধান করে দেবে। এটি একটি রিড-হেভি (read-heavy) ড্যাশবোর্ডের জন্য একটি জটিল ক্যাশিং লেয়ার তৈরি করে দেবে যা কেবল ছয়জন অভ্যন্তরীণ অ্যানালিস্ট ব্যবহার করে। এটি থামবে না এটা জিজ্ঞাসা করতে যে আসল সমস্যাটি কি একটি ডেটাবেস ইনডেক্সের অভাব নাকি মৌলিকভাবে ত্রুটিপূর্ণ একটি ডেটা মডেল। একজন দক্ষ ইঞ্জিনিয়ার সমস্যাটিকে ততক্ষণ পর্যন্ত নতুনভাবে সাজায় (reframes) যতক্ষণ না সমাধানটি স্পষ্ট হয়ে ওঠে, তা সেই সমাধান কোড সংক্রান্ত হোক বা না হোক।
তারা বড় সিস্টেমগুলোকে ছোট ছোট অংশে বিভক্ত করে। AI লোকাল কনটেক্সটে (local context) পারদর্শী। এটি একটি একক ফাংশন, একটি একক কম্পোনেন্ট বা একটি একক টেস্ট লিখতে পারে। কিন্তু একটি সম্পূর্ণ ডিস্ট্রিবিউটেড আর্কিটেকচার মনে রাখতে এটি হিমশিম খায়। ইঞ্জিনিয়ার যারা একটি মনোলিথকে (monolith) ভেঙে ফেলতে পারেন, সার্ভিসের চারপাশে সীমানা নির্ধারণ করতে পারেন এবং টিমের মধ্যে কন্ট্রাক্ট (contracts) সংজ্ঞায়িত করতে পারেন, তারাই জেনারেট করা কোড স্নিপেটগুলোকে টেকসই সিস্টেমে রূপান্তরিত করেন।
তারা AI-এর পরামর্শগুলোকে চ্যালেঞ্জ করে। মডেলের আত্মবিশ্বাস একটি মরীচিকা মাত্র। এটি এমন আর্কিটেকচার প্রস্তাব করতে পারে যা নেটওয়ার্ক ল্যাটেন্সি (latency) উপেক্ষা করে, এমন লাইব্রেরি সুপারিশ করতে পারে যা বহু বছর আগে বাতিল (deprecated) হয়ে গেছে, অথবা এমন ফিচার সমাধান করতে পারে যা আসলে রিকোয়ারমেন্টে নেই।
