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

এটা কোনো ব্র্যান্ডিং বিবৃতি নয়। এটা বদলে দেয় ইঞ্জিনিয়ারিং আসলে কীভাবে কাজ করে, এমনভাবে যা পুরোপুরি বুঝতে আমাদের কিছুটা সময় লেগেছে। মালিকানা আপনার বানানোর ধরনের সঙ্গে যা করে, তা এখানে।

সম্পর্ক যখন ডেলিভারিতেই শেষ হয় না

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

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

প্রতিটি বাগ আপনার বাগ

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

এটা এমন একটা দেয়াল গুঁড়িয়ে দেয়, যা বেশিরভাগ সফটওয়্যার প্রতিষ্ঠান বিপুল শক্তি খরচ করে টিকিয়ে রাখে — যারা সফটওয়্যার লেখে আর যারা সেটা চালায় তাদের মাঝের দেয়ালটা। KeepFlow-এ তারা একই মানুষ। যে ইঞ্জিনিয়ার একটা ফিচার বানিয়েছেন, তিনিই সেটাকে প্রোডাকশনে দেখেন, রাত তিনটায় পেজ করলে সাড়া দেন, আর ব্যবহারকারীরা সেটা নিয়ে যা বলেন তা পড়েন।

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

সময়সীমার জন্য নয়, জীবনকালের জন্য বানানো

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

আপনি যখন এমন কিছু বানাচ্ছেন যা বছরের পর বছর চালাবেন, তখন প্রায় প্রতিটি বাছাইয়ের হিসাব উল্টে যায়:

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

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

ফিডব্যাক লুপ বন্ধ হয়

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

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

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

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

প্রবণতার পেছনে না ছোটা

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

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

এটাই গোটা কারণ যে কেন আমরা নিজেদের পণ্য বানাই। এটা সহজ বলে নয় — এটা নয় — বরং নিজের সিদ্ধান্তের সঙ্গে বাঁচাটাই আমাদের জানা সবচেয়ে নির্ভরযোগ্য উপায় ভালো সিদ্ধান্ত নেওয়ার।