একটি সফটওয়্যার প্রোডাক্ট ব্যর্থ হবার অনেকগুলো কারণ থাকতে পারে। বিজনেস মডেল, প্রোডাক্ট ডিজাইন, ইঞ্জিনিয়ারিং, ম্যানেজমেন্ট, সেলস, মার্কেটিং ইত্যাদি নানা ডিসিপ্লিনের যেকোন বড় ভুল এমনকি পর্যাপ্ত ইনভেস্টমেন্ট এর অভাব একটি প্রোডাক্টের সফল হবার পথে অন্তরায় হতে পারে। এখানে আমি শুধুমাত্র ইঞ্জিনিয়ারিং ডিসিপ্লিনে যেসব ভুল আমাদের একটি সফটওয়্যার প্রোডাক্টের ব্যর্থতায় অবদান রেখেছে তা নিয়ে কথা বলবো।

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

তো তৎকালীন সময় আমার মাথায় স্কেলেবল সিস্টেম এর ভূত চেপেছিল। নতুন কোন বিষয়ে অল্প স্বল্প জ্ঞ্যান লাভ করলে যা হয় আরকি, সবকিছুতেই এই জ্ঞ্যানের ব্যবহার করা অত্যাবশ্যক হয়ে গেল। আর এদিকে ডাটা সায়েন্স, বিগডাটা, নো-সিকুয়েল, ডিপ-লার্নিং ইত্যাদি শব্দ তখন বেশ জনপ্রিয় হতে শুরু করেছে। যেকোন নতুন টেকনোলজি নিয়ে অসীম আগ্রহ দেখানো এবং নিজেকে অন্য ইঞ্জিনিয়ারদের থেকে স্মার্ট বা কুল হিসেবে প্রমাণ করার তাগিদ থেকে প্রয়োজন থাকুক বা না থাকুক সব কিছুতে সেই নতুন টেকনোলজি ঢুকিয়ে দেয়া ইঞ্জিনিয়ারদের একটি জাতিগত সমস্যা।

কার্টুনটি নেয়া হয়েছে xkcd কমিক ওয়েবসাইট থেকে

তো আমিও যেহেতু একজন তথাকথিত "স্মার্ট" সফটওয়্যার ইঞ্জিনিয়ার, সুতরাং এইসব টেকনোলজি নিয়ে কাজ না করলে আমার জাত থাকবে কি করে? তার উপর বাঘা বাঘা সব ইঞ্জিনিয়ারদের টিম লিড আমি, গুগল/ফেসবুক স্কেল এর সিস্টেম ডিজাইন না করলে তো আর মান সম্মান কিছু বাকি থাকছে না। এদিকে প্রাথমিক ধারণা অনুযায়ী লক্ষাধিক শিক্ষার্থী এই সিস্টেম একসাথে ব্যবহার করতে পারে এমন তথ্যের গন্ধ পাওয়া মাত্র আমার মস্তিষ্কে কনফার্মেশন বায়াস এর নিউরন গুলো জ্বলে উঠতে শুরু করলো।

কার্টুনটি নেয়া হয়েছে chainsawsuit কমিক ওয়েবসাইট থেকে

সুতরাং হাওয়ায় ভেসে আসা এই তথ্যের ভিত্তিতে কোন স্ট্যাটিস্টিক্যাল এনালিসিস ছাড়াই সিস্টেমটি ওই লেভেল এর স্কেলেবল করতে আমি উঠে পড়ে লাগলাম স্কেলেবিলিটির স্বল্প জ্ঞ্যান নিয়েই। ফলাফল দাঁড়ালো নিচের আর্কিটেকচার ডিজাইনঃ

ই-শিক্ষা প্ল্যাটফর্ম টেকনিক্যাল আর্কিটেকচার ব্লক ডায়াগ্রাম

যেহেতু আমরা একটি "ডিস্ট্রিবিউটেড", "হরাইজোন্টালি স্কেলেবল" সিস্টেম তৈরি করতে যাচ্ছি। তাই এই আর্কিটেকচার ব্লক ডায়াগ্রাম অনুসারে আমাদের একটি লোড ব্যালান্সার এর মাধ্যমে অনেকগুলো ওয়েব এপ্লিকেশন সার্ভারে এত এত ব্যবহারকারির লোড ব্যাল্যান্স করে দিতে হবে। ওয়েব এপ্লিকেশন তৈরি করতে ব্যবহার করা হবে নোড-জেএস এর ওয়েব ফ্রেমওয়ার্ক এক্সপ্রেস। কারণ যেহেতু নোড একটি এসিঙ্ক্রনাস জাভাস্ক্রিপ্ট নেটওয়ার্ক প্রোগ্রামিং লাইব্রেরী, পিএইচপি-পাইথন-জাভা ইত্যাদির ন্যায় থ্রেড মডেল ব্যবহার করেনা, তাই এটি একইসাথে অনেক বেশি ব্যবহারকারির ওয়েব রিকুয়েস্ট সার্ভ করতে পারবে এটাতো সহজেই বোধগম্য। আর কঙ্কারেন্সি-প্যারালেলিসম এর হাউকাউ শুনার সময় কই, "বেঞ্চমার্ক" আছেনা? ওসব নিয়ে নাহয় আরেকদিন বিস্তারিত আলোচনা করবো।

এবার আসি ডাটাবেজ প্রসঙ্গে। নো-সিকুয়েল এর যুগে কি আর সিকুয়েল ডাটাবেজ দিয়ে চলে? কিন্তু ডাটাবেস এক্সপার্ট লোকজন তো আবার জনপ্রিয় নো-সিকুয়েল ডাটাবেজ মঙ্গডিবিকে নিয়ে ঠাট্টা-বিদ্রূপ করে। তার উপর আবার আমাদের তো "হাই এভেইলেবিলিটি" না হলে চলছে না। তো কিছু পড়াশুনার পরে বোঝা গেল নো-সিকুয়েল ডাটাবেজ গুলোর মধ্যে ক্যাসান্ড্রা এসব ক্ষেত্রে অনেক বেশি এগিয়ে।

আর ক্যাসান্ড্রার ইতিহাস বলে এটি তৈরি করেছিল ফেসবুক, যা কিনা ডিস্ট্রিবিউটেড স্টোরেজ সিস্টেমস এর অনন্য দুটি রিসার্চঃ গুগলের বিগ টেবল এবং এমাজনের ডায়নামো থেকে নেয়া আইডিয়াগুলোর সমন্বয়ে তৈরি। সুতরাং মঙ্গডিবির মত সহজ না হোক তাতে কি, গুগল-এমাজন-ফেসবুক লেভেল এর স্কেলেবল ডাটাবেজ ব্যবহার করা তো আর সহজ হবে না তাই না। তাই আমি ক্যাসান্ড্রা কেই আমাদের ডাটাবেজ হিসেবে নির্বাচন করলাম।

ক্যাসান্ড্রা তৈরির ইতিহাস

এদিকে প্ল্যাটফর্মটি যেহেতু কোড সরাসরি ব্রাউজারে রান করতে পারবে এবং সম্পূর্ন ইন্টারেক্টিভ প্রোগ্রাম ইনপুট আউটপুট সাপোর্ট করবে, সুতরাং কাফকা এর মত একটি ডিস্ট্রিবিউটেড এবং ডিউরেবল স্ট্রিম মেসেজিং সিস্টেম ছাড়া তো আর চলবেই না তাই না? রেডিস বা র‍্যাবিটএমকিউ হলেও হয়তো চলতো। কিন্তু কিছু পড়াশুনার পরে বোঝা গেল কাফকা "হরাইজোন্টালি স্কেলেবল" সিস্টেম তৈরি করতে সবচেয়ে ভাল কাজ করবে। পাশাপাশি কাফকা এর মেসেজ ডিউরেবিলিটি এবং ডিস্ট্রিবিউটেড মেসেজ অর্ডারিং গ্যারান্টি খুবই গুরুত্বপূর্ন দুটি ফিচার যা আমাদের একে বেছে নিতে আরও প্রলুব্ধ করলো।

Mathias Verraes Tweet

আর যেহেতু মানুষের লিখা কোড আমাদের সার্ভারে রান করবে, তাই সকল রানিং প্রোগ্রামের জন্য একই রকম পরিবেশ এবং সিকিউরিটি স্যান্ডবক্স দিতে আমরা তৈরি করলাম ডকার ভিত্তিক কোড কম্পাইলার এন্ড কম্পিউটেশন ইঞ্জিন, সংক্ষেপে C3 ইঞ্জিন। আর এনালিটিক্স ও এডাপ্টিভ রেকমেন্ডেশন সিস্টেম ছিল নিজেই আরেকটি বড় হস্তি যা ছিল স্কেলেবল এনালিটিক্স এর জন্য প্রসিদ্ধ ল্যাম্বডা আর্কিটেকচার অনুযায়ী তৈরি করা আরেকটি কমপ্লেক্স সিস্টেম। আর এই এনালিটিক্স ডাটা এর উপর ভিত্তি করে তৈরি করা পাঠক্রম রেকমেন্ডেশন সিস্টেমটি প্রাথমিকভাবে কোলাবোরেটিভ ফিল্টারিং করতে এপাচি মাহুত নামের আরেক মেশিন লার্নিং ফ্রেমওয়ার্ক ব্যবহার করবে।

ল্যাম্বডা আর্কিটেকচার

শুধু তাই না, কমপ্লেক্সিটি যেন একটু কম হয়ে গেছে, তাই অবস্থা আরও শোচনীয় করতে নতুন কিছু সমস্যা উদয় হল। যেহেতু আমরা সার্ভার সাইডে নোড ব্যবহার করার সিদ্ধান্ত নিয়েছিলাম এবং ডাটাবেস হিসেবে ক্যাসান্ড্রা, কিন্তু নোড এর জন্য ভাল কোন Cassandra ORM/ODM ছিলনা। SailsJS এর Waterline ORM যদিও বা Cassandra Adapter সাপোর্ট করতো, কিন্তু Waterline এর ডিজাইন এতটাই সিকিউএল কেন্দ্রিক যে, যেসব কারণে কেউ সিকিউএল ডাটাবেস এর বদলে ক্যাসান্ড্রা ব্যবহার করবে সেসব ফিচারের সাপোর্টই ওখানে নেই এবং থাকা সম্ভবও নয়। সুতরাং Waterline এর Cassandra Adapter was a joke. তো কি আর করা আমরা নোড এর জন্য Cassandra ORM/ODM ও তৈরি করলাম এবং এক্সপ্রেস ক্যাসান্ড্রা নামে একে ওপেন সোর্স করে দিলাম।

মোট কথা, ই-শিক্ষা প্ল্যাটফর্ম ডেভেলপমেন্ট এর যে সব চ্যালেঞ্জ ছিল, তার সাথে যোগ হল বাড়তি আরও অনেক চ্যালেঞ্জ যার ভার প্রাথমিক পর্যায়ে না নিলেও চলতো। বেসিক ফিচারগুলো তৈরি করতেই সময় লাগলো প্রয়োজনের তুলনায় অনেক বেশি। কারণ টিমকে প্রতিটি ক্ষেত্রে স্কেলেবল ও ফল্ট টলারেন্ট সিস্টেমের কথা মাথায় রেখে কাজগুলো করতে হচ্ছিল। এদিকে সার্ভার সাইডে নোড ব্যবহার করায় এসিঙ্ক্রোনাস প্রোগ্রামিং এর সকল মারপ্যাঁচ আমাদের সিস্টেমকে আরও বেশি আনমেইন্টেইনেবল করে তুললো। তার পাশাপাশি ক্যাসান্ড্রার CQL অত্যন্ত রেস্ট্রিক্টিভ হবার কারণে একই ডাটাকে ডি-নরমালাইজ করে বিভিন্ন মডেল এ রাখতে হচ্ছিল। সুতরাং ডি-নরমালাইজড টেবলগুলোর ডাটা সিঙ্ক করে রাখা আরেকটি চ্যালেঞ্জ হয়ে দাঁড়ালো। "সিঙ্গল সোর্স অব ট্রুথ" এর কনসেপ্ট কে তুড়ি মেরে উড়িয়ে দেয়ার সাইড ইফেক্ট আমাদের টিমকে প্যারা দিতে শুরু করলো।

এত এত প্যারা নিয়েও আমাদের অত্যন্ত কেপেবল টিম ই-শিক্ষা প্ল্যাটফর্ম সময়মত ডেলিভার করলো। যদিও প্ল্যাটফর্মটিকে স্ট্যাবিলাইজ করা ও উন্নততর করার পেছনে সময় ব্যয় করাটাই অধিক যুক্তিযুক্ত ছিল এ সময়। কিন্তু আমাদের টিমকে সিংহভাগ সময় ব্যয় করতে হল স্কেলেবল আর্কিটেকচার বজায় রেখে সিস্টেম তৈরি করতে। এমনকি অনেক ক্ষেত্রে ওয়েব এপ্লিকেশনটির লোড টাইম কমাতে সাধারণ ও সহজে করা যায় এমন সব অপটিমাইজেশন করার জন্যেও আমরা সময় পেলাম না।

এই অবস্থায় ই-শিক্ষা প্ল্যাটফর্ম এর পাবলিক বেটা ভার্সন সবার ব্যবহারের জন্য আমরা উন্মুক্ত করে দিলাম। অনেক ব্যবহারকারীই প্ল্যাটফর্মটিকে পজিটিভলি নিলেন। কিন্তু এর পাশাপাশি কিছু পরিচিত প্রোগ্রামার প্ল্যাটফর্মটির নানা সমস্যা ধরিয়ে দিয়ে আমাদের লজ্জায় ফেলে দিলেন। সমস্যাগুলো এমন ছিল যে আমার মাথা হেট হয়ে যায় টাইপের অবস্থা। নিজের মনে হল এমন সমস্যাসমেত প্রোডাক্ট আমরা রিলিজ দিলাম কি করে? বাইরে থেকে দেখলে প্রোডাক্টটির এইসব সমস্যা থাকাকে খুব-ই নিম্নমানের ইঞ্জিনিয়ারিং এর ফল এবং কোয়ালিটি এসুরেন্স এর দুর্বলতা বলে মনে হয়। কিন্তু ভেতর থেকে যখন দেখছিলাম, তখন পরিষ্কার বুঝতে পারছিলাম, সমস্যাগুলোর মুলে রয়েছে কমপ্লেক্স একটি ডিস্ট্রিবিউটেড সিস্টেম এবং সেটি স্ট্যাবিলাইজ করতে আমাদের টিম এর স্বল্প সময় পাওয়া। অর্থাৎ সমস্যার মূল খুঁজতে গেলে আমার কাণ্ডজ্ঞ্যানহীন টেকনোলজি চয়েস কেই দায়ী করতে হবে।

যা হোক আমরা ধীরে ধীরে সমস্যাগুলো সমাধান করলাম। এদিকে আমাদের প্ল্যাটফর্ম এর প্রাথমিক এডপশন খুব দ্রুত হল। কয়েক সপ্তাহের মধ্যেই সাইন-আপ সংখ্যা ৫০০০ ছাড়িয়ে গেল যদিও অনেকেই কি আছে দেখার জন্য সাইন-আপ করেছেন, তাই একটিভ ইউজারদের মিনিংফুল গ্রাফ দেখার জন্য আমরা অপেক্ষা করলাম। কয়েকমাস যেতে যেতেই আমাদের মান্থলি একটিভ ইউজার গ্রাফ হকি স্টিক এর মত বেড়ে ২০০০ এর কাছাকাছি চলে গেল। সময় গড়াল, আরও অনেক সাইন-আপ হল, কিছু ইউনিভার্সিটি তাদের প্রোগ্রামিং কোর্স করাতে এই প্ল্যাটফর্ম ব্যবহার করতে শুরু করলো। বাংলাদেশ সরকার ও অধিকাংশ ব্যবহারকারী আমাদের সিস্টেম নিয়ে খুশি থাকলেন, বাহবা দিলেন।

প্রাথমিক সাফল্যে আমরা আপ্লূত হলাম, ভুলে গেলাম চ্যালেঞ্জগুলোর কথা, ভেবে দেখলাম না যে সিস্টেমটি আদৌ এত কমপ্লেক্স করা প্রয়োজন ছিল কিনা। কারণ লক্ষ লক্ষ ব্যবহারকারী তো আসলে এই সিস্টেমে সাইনআপ ই করেনি। একইসাথে ব্যবহার করার প্রশ্ন তো অনেক পরের কথা। কারণ ই-শিক্ষা প্ল্যাটফর্মের ব্যবহার ধরণ অনুযায়ী লক্ষাধিক মানুষ সাইন-আপ করলেও একইসাথে একই সময়ে কয়েক হাজার ব্যবহারকারী হবার সম্ভাবনাও কম। কারণ সাইন-আপ করা কেউ কোর্স শেষ করার পর সাধারণত ফিরে আসে না। একটিমাত্র ডেডিকেটেড সার্ভার দিয়েই এখন পর্যন্ত যে সিস্টেম লোড তার কাজ চালিয়ে নেয়া সম্ভব (যদিও সিস্টেমটি প্রাথমিকভাবে ডেপ্লয় করা হয়েছিল ১০টি সার্ভারের সমন্বয়ে)। অর্থাৎ এখন পর্যন্ত আমাদের "ডিস্ট্রিবিউটেড", "হরাইজোন্টালি স্কেলেবল" সিস্টেম কোন কাজে লাগেনি। বরং এর চেয়ে প্রয়োজন অনুসারে ছোট ছোট অপটিমাইজেশন আর ক্যাশিং করাই হয়তো যথেষ্ট ছিল।

Credit: Minimum Viable Technology - Move Fast Keep Shipping

মিনিমাম ভায়াবল প্রোডাক্ট বা রিস্কিয়েস্ট এসাম্পশন টেস্ট ইত্যাদি শব্দের সাথে আমি একদম অপরিচিত ছিলাম তা নয়। তবে ইঞ্জিনিয়ারিং মাইন্ড কি আর ওসব বুঝতে চায়। সে তো সব সময় চায় প্রথমবারেই একদম পার্ফেক্ট একটি সিস্টেম তৈরি করতে। একই পরিমাণ হার্ডওয়্যার থেকে সর্বোচ্চ পারফরমেন্স নিংড়ে বের করে নিতে।

এই কারণেই হয়তো আমরা "স্মার্ট" সফটওয়্যার ইঞ্জিনিয়াররা যেকোন টেকনোলজি, প্রোগ্রামিং ল্যাঙ্গুয়েজ বা ডেভেলপমেন্ট ফ্রেমওয়ার্ক বাছাই করবার সময় নিজের কাজের প্রোডাক্টিভিটি থেকে পারফরমেন্স ও নতুনত্ব কে বেশি গুরুত্ব দিয়ে থাকি। যদিও ডেভেলপারদের সময়ের দাম সাধারণত হার্ডওয়্যার এর খরচ থেকে বেশি হয় যদিনা আপনি গুগল/ফেসবুক স্কেল এর প্রোডাক্ট নিয়ে কাজ করছেন এমন হয়। আর গুগল বা ফেসবুক প্রথম ধাক্কাতেই আজকের পর্যায়ে আসেনি। তাদের বর্তমান অবস্থান অনেক বছরের ডেভেলপমেন্ট এর ফলশ্রুতি। আর তাদের রয়েছে বিশাল টিম এর পেছনে ব্যয় করার ক্ষমতা যা আমাদের মত স্টার্টআপের কাছে নেই। তাদের এই ব্যয় করার ক্ষমতা এসেছে তাদের কিছু প্রোডাক্ট এর সফলতার কারণেই আর সেই সফলতাও একবারে চলে আসেনি।

সার কথা হল প্রথম চেষ্টাতেই আপনি পার্ফেক্ট টাইটানিক জাহাজ বানাতে পারবেন না, বানাতে গেলে ভরাডুবি হবে।
কার্টুনটি নেয়া হয়েছে toonpool ওয়েবসাইট থেকে

যা হোক এই সহজ কথাগুলোও আমার মাথায় তখন ঢোকেনি, বরং নিজের ভুল ডিসিশনগুলোকে সঠিক মনে করে এবং ই-শিক্ষা প্ল্যাটফর্মের প্রাথমিক সাফল্যকে পুঁজি করে আমরা চিন্তা করলাম এবার আমরা আরও ভালভাবে একটি গ্লোবাল ই-লার্নিং প্ল্যাটফর্ম তৈরি করবো। কারণ খুব সহজ, বাংলাদেশের জন্য আমরা যে ই-শিক্ষা প্ল্যাটফর্ম তৈরি করেছি তাতে ব্যবহারকারী শুধুমাত্র বাংলাদেশি, কিন্তু গ্লোবাল অডিয়েন্সের জন্য প্ল্যাটফর্ম তৈরি করলে তার ব্যবহারকারী হবে সমগ্র বিশ্বের মানুষ। আমি এটা চিন্তা করলাম না যে মানুষ আমরা কি টেকনোলজি ব্যবহার করলাম তা নিয়ে থোড়াই কেয়ার করে। মানুষ কেয়ার করে আমাদের প্রোডাক্ট তার কি কাজে লাগবে, তার কোন সমস্যাকে সমাধান করবে। সমস্যাটি যদি ইতোমধ্যেই অন্য কেউ ভালভাবে সমাধান করে থাকে, তাহলে আমাদের নতুন এই প্রোডাক্ট মানুষ ব্যবহার করবে না তা সে যতই টেকনোলজি সমৃদ্ধ হোক না কেন।

আমাদের বাঘা বাঘা ইঞ্জিনিয়াররা সবাই কিন্তু এই কর্মকান্ডকে সঠিক ধরে নিয়েছিল তা নয়। কিন্তু সবাই হয়তো মুখ ফুটে বলেনি। আমাদের ইঞ্জিনিয়ারদের একজন আমাকে একবার "ম্যাচুর অপটিমাইজেশন" নামের একটা বই পড়তে দিয়েছিল। অসাধারণ একটি বই। বইটার প্রথমেই ছিল বিশ্বনন্দিত কম্পিউটার বিজ্ঞানী ডোনাল্ড নুথ এর নিম্নের উক্তিঃ

Programmers waste enormous amounts of time thinking about, or worrying about, the speed of noncritical parts of their programs, and these attempts at efficiency actually have a strong negative impact when debugging and maintenance are considered. We should forget about small efficiencies, say about 97% of the time; premature optimization is the root of all evil. Yet we should not pass up our opportunities in that critical 3%. ~ Donald Knuth

আমি ভাবলাম আসলেই তো তাই, কথা সত্য। দরকার ছাড়া অপটিমাইজেশন ইম্যাচুর ইঞ্জিনিয়ারদের প্রলুব্ধ করে ভুল পথে পা বাড়াতে। কিন্তু আমি তো আর ইম্যাচুর ইঞ্জিনিয়ার না, তাই না? সুতরাং আমি ধরে নিলাম আমাদের এই "স্কেলেবিলিটির ভূত" কে প্রশ্রয় দেয়া নুথ এর ওই ক্রিটিক্যাল ৩% এর মধ্যে পড়ে। কিন্তু সমস্যা হল ইম্যাচুর ইঞ্জিনিয়ার তো তখনি নিজের ইম্যাচুরিটি বুঝতে পারে, যখন সে ম্যাচুর হয়। এটা অনেকটা আমার টিন-এজ বয়সের চিন্তা ভাবনার মত, যখন আমি মনে করতাম আমি সবার থেকে বেশি বুঝি। তো যেহেতু ততদিনে আমি টিন-এজ বয়স পার করে ফেলেছি, তাই ভাবলাম আমি তো আর এখন ইম্যাচুর হতে পারি না। নাহ এই হাইপোথিসিস টা বোধ হয় সত্যি না। বর্তমান আমার মতে (ভবিষ্যতে আরও ম্যাচুরিটি আসলে এটা পরিবর্তন হতে পারে) ম্যাচুরিটি বয়সের উপর নির্ভরশীল নয়। একেক বিষয়ে ম্যাচুরিটি আসতে একেক জনের একেক রকম সময় লাগতে পারে। আবার একই ব্যক্তি একই সময়ে একটি বিষয়ে অনেক ম্যাচুর এবং অন্য বিষয়ে ইম্যাচুর হতে পারে। কিন্তু আমি ধরে নিলাম আমাদের গ্লোবাল ই-লার্নিং প্রোডাক্ট এর ক্ষেত্রে আমরা টেকনিক্যালি ম্যাচুরড ডিসিশন-ই নিয়েছি।

তো আমরা এবার আমাদের প্রোডাক্টকে আরও উন্নত, আরও ফিচার সমৃদ্ধ করতে তৈরি করলাম নিজেদের ইন্টারনাল নোড ফ্রেমওয়ার্ক নোডেস্টি! উন্নত করলাম ক্যাসান্ড্রার জন্য আমাদের তৈরি করা ওপেন সোর্স নোড ওআরএম এক্সপ্রেস-ক্যাসান্ড্রা যেখানে ক্যাসান্ড্রা ডাটাবেজ এর নতুন সব মনকাড়া ফিচার এর সাপোর্ট নিয়ে আসলাম। অটোমেটিক ডাটাবেজ মাইগ্রেশন, ম্যাটেরিয়ালাইজড ভিউ এবং মডেলে হুক ফাংশনের সাপোর্ট ও নিয়ে আসলাম যেন আগেরবার আমরা ক্যাসান্ড্রা নিয়ে যেসব চ্যালেঞ্জ এর মুখোমুখি হয়েছি তা সহজে সমাধান করা যায়। গুগল ক্লাউডের প্রোডাক্ট ম্যানেজার ও ডিস্ট্রিবিউটেড গ্রাফ ডাটাবেজ জানুসগ্রাফের কো-ফাউন্ডার মিশা ব্রুকম্যান সহ আরও অনেকে আমাদের ওপেন-সোর্স করে দেয়া এক্সপ্রেস-ক্যাসান্ড্রা কে স্টার দিলেন এবং ফোর্ক করলেন। তারা হয়তো একে এমন ক্ষেত্রে ব্যবহার করবেন যেটা যৌক্তিক। অথচ আমরা যেক্ষেত্রে ব্যবহারের জন্যে এটা বানালাম সেটা কতটা যৌক্তিক ছিল তা হয়তো আপনি ইতোমধ্যেই বুঝে গেছেন।

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

কার্টুনটি নেয়া হয়েছে xkcd কমিক ওয়েবসাইট থেকে

কামান হোক আর যাই হোক, অপেক্ষাকৃত অনেক বেশি স্ট্যাবিলাইজড একটা সিস্টেম ডেভেলপ করছিলাম আমরা। কিন্তু এবারও আমরা সময় বেশি নিলাম কারণ আমরা সবকিছু খুব রিগোরাসভাবে করতে শুরু করেছিলাম কিন্তু সেই "স্কেলেবল সিস্টেম" এর ভূত সাথে নিয়েই। আমাদের একজন সফটওয়্যার ইঞ্জিনিয়ার ডেভেলপমেন্ট এর সময় অদ্ভুত কিছু সমস্যার সম্মুখীন হয়ে একে "কোডমার্শালের ভূত" নামকরণ করলেন। আমি অবশ্য একটু একটু করে উপলব্ধি করতে শুরু করলাম এই ভূত আমার সৃষ্টি।

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

তো যা হবার তাই হল, প্রকৃতি একই ভুল বারবার বর্দাস্ত করে না। আমরা বিপাকে পড়ে গেলাম এবং সেই প্ল্যাটফর্ম তৈরির কাজ স্থগিত করতে হল। আমরা এক ধাক্কায় অজানা এক পাহাড়ের চুড়ায় উঠতে যেয়ে বড় রকমের হোঁচট খেলাম। অপ্রয়োজনীয় একটি স্কেলেবিলিটির ভূতকে বাঁচিয়ে রাখার বিলাসিতা ছেড়ে শুরু হল নিজেদের বেঁচে থাকার লড়াই। অত্যন্ত টার্বুলেন্ট একটা সময় পার করলাম আমরা। মাস শেষে সবাইকে ঠিকমত স্যালারি দিতে পারা হয়ে গেল আমাদের ১ নাম্বার প্রায়োরিটি। গুণগত মানের শিক্ষাকে সহজ ও সকলের উপযোগী করে গড়ে তোলার লক্ষকে সামনে নিয়ে যে "স্মার্ট ভার্চুয়াল টিচার" তৈরির পথে আমরা চলতে শুরু করেছিলাম, সে পথ অনেকটাই অস্পষ্ট হয়ে গেল বৈরি কুয়াশায়।

তবে একটি ক্ষেত্রে আমরা খুব সম্ভবত ভুল করিনি। বৈরী আবহাওয়ায় আমাদের লক্ষ্যে চলা সাময়িকভাবে ক্ষতিগ্রস্থ হয়েছিল সত্যি কিন্তু তাতে হতাশ হয়ে যাইনি। বরং কোনরকমে আঁকড়ে ধরে থেকে বৈরী আবহাওয়া পার করেছি। এই ধরে থাকবার সময়টা ছিল সবচেয়ে কঠিন। আমরা ভুলগুলো থেকে শেখার চেষ্টা করেছি। টেকনিক্যাল গণ্ডির বাইরে একটি টেকনোলজি স্টার্টআপে আরও যত মূল্যবান কার্যক্রম থাকে তাকে কিছুটা হলেও জানার বা বোঝার চেষ্টা করেছি। যতই জানবার চেষ্টা করেছি, অন্য ডিসিপ্লিন গুলোর উপর তত বেশি শ্রদ্ধা জন্মেছে। আমি বিশ্বাস করি, ভুল তা যত হাস্যকর হোক না কেন, তা থেকে আমাদের শেখার আছে অনেক কিছু। আর নিজের ভুল শুধরে নেয়ার চেয়ে অন্যের ভুল ধরিয়ে দেয়ার কাজটা অপেক্ষাকৃত সহজ। মানুষদের মধ্যে যিনি কোনদিন কোন ভুল করেননি, তিনি কখনো কাজের কিছু করার চেষ্টাও করেননি। দৃঢ়ভাবে ঘুরে দাঁড়াবার জন্যে কিছু হাস্যকর ভুল অনেক সময় আপনার কাজে লাগবে। অন্তত আমাদের বেলায় তাই হতে যাচ্ছে বলে আমি বিশ্বাস করি। আমি বিশ্বাস করিঃ

Everyone makes mistakes, but there are only two types of people, those who learns from it and those who don't.

বৈরী কুয়াশা কেটে যেতে শুরু করেছে। আমরা এখন চূড়াটা দেখতে পাচ্ছি। তাতে পৌঁছাবার একটা পথও আমরা এখন দেখতে পাচ্ছি। পথটা চ্যালেঞ্জিং, আদৌ পৌঁছাতে পারবো কিনা জানিনা। কিন্তু সেই পথে চলার প্রত্যয়ে আমরা এখন পূর্বের যেকোন সময়ের চেয়ে অনেক বেশি কনফিডেন্ট। সবচেয়ে বড় কথা হল গার্টনারের হাইপ সাইকেল এর তলানির অংশটা আমরা পেরিয়ে এসেছি বলেই মনে হচ্ছে। আর ব্যর্থ একটি প্রোডাক্ট থেকে যদি ভাল কিছু হয়, যদি আমরা ঘুরে দাঁড়াতে শিখি, তবে তাই ভাল।

গার্টনারের হাইপ সাইকেল