শিরোনামগুলো বারবার বলছে যে AI সফটওয়্যার ডেভেলপারদের অপ্রাসঙ্গিক করে তুলবে। আমি তা বিশ্বাস করি না। আসল ঝুঁকি এটি নয় যে মেশিনগুলো ইঞ্জিনিয়ারিং দখল করে নেবে। আসল ঝুঁকি হলো ইঞ্জিনিয়াররা চিন্তা করার কঠিন কাজটি করা বন্ধ করে দেবে।
সফটওয়্যার কখনোই কেবল সিনট্যাক্স টাইপ করার বিষয় ছিল না। এটি সব সময় ছিল আপনার মাথায় জটিলতা ধরে রাখা, ব্যর্থতার ধরনগুলো বোঝা এবং যখন কোনো বিকল্পই নিখুঁত নয় তখন সঠিক ভারসাম্য (trade-offs) বজায় রাখা। AI আমাদের কোড তৈরির গতি পরিবর্তন করেছে, কিন্তু কেন আমাদের মানুষের প্রয়োজন, সেই কারণটি পরিবর্তন করেনি। বরং এটি স্পষ্ট চিন্তাভাবনাকে আরও মূল্যবান এবং দুর্লভ করে তুলেছে।
প্রথম খসড়া মানেই ইঞ্জিনিয়ারিং নয়
আমি দেখছি অনেক জুনিয়র ডেভেলপার ChatGPT বা Claude-কে পাশের চেয়ারে বসে থাকা একজন সিনিয়র ইঞ্জিনিয়ারের মতো ব্যবহার করছে। তারা একটি টিকিটের বিবরণ পেস্ট করে, উত্তরটি কপি করে, টেস্ট চালায় এবং কমিট করে দেয়। যদি কোডটি কম্পাইল হয়, তবে কাজ শেষ। এই প্রক্রিয়াটি দ্রুত, বাধাহীন এবং বিপজ্জনক।
AI ব্যবহার করা কোনো সমস্যা নয়। আমিও এটি ব্যবহার করি। আমার পরিচিত বেশিরভাগ দক্ষ ইঞ্জিনিয়ার এটি ব্যবহার করেন। সমস্যা তখনই শুরু হয় যখন AI কক্ষের একমাত্র ইঞ্জিনিয়ার হয়ে দাঁড়ায়। কোনো সমাধান কাজ করছে বলেই প্রথম সমাধানটি মেনে নেওয়া ইঞ্জিনিয়ারিং নয়। এটি হলো আপনার বিচারবুদ্ধিকে এমন একটি মডেলের ওপর ছেড়ে দেওয়া যা আপনার ব্যবহারকারী, আপনার ব্যবসার সীমাবদ্ধতা বা শেষবার কখন আপনার সিস্টেম রাত ২টায় ভেঙে পড়েছিল—তা কিছুই বোঝে না।
লার্জ ল্যাঙ্গুয়েজ মডেলগুলো অত্যন্ত আত্মবিশ্বাসের সাথে উত্তর দেয়, এমনকি যখন সেগুলো সম্পূর্ণ ভুল হয়। একজন ইঞ্জিনিয়ার একটি স্কেলেবল আর্কিটেকচার ডিজাইন করার জন্য AI-কে অনুরোধ করেছিলেন। মডেলটি একটি বিস্তারিত এবং কর্তৃত্বপূর্ণ প্রস্তাব প্রদান করল যা সম্পূর্ণ এমন একটি ফিচারের ওপর ভিত্তি করে তৈরি ছিল যা আসলে প্রোডাক্টটিতে ছিলই না। এটি দেখতে সঠিক মনে হচ্ছিল। এটি অভ্যন্তরীণভাবে সামঞ্জস্যপূর্ণ ছিল। কিন্তু এটি ছিল সম্পূর্ণ অকেজো। বিপদ শুধু এটি নয় যে AI ভুল তথ্য (hallucinate) তৈরি করে। বিপদ হলো এখন অনেক মানুষ সেই ভুল তথ্যগুলোকে বিশ্বাস করে কারণ মিথ্যাটি শনাক্ত করার মতো প্রেক্ষাপট বা কনটেক্সট তাদের আর নেই।
আপনি বাধা বা লড়াই থেকেই শেখেন
আমি যখন ভাবি কী আমাকে একজন জুনিয়র ডেভেলপার থেকে এমন একজন ব্যক্তিতে পরিণত করেছে যে একটি সিস্টেমের দায়িত্ব নিতে পারে, তখন আমার মুখস্থ করা সিনট্যাক্সগুলোর কথা মনে পড়ে না। আমার মনে পড়ে সিস্টেম ডাউন বা আউটটেজের কথা। আমার মনে পড়ে সেই ধীরগতির কুয়েরিগুলো (slow queries) যা আমাকে হাতে কলমে ট্র্যাক করতে হয়েছিল, সেই রেস কন্ডিশনগুলো যা কেবল প্রোডাকশন লোডের সময় দেখা দিত, এবং সেই ডিপ্লয়মেন্টগুলো যা ব্যর্থ হয়েছিল কারণ আমার লোকাল এনভায়রনমেন্ট বাস্তব জগতের মতো ছিল না।
ডিবাগিং হলো সেই জায়গা যেখানে প্রকৃত শিক্ষা ঘটে। যখন আপনি ম্যানুয়ালি কোড ধাপে ধাপে পরীক্ষা করেন, তখন আপনি বুঝতে পারেন সিস্টেমগুলো আসলে কেন ব্যর্থ হয়। আপনি আবিষ্কার করেন কোথায় বাধা বা বটleneck তৈরি হচ্ছে। আপনি শিখতে পারেন কীভাবে একটি আর্কিটেকচার কাজ করে যখন আপনি দশজন ব্যবহারকারীর ডেমো থেকে দশ হাজার সমসাময়িক রিকোয়েস্ট হ্যান্ডেল করা প্রোডাকশন সিস্টেমে চলে যান। আপনি গভীরভাবে উপলব্ধি করেন যে একটি সুন্দরভাবে স্ক্রিপ্ট করা ডেমো এবং বাস্তব প্রোডাকশনের মধ্যে পার্থক্য কী।
এই সমস্ত জ্ঞান কোনো জেনারেটেড উত্তর মেনে নেওয়ার মাধ্যমে আসে না। এটি আসে সমস্যার সাথে লড়াই করার মাধ্যমে। যদি AI প্রতিটি সংগ্রাম বা লড়াই দূর করে দেয়, যদি এটি কোড লিখে দেয়, বাগ ঠিক করে দেয় এবং ব্যর্থতার কারণ ব্যাখ্যা করে দেয়, তবে ডেভেলপারদের পরবর্তী প্রজন্ম ঠিক কীভাবে তাদের অভিজ্ঞতা বা সিনিয়রশিপ অর্জন করবে? অভিজ্ঞতা কোনো ডাউনলোড করা সার্টিফিকেট নয়। এটি হলো প্রোডাকশন ইনসিডেন্ট এবং ব্যর্থ ডিপ্লয়মেন্ট থেকে তৈরি হওয়া আপনার অর্জিত অভিজ্ঞতা বা ক্ষত। যদি আপনি লড়াই বা ঘর্ষণ (friction) সরিয়ে ফেলেন, তবে আপনি মানুষের বৃদ্ধি বা প্রবৃদ্ধিকেও সরিয়ে ফেলছেন।
বিচারবুদ্ধি জেনারেশনের চেয়েও শক্তিশালী
কিছু সময়ের জন্য ইন্ডাস্ট্রি 'প্রম্পট ইঞ্জিনিয়ারিং'-কে জীবনবৃত্তান্তে যোগ করার মতো একটি নতুন দক্ষতা হিসেবে বিবেচনা করেছিল। কিন্তু তা মূল বিষয়টি সম্পূর্ণ এড়িয়ে গিয়েছিল। AI-তে পরিপূর্ণ পরিবেশে সবচেয়ে মূল্যবান ক্ষমতা হলো অপশন তৈরি করা নয়; বরং কোন পরামর্শগুলো প্রত্যাখ্যান করতে হবে তা জানা।
আমি যাদের সাথে কাজ করি, সেই সেরা ইঞ্জিনিয়াররা সবচেয়ে বেশি প্রম্পট লেখেন না। তারা সবচেয়ে কঠিন প্রশ্নগুলো করেন। তারা জানেন কখন একটি রিফ্যাক্টর (refactor) একটি লুকানো ডিপেন্ডেন্সি তৈরি করে। তারা বুঝতে পারেন কখন একটি জেনারেটেড টেস্ট কেবল 'হ্যাপি পাথ' (happy path) কভার করে কিন্তু এমন কোনো এজ কেস (edge case) উপেক্ষা করে যা গ্রাহকের ডেটা নষ্ট করে দিতে পারে। তারা একটি নিখুঁত কোড দেখেও বলতে পারেন, "এই কোডটি সঠিক, কিন্তু আর্কিটেকচারটি ভুল।"
এই শেষ বাক্যটি দুটি ভিন্ন সংস্কৃতির মধ্যে বিভাজন রেখা। AI-assisted ইঞ্জিনিয়ারিং মানে হলো আপনি স্কাফোল্ডিং তৈরি করতে, প্যাটার্ন অন্বেষণ করতে বা বয়লারপ্লেট অটোমেট করতে মেশিন ব্যবহার করছেন, আর আপনার মস্তিষ্ক সিদ্ধান্তগুলো গ্রহণ করছে। অন্যদিকে, AI-dependent ইঞ্জিনিয়ারিং মানে হলো আপনি মেশিনকে চালনা করার দায়িত্ব দিয়ে দিচ্ছেন। অনেক প্রতিষ্ঠান নিঃশব্দে এই নির্ভরশীলতার দিকে ঝুঁকে পড়ছে কারণ স্বল্পমেয়াদে এটি দ্রুত মনে হয়। দ্রুত হওয়া মানেই সঠিক হওয়া নয়।
সেই কাজ যা এখনও মানুষের জন্য
AI ডেভেলপমেন্ট লাইফসাইকেলের প্রায় প্রতিটি অংশকেই ত্বরান্বিত করতে পারে, তবুও কিছু মূল অনুশীলন রয়েছে যা দৃঢ়ভাবে মানুষের হাতেই থাকা উচিত। সিস্টেম ডিজাইনের জন্য পরস্পরবিরোধী সীমাবদ্ধতাগুলোর মধ্যে ভারসাম্য বজায় রাখা প্রয়োজন: খরচ, ল্যাটেন্সি, নির্ভরযোগ্যতা এবং ভবিষ্যতের রক্ষণাবেক্ষণযোগ্যতা। আর্কিটেকচার রিভিউ প্রাতিষ্ঠানিক স্মৃতি এবং সেকেন্ড-অর্ডার প্রভাবগুলো অনুমান করার ক্ষমতার ওপর নির্ভর করে। মেন্টরশিপের জন্য এমন একজনকে প্রয়োজন যিনি প্রকৃতপক্ষে সেই ব্যর্থতার ধরনগুলোর মধ্য দিয়ে গেছেন যে সম্পর্কে তিনি আপনাকে সতর্ক করছেন। পণ্যের গভীর ধারণা ব্যবহারকারীদের সাথে কথা বলা এবং বাস্তব পরিবেশে তাদের আচরণ পর্যবেক্ষণ করার মাধ্যমে আসে, ট্রেনিং ডেটা পড়ার মাধ্যমে নয়।
ইঞ্জিনিয়ারিং বিচারবুদ্ধি হলো সেই সমস্ত অভিজ্ঞতার সমষ্টি। এটি সেই শান্ত কণ্ঠস্বর যা আপনাকে বলে দেয় যে একটি মাইগ্রেশন শুক্রবার বিকেলে শিপ করা অত্যন্ত ঝুঁকিপূর্ণ, এমনকি যদি কোড রিভিউ পাসও হয়ে থাকে। এটি সেই অন্তর্দৃষ্টি যা বলে দেয় যে এখনকার একটি পারফরম্যান্স অপ্টিমাইজেশন পরবর্তীতে একটি সিকিউরিটি হোল তৈরি করতে পারে। একটি LLM-এর কোনো অন্তর্দৃষ্টি নেই। এর আছে প্যাটার্ন। প্যাটার্নগুলো দরকারী, কিন্তু সেগুলো বিচারবুদ্ধি নয়।
বর্তমানে যে কোম্পানিগুলো নিয়োগ দিচ্ছে, তাদের কেবল AI টুল ব্যবহারে দক্ষ এমন মানুষের জন্য অপ্টিমাইজ করা বন্ধ করতে হবে। এমন লোক নিয়োগ দিন যারা AI-কে চ্যালেঞ্জ করতে পারে। এমন প্রার্থী খুঁজুন যারা থামবে, জেনারেট করা আউটপুটটি মনোযোগ দিয়ে পড়বে এবং কেন তারা এর সাথে একমত নয় তা ব্যাখ্যা করবে। তারাই সেই ইঞ্জিনিয়ার যারা আপনার সিস্টেমকে সুস্থ রাখবে যখন জেনারেট করা কোড প্রোডাকশনের জটিল বাস্তবতার মুখোমুখি হবে।
দিকনির্ণয়হীন ত্বরণ
AI-কে একটি এক্সিলারেটর প্যাডেল হিসেবে ভাবুন। এমন একটি গাড়িতে একটি
