এখনকার ভাবনা · ছয় পর্বে
6টির মধ্যে পর্ব 1 AI-কে নিয়ে ডেভেলপমেন্টের গোটা ব্যবস্থা গড়া
মাইগ্রেশনের মাঝপথে AI-first development বেছে নিলাম কেন
Cloud front-end-এর মাইগ্রেশনের মাঝেই AI-assisted কাজ থেকে AI-first development-এর দিকে যাওয়ার সিদ্ধান্ত নিয়েছিলাম। সেই বদলটা কাজে কীভাবে দেখতে চেয়েছিলাম, আর কোন সিদ্ধান্ত ও যাচাই আমার দিকেই থেকে যায়—সেই কথা।
কোড লেখার পাশাপাশি, কাজটা বোঝা আর ঠিক হয়েছে কি না মিলিয়ে দেখার জায়গাতেও AI-কে চাইছিলাম।
মাইগ্রেশনের মাঝে যে সিদ্ধান্তটা নিলাম
Cloud front-end-এর মাইগ্রেশন তখন মাঝপথে। সেই সময়েই ঠিক করলাম, কাজটা করার ধরনও বদলাব। AI-assisted development থেকে AI-first development-এর দিকে যেতে চেয়েছিলাম। মাইগ্রেশনের কাজটা সামনে ছিলই, কিন্তু যে প্রক্রিয়ায় কাজটা করছি, সেটাও বদলাতে চাইছিলাম।
AI-assisted development চলতি কাজের ধরনের মধ্যেই বেশ ভালভাবে বসে যায়। একটা component লিখতে বলতে পারি, কোনও কোড বুঝতে সাহায্য নিতে পারি, বা একটা test নিয়ে কাজ করতে পারি। এগুলো কাজে লাগে। কিন্তু কী দরকার, একই কনটেক্সট বারবার বুঝিয়ে বলা, পরের ধাপ ঠিক করা আর ফলটা কীভাবে যাচাই করব—এসব তখনও আমাকেই বয়ে নিয়ে যেতে হতে পারে। বেশি কোড লেখা হলেই কাজের এই দিকগুলো আপনা থেকে বদলে যায় না।
মাইগ্রেশনের মাঝপথে অন্যভাবে কাজ করার সিদ্ধান্ত নেওয়ার মানে ছিল, দুটো দিক একসঙ্গে ভাবা। প্রোডাক্টের কাজ এগোতে হবে, আর ডেভেলপমেন্টের প্রক্রিয়াটাও যেন সেই কাজে আরও পুরোপুরি সাহায্য করে। কোড তৈরি করার পদ্ধতি ভাল হলেই বাকি কাজ বোঝা বা যাচাই করা সহজ হয়ে যাবে, সেটা ধরে নিতে পারছিলাম না।
AI-কে কাজের কোন জায়গাগুলোতে চাইছিলাম
কোড লেখার পাশাপাশি, কাজটা বোঝা আর ঠিক হয়েছে কি না মিলিয়ে দেখার জায়গাতেও AI-কে চাইছিলাম। এখানে AI-first বলতে সেটাই বোঝাচ্ছি। গোটা ডেভেলপমেন্টের প্রক্রিয়ায় কোথায় AI কাজে আসতে পারে, সেটা ভাবতে চেয়েছিলাম—কোড লিখতে বলার আগে থেকে শুরু করে, ফলটা review করার জন্য যে যাচাইগুলো দরকার, সেগুলো পর্যন্ত।
কিছু বদলানোর আগে আমার বোঝা দরকার, সেটার কী করার কথা আর পুরনো কোন আচরণগুলো এখনও জরুরি। এই requirement কোথা থেকে এল? এখনকার আচরণ কোন জায়গায় ঠিকভাবে দেখা যাচ্ছে? আমি কী ধরে নিচ্ছি, আর বদলটা কীভাবে যাচাই করব? AI কাজটা গুছিয়ে নিতে সাহায্য করলে, এই প্রশ্নগুলোও তার অংশ হোক চাই। উত্তরগুলো যেন কোড লেখার সময় আর review করার সময়ও পাওয়া যায়।
কনটেক্সট পরিষ্কার হলে AI বদলের পরিকল্পনা করতে, কাজের নির্দিষ্ট একটা অংশ করতে আর ফলটা যাচাই করতে সাহায্য করতে পারে। দরকারি কথাগুলো যেন এই ধাপগুলোর মধ্যে হারিয়ে না যায়, সেটাই চাই। Requirement বদলালে বা কোনও যাচাইয়ে সমস্যা ধরা পড়লে, পরের ধাপে সেই তথ্যটা কাজে লাগাতে হবে। তা না হলে আলাদা আলাদা কাজ দ্রুত হলেও, গোটা প্রক্রিয়াটা জোড়া রাখার কাজ এখনও আমিই করছি।
পুরনো আচরণ ঠিক রাখার দায়টা থেকেই যায়
মাইগ্রেশনের কাজে এই ভাবনাটার একটা বাস্তব জায়গা আছে। নতুন সংস্করণে কী কী থাকতে হবে, তার প্রমাণের একটা অংশ পুরনো প্রোডাক্টের মধ্যেই আছে। কোডের গঠন ভাল করতে চাইতেই পারি, কিন্তু মানুষ কোন আচরণগুলোর ওপর নির্ভর করছেন, সেটা বোঝাও দরকার। একটা গোছানো component বা দেখতে ঠিকঠাক screen একা সেই উত্তর দিতে পারে না।
কোন সিদ্ধান্তের জন্য কোন উৎসটা দেখছি, সেটাও আমার জানা দরকার। দেখতে কেমন হওয়ার কথা, design সেটা বুঝতে সাহায্য করতে পারে। আবার পুরনো application আর তার API-এর আচরণ থেকে এমন কিছু জানা যেতে পারে, যা নতুনটাতেও ঠিক রাখতে হবে। দুটো জায়গার কথা না মিললে, পার্থক্যটা মেটাতে হবে বা অন্তত স্পষ্ট করে রাখতে হবে। AI-কে এগিয়ে যেতে বললেই অস্পষ্ট requirement পরিষ্কার হয়ে যায় না।
তাই AI-first development-এর দিকে যাওয়া মাইগ্রেশনের কাজে ঢিলে দেওয়ার কারণ হতে পারত না। বরং কোন আচরণ ঠিক রাখতে হবে, কী বদলাতে চাইছি, আর কোন প্রমাণ দেখে বিচার করব—এসব আরও স্পষ্ট করতে সাহায্য করা দরকার ছিল। একটা বদল review করার সময় এই কথাগুলো একসঙ্গে দেখতে পারা আমার দরকার।
যে সিদ্ধান্তগুলো এখনও আমাকেই নিতে হবে
AI-first মানে সব সিদ্ধান্ত কোনও agent-এর হাতে ছেড়ে দেওয়া নয়। কোন সমস্যাটা মেটাচ্ছি, কোন সীমাগুলো মানতে হবে, আর প্রস্তাবিত বদলটা কখন গ্রহণযোগ্য—এসব এখনও আমাকেই ঠিক করতে হবে। AI কোনও সিদ্ধান্তের দিকগুলো খতিয়ে দেখতে সাহায্য করতে পারে। কিন্তু আমি আসলে কী সিদ্ধান্ত নিয়েছি আর কেন নিয়েছি, সেটা পরিষ্কার থাকা দরকার।
কোনও requirement অস্পষ্ট হলে, মেটার আগে পর্যন্ত সেই অনিশ্চয়তাটা দেখা যাক চাই। কখনও পরের দরকারি কাজটা একটা প্রশ্ন করা, পুরনো প্রোডাক্টে মিলিয়ে দেখা, বা কী হওয়ার কথা সেটা নিয়ে কথা বলা। একটা বিশ্বাসযোগ্য implementation এসে গেল বলে, এখনও ঠিক না হওয়া কোনও প্রোডাক্টের প্রশ্নের উত্তর সেটাই হয়ে যাক, তা চাই না।
আবার প্রতিটা যান্ত্রিক ধাপ ধরে ধরে দেখতেও চাই না। যদি আমাকে বারবার এক tool থেকে অন্যটায় কনটেক্সট নিতে হয়, একই নির্দেশ আবার দিতে হয়, আর review করার আগে কী হয়েছিল সেটা নতুন করে সাজিয়ে বুঝতে হয়, তাহলে প্রক্রিয়াটায় এখনও কাজ বাকি। যে সিদ্ধান্ত আর সীমাবদ্ধতাগুলোয় আমার মন দেওয়া দরকার, সেখানেই সেটা দিতে চাই। সঙ্গে ফলটা বোঝার মতো প্রমাণও চাই।
কাজ হচ্ছে কি না কীভাবে বুঝব
শুধু কত তাড়াতাড়ি কোড আসছে, সেটা দিয়ে আমি বিচার করতাম না। কী বদলাল, কেন বদলাল, কী কী যাচাই হয়েছে আর কোনটা এখনও নিশ্চিত নয়—এসব বোঝা দরকার। কাজটা গ্রহণ করব কি না, সেটা ঠিক করতে এই উত্তরগুলো লাগে। পরে আবার বদলাতে ফিরলেও যেন এগুলো কাজে আসে।
প্রক্রিয়াটা আরও স্পষ্ট করতে খরচও আছে। কনটেক্সট গুছিয়ে নেওয়া আর কী যাচাই করব সেটা ঠিক করতে সময় লাগে। তাই প্রতিটা ছোট বদলের জন্য একইরকম আয়োজন দরকার বলে মনে করি না। একটা সোজাসাপ্টা লেখার সংশোধন আর পুরনো আচরণে প্রভাব ফেলতে পারে এমন মাইগ্রেশনের বদল—দুটোর যাচাই একরকম হবে না। সেই বিচার করার জায়গাটাও প্রক্রিয়ার মধ্যে থাকতে হবে।
মাইগ্রেশনের মাঝে এই দিকেই যেতে চেয়েছিলাম। এমন একটা ডেভেলপমেন্টের প্রক্রিয়া চাইছিলাম, যেখানে AI কাজ এগিয়ে নিতে সাহায্য করবে, আর সিদ্ধান্তগুলো বুঝে তার দায়ও আমি নিতে পারব। নামটার চেয়ে আমার কাছে বড় কথা, পরের বদলটা করতে গিয়েও এই প্রক্রিয়ার ওপর ভরসা করতে পারছি কি না। মাইগ্রেশন চালিয়ে যাওয়ার সঙ্গেই সেই জায়গাটার দিকে এগোতে চেয়েছিলাম।
পরের লেখায় যান
AI-কে নিয়ে ডেভেলপমেন্টের গোটা ব্যবস্থা গড়া
6টির মধ্যে পর্ব 1