যখন আপনার AI দিয়ে বানানো app তার প্রথম সংস্করণকে ছাড়িয়ে যায়: Refactor বনাম Rewrite

আপনি কিছু একটা শিপ করলেন। ইউজাররা ভালোবাসল। এখন দশজন ইউজার, আর তাদের দরকার আপনার বানানো গড়নে আঁটছে না। বর্তমান app-টা refactor করবেন, নাকি মেনে নেবেন যে এটা একটা প্রোটোটাইপ ছিল আর সঠিক উপায়ে নতুন করে বানাবেন — তা কীভাবে ঠিক করবেন, এখানে।

আপনি কিছু একটা শিপ করলেন। ইউজাররা ভালোবাসল। এখন দশজন ইউজার, আর তারা এমন ফিচার চায় যা আসল গড়নে আঁটে না। আপনি একটা দোমুখো রাস্তায় দাঁড়িয়ে: নতুন ব্যবহারের সঙ্গে খাপ খাওয়াতে app-টা তালি দেবেন, নাকি মেনে নেবেন যে প্রথম ভার্সনটা একটা প্রোটোটাইপ ছিল আর এটা ঠিকঠাকভাবে বানাবেন। এই প্রশ্নটাই আর যেকোনো প্রশ্নের চেয়ে বেশি ছোট প্রজেক্ট মেরে ফেলে, কারণ এর কোনো টেকনিক্যাল উত্তর নেই — শুধু একটা ব্যবসায়িক উত্তর আছে।

যে মুহূর্তে আপনি বুঝতে পারেন app-টা সফল

বেশিরভাগ AI দিয়ে বানানো app একটা জিনিস হিসেবে শুরু হয়ে আরেকটা হয়ে যায়। আপনি আপনার কোচিং প্র্যাকটিসের জন্য একটা ক্লায়েন্ট intake ফর্ম বানিয়েছিলেন; এখন ক্লায়েন্টরা অতীতের অ্যাপয়েন্টমেন্ট দেখতে আর নিজেরাই রিশিডিউল করতে চায়। আপনি একটা লিড স্কোরিং টুল বানিয়েছিলেন; এখন আপনার সেলস টিম চায় সারমর্মগুলো তাদের CRM-এ এক্সপোর্ট হোক। আপনি একটা ফাইলিং সিস্টেম বানিয়েছিলেন; এখন মানুষ এর ভেতরে একসঙ্গে কাজ করতে চায়।

প্রতিটা অনুরোধ যৌক্তিক। প্রতিটা app-টাকে এর গড়া উদ্দেশ্য থেকে একটু একটু করে দূরে টানে। আর একটা নির্দিষ্ট মুহূর্তে — ছয় মাস পর, কিংবা দুই মাস, কখনো দুই সপ্তাহ — আপনি ঘর্ষণটা টের পান। আপনি যা কিছু যোগ করেন তা ভিতের সঙ্গে লড়াই করে। নতুন ফিচারের জন্য লাগে “ও, আগে ওই অংশটা পুনর্বিন্যাস করতে হবে”। app ধীর হয়ে যায়। জিনিস বদলাতে আরও বেশি সময় লাগে।

ওই অনুভূতিটাই আপনার সংকেত যে ভেবে দেখা দরকার এটা এখনো একই app কি না, নাকি আপনি এটাকে ছাড়িয়ে গেছেন।

Refactor কী এনে দেয় আর কী খরচ করায়

Refactoring মানে একই app রাখা, কিন্তু এটা পরিষ্কার করা যাতে এর ওপর আরও কিছু বানাতে পারেন। আপনি আপনার AI builder-কে বলেন কোডটা পুনর্বিন্যাস করতে, একটা অতি-জটিল workflow ভাগ করতে, কিংবা ফিচারের ডাঁই হয়ে যাওয়া একটা স্ক্রিন নতুন করে ডিজাইন করতে। এতে কয়েক ঘণ্টা লাগে। এটা নতুন কোনো ফিচার যোগ করে না। এটা শুধু ভিতটা শক্ত করে।

Refactoring যখন কাজ করে, তখন এটা জাদু। আপনার মনে হচ্ছিল আপনি app-এর সঙ্গে লড়ছেন; হঠাৎ করে আর নয়। আপনি এক সপ্তাহে তিনটে নতুন ফিচার যোগ করেন, যা আগে তিন সপ্তাহ লাগত।

কিন্তু refactoring তখনই কাজ করে যখন সমস্যাটা আপনার যা আছে তার গড়ন। আপনি যদি একটা intake ফর্ম বানিয়ে থাকেন আর ইউজাররা একটা দ্রুততর intake ফর্ম চায়, তাহলে ধীর অংশটা refactor করা এক বিকেলের কাজ। তারা যদি এমন একটা intake ফর্ম চায় যা দ্রুত আর ইতিহাস সংরক্ষণ করে, তাহলেও এটা একটাই app, আর refactoring সাহায্য করতে পারে। কিন্তু তারা যদি অ্যাপয়েন্টমেন্ট ইতিহাস, ক্যালেন্ডার integration, SMS রিমাইন্ডার আর ইনভয়েসিং চায়, তাহলে আপনি আর একটা ভালো intake ফর্ম বানাচ্ছেন না — আপনি একটা কোচিং প্র্যাকটিসের ব্যাক অফিস বানাচ্ছেন। সেটা একটা ভিন্ন প্রোডাক্ট।

Rewrite কী এনে দেয় আর কী খরচ করায়

Rewriting মানে: আপনি শিখেছেন app-টা আসলে কী হওয়া উচিত, আর আপনি সেই জ্ঞান দিয়ে এটা শুরু থেকে বানাতে যাচ্ছেন। আপনি প্রথম ভার্সনটা ফেলে দেন না — আপনার ইউজাররা এখনো এর ওপর নির্ভর করে। কিন্তু আপনি একটা নতুন app একদম গোড়া থেকে বানান, পুরোনোটা আপনাকে যা শিখিয়েছে তা দিয়ে অবগত হয়ে, আর তারপর প্রস্তুত হলে ইউজারদের সেদিকে সরিয়ে নেন।

Rewriting অপচয়ের মতো লাগে। আপনি কিছু একটা বানিয়েছিলেন, আর এখন আবার সেটাই বানাচ্ছেন। ওটাই মানসিক খরচ। বাস্তব খরচটা হলো সময়: ইউজারদের সরানোর জন্য প্রস্তুত হওয়ার আগে নতুন ভার্সনে আপনি দুই থেকে চার মাস খরচ করবেন। আপনার আর প্রথম ভার্সনটা একটা ভরসা হিসেবে থাকবে না — আপনি কোনো জাল ছাড়াই সামনে এগোচ্ছেন।

কিন্তু rewriting আপনাকে এমন একটা জিনিস এনে দেয় যা আর কিছু পারে না: স্বাধীনতা। নতুন app পুরোনোটার গড়নে আবদ্ধ নয়। আসলটা যদি একটা সাধারণ ফর্ম হয় আর নতুনটার একটা পূর্ণ ব্যাক অফিস হওয়া উচিত, তাহলে আপনি শুরু থেকেই সেটার জন্য ডিজাইন করেন। পারফরম্যান্স যদি গুরুত্বপূর্ণ হয়, আপনি সেটার জন্য ডিজাইন করেন। সিকিউরিটি বা integration বা workflow যদি গুরুত্বপূর্ণ হয়, সেগুলো আর পরে জুড়ে দেওয়া জিনিস নয় — সেগুলো ভিত্তিগত।

যেসব app নতুন করে বানানোর পর সফল হয়, সেগুলো সাধারণত তা করে কারণ সমস্যাটা নিয়ে টিমের বোঝাপড়া আসল কোড থেকে এত দূরে সরে গিয়েছিল যে তালি দেওয়ার চেষ্টাটা ঠিকঠাক না-আঁটা জামাকাপড় পরার মতো লাগছিল। Rewriting মানে ছিল অন্য কারো জন্য নয়, নিজেদের জন্য বানানো।

এই দুটোর মধ্যে বেছে নেওয়ার তিনটে প্রশ্ন

প্রশ্ন ১: মূল গড়নটা কি এখনো ঠিক আছে?

আপনার মূল গড়ন হলো সেই এক বা দুটো প্রধান workflow যা app-কে সংজ্ঞায়িত করে। একটা কোচিং intake ফর্মের জন্য সেটা হলো “ক্লায়েন্ট intake পূরণ করে, কোচ পর্যালোচনা করে, কোচ শিডিউল করে।” আপনি যদি ভিন্ন workflow যোগ করছেন — ইনভয়েসিং, ক্যালেন্ডার ব্যবস্থাপনা, ক্লায়েন্ট মেসেজিং — তাহলে আপনি মূলটা বাড়াচ্ছেন না, আপনি পাশের ফিচার গুঁজে দিচ্ছেন। সেটা একটা লক্ষণ যে আপনি একটা ভিন্ন প্রোডাক্ট বানাচ্ছেন, যার মানে rewrite।

আপনি যদি একই মূলের রকমফের যোগ করছেন — “ব্যক্তিদের জন্য intake, টিমের জন্য intake, কাস্টম ফিল্ড সহ intake” — তাহলে সেটা এখনো একই app। Refactor করে বাড়িয়ে নিন।

প্রশ্ন ২: আজ refactor করলে, আবার ঘর্ষণ হওয়ার আগে আর কত মাস?

সৎ থাকুন। ঘর্ষণটা যদি ছয় মাসের জন্য চলে যায়, তাহলে refactoring-ই ঠিক পদক্ষেপ। এটা যদি দুই মাসেই আবার যন্ত্রণা দিতে যাচ্ছে কারণ সমস্যাটা কোডের গড়ন নয় বরং ভিত নিজেই, তাহলে rewriting আপনাকে দুবার তালি দেওয়ার মিথ্যা সাশ্রয়টা থেকে বাঁচায়। আপনার AI builder-কে জিজ্ঞেস করুন: “আমরা যদি এটা পরিষ্কার করি, আবার এটা করার দরকার হতে কত দিন লাগবে?” উত্তরটা যদি হয় “সম্ভবত বেশি দিন নয়,” তাহলে নতুন করে বানানোর সময়।

প্রশ্ন ৩: আপনার ইউজাররা আসলে কীসের ওপর নির্ভর করছে?

v1-এ আপনার যদি তিনজন সক্রিয় ইউজার থাকে আর আপনি নতুন করে বানানোর কথা ভাবছেন, তাহলে আপনি তাদের এক-দুই দিনে সরিয়ে নিতে পারেন। আপনার যদি পঞ্চাশজন ইউজার থাকে যারা বর্তমান app-এর ওপর প্রোডাকশন-নির্ভর, তাহলে rewriting মানে আপনাকে কয়েক মাস দুটো ভার্সনই চালু রাখতে হবে, যা নিজের মতোই এক ধরনের যন্ত্রণা।

যে পথটা সাধারণত কাজ করে

বেশিরভাগ ফাউন্ডার যারা সফলভাবে নতুন করে বানায়, তারা এটা সমান্তরালে করে: তারা আসল app-টা চালু রাখে আর উদ্বৃত্ত সামর্থ্য দিয়ে নতুনটা বানায়। নতুনটার যখন পুরোনোটার সমান ফিচার হয়ে যায়, তখন তারা এক সপ্তাহ ডেটা আর ইউজার মাইগ্রেট করতে ব্যয় করে, আর কাজ শেষ।

যে পথটা সাধারণত কাজ করে না: refactor, refactor, refactor, যতক্ষণ না তিনটে refactor পর আপনি বুঝতে পারেন আর্কিটেকচারটা এখনো ভুল, আর এখন আপনি “পুরোনো” ভার্সনে এতটাই বিনিয়োগ করে ফেলেছেন যে সেটা মেনে নিয়ে নতুন করে শুরু করতে পারছেন না।

সিদ্ধান্ত নেওয়ার সঠিক সময়

পরের বার যখন আপনি ঘর্ষণটা টের পান, নিজেকে জিজ্ঞেস করুন: “আমি কি এই app-টাকে যা করার কথা ছিল তা আরও ভালোভাবে করাচ্ছি? নাকি একে এমন কিছু হতে বলছি যার জন্য একে কখনো ডিজাইন করা হয়নি?” যদি প্রথমটা হয়, refactor করুন। যদি দ্বিতীয়টা হয়, তাহলে শুরু থেকেই যা হওয়া উচিত ছিল সেই জিনিসটা বানানোয় কোনো লজ্জা নেই। বেশিরভাগ সফল app মূলের version 2-তে থাকে, version 1-এ নয়।