আমি মাসের পর মাস তুলনা করার টেবিল (comparison tables) তৈরি করার পর বুঝতে পারলাম যে আমার ডাটাবেস আমাকে মিথ্যা বলছিল।
ইন্টারফেসটি দেখতে ঠিকঠাকই লাগছিল। পরিষ্কার সারি (rows), পরিপাটি টিক চিহ্ন (checkmarks), আর যেখানে কোনো টুল পিছিয়ে ছিল সেখানে লাল 'X' চিহ্ন। ভিজিটররা সেগুলো স্ক্রল করত এবং মাঝে মাঝে ক্লিক করত। কিন্তু উপরিভাগের নিচে, স্কিমাটি (schema) নীরবে প্রতিটি সিদ্ধান্তকে ভুল পথে পরিচালিত করছিল। আমি ভুল তথ্যের ওপর ভিত্তি করে একটি সুন্দর UI তৈরি করেছিলাম।
বুলিয়ান ট্র্যাপ (The Boolean Trap)
তুলনা করার পেজগুলো সাধারণত একটি স্পষ্ট প্যাটার্ন দিয়ে শুরু হয়। আপনি একটি গ্রিড তৈরি করেন যেখানে সারিগুলো হলো ফিচার, কলামগুলো হলো প্রোডাক্ট, এবং প্রতিটি সেলে একটি বুলিয়ান (boolean) থাকে। 'True' মানে টুলটির সেই ফিচার আছে। 'False' মানে সেটি নেই। কিছু সময়ের জন্য এটি সুশৃঙ্খল মনে হয়। কিন্তু যখন আপনি দুটি প্রজেক্ট ম্যানেজমেন্ট টুল, অথবা তিনটি ক্লাউড ডাটাবেস, কিংবা চারটি API গেটওয়ে তুলনা করার চেষ্টা করেন, তখন সেই গ্রিডটি বিদ্রোহ করতে শুরু করে।
বুলিয়ান সেলগুলো সূক্ষ্ম পার্থক্য (nuance) প্রকাশ করতে পারে না। যখন একটি সেলে 'false' লেখা থাকে, তখন তার পাঁচটি সম্পূর্ণ ভিন্ন অর্থ হতে পারে। হতে পারে টুলটির সত্যিই সেই সক্ষমতা নেই। হতে পারে এটি ভিন্ন কোনো পদ্ধতির মাধ্যমে একই সমস্যার সমাধান করে। হতে পারে ফিচারটি আছে কিন্তু সেটি ব্যবহারের জন্য এন্টারপ্রাইজ পেমওয়াল (paywall) প্রয়োজন। হতে পারে এর জন্য এমন কোনো প্লাগইন দরকার যা আপনি লক্ষ্য করেননি। অথবা হতে পারে আপনি সেটি যাচাই করতে ভুলে গেছেন, আর সেই লাল 'X' চিহ্নটি কেবল আপনার নিজের অনিশ্চয়তার একটি প্রতীক মাত্র।
এটি গুরুত্বপূর্ণ কারণ ব্যবহারকারীরা দামী সিদ্ধান্ত নেওয়ার জন্য এই তুলনা করার গ্রিডগুলোর ওপর আস্থা রাখেন। আপনি যখন একটি CLI-ভিত্তিক টুলকে 'রিয়েল-টাইম কোলাবরেশন নেই' হিসেবে চিহ্নিত করেন, তখন আপনার উদ্দেশ্য হতে পারে যে এতে লাইভ কার্সার শেয়ারিং নেই। কিন্তু সেই একই টুল সম্ভবত একই ফলাফল অর্জনের জন্য ব্রাঞ্চ-ভিত্তিক ওয়ার্কফ্লো (branch-based workflows) এবং রিভিউ কিউ (review queues) ব্যবহার করে। এটিকে 'false' হিসেবে চিহ্নিত করা একটি ডিজাইন পছন্দকে ত্রুটি হিসেবে গণ্য করা। এভাবে বিশটি ফিচারের ক্ষেত্রে যদি আপনি একই কাজ করেন, তবে আপনি দুটি টুলের তুলনা করছেন না; বরং আপনি তাদের মধ্যে একটিকে ত্রুটিপূর্ণ বলে ঘোষণা করছেন।
একটি বুলিয়ান স্কিমা আপনাকে ব্যবহারকারীর প্রয়োজনের পরিবর্তে ভেন্ডরদের শব্দভাণ্ডার অনুযায়ী চিন্তা করতে শেখায়। যদি আপনার সারিগুলোর নাম ক্যাটাগরির লিডার (leader) থেকে নেওয়া হয়, তবে আপনি শেষ পর্যন্ত জানতে চাইবেন যে প্রতিটি প্রতিযোগীর কি 'Workspaces' আছে, কারণ Notion তাদের 'Workspaces' বলে। অন্য একটি টুল তাদের 'Projects' বলে। তৃতীয় কোনোটির হয়তো কোনো ডেডিকেটেড কন্টেইনার নেই, কিন্তু তারা আপনাকে প্রতিটি ফাইল আলাদাভাবে পারমিশন দেওয়ার সুযোগ দেয় যাতে আপনি একই ধরনের আইসোলেশন (isolation) পেতে পারেন। আপনার সারির নামগুলো প্রতিটি প্রোডাক্টকে লিডারের মেন্টাল মডেলের (mental model) মধ্যে থাকতে বাধ্য করে, যা বাজারের বড় কোম্পানিগুলোর জন্য সুবিধাজনক কিন্তু অন্যদের জন্য অন্যায্য।
স্ট্যাটাসের জন্য আরও উন্নত শব্দভাণ্ডার
এর সমাধান শুরু হয় ডাটা টাইপ থেকেই। বুলিয়ান স্টোর করা বন্ধ করুন। পরিবর্তে একটি স্ট্যাটাস ফিল্ড (status field) ব্যবহার করুন যেখানে সুনির্দিষ্ট শব্দভাণ্ডার থাকবে।
এই ছয়টি অবস্থা বিবেচনা করুন।
Full মানে হলো টুলটি কোনো বিকল্প পদ্ধতি (workarounds) বা অতিরিক্ত কেনাকাটা ছাড়াই কাজটি সম্পন্ন করতে পারে।
Partial মানে হলো এটি কাজের কিছু অংশ সম্পন্ন করে, অথবা কোনো জটিল কনফিগারেশনের পরেই তা করতে পারে। এখানেই বেশিরভাগ তুলনার ভুল লুকিয়ে থাকে। যে টুলটি এনক্রিপশন অফার করে কিন্তু সেটি কেবল 'at rest' অবস্থায় কাজ করে, তার জন্য 'Partial' ব্যবহার করা উচিত, 'Full' নয়।
Different Model মানে হলো সমস্যাটি সমাধান করা হচ্ছে, কিন্তু ক্যাটাগরি লিডারের মতো নয়। ব্রাঞ্চ এবং রিভিউ সমৃদ্ধ CLI টুলটি এই তালিকার অন্তর্ভুক্ত। একইভাবে, যে ডাটাবেস একটি সিঙ্গেল পুলেড কানেকশনের পরিবর্তে 'read replicas' ব্যবহার করে, সেটিও এখানে পড়বে। এই অবস্থাটি প্রতিযোগীকে নকল না করার জন্য প্রোডাক্টের ডিজাইনকে শাস্তি দেওয়ার পরিবর্তে তার বুদ্ধিমত্তাকে বজায় রাখে।
Not Applicable মানে হলো ধারণাটি এই ধরনের টুলের ক্ষেত্রে প্রযোজ্য নয়। একটি ভার্চুয়াল মেশিনের মতো একটি সার্ভারলেস ফাংশন প্ল্যাটফর্মের পারসিস্টেন্ট লোকাল স্টোরেজ (persistent local storage) প্রয়োজন হয় না। সেখানে জোর করে 'false' বসানো হলো ক্যাটাগরির বিভ্রান্তি।
Absent মানে হলো আপনি যাচাই করেছেন এবং সক্ষমতাটি সত্যিই নেই। সেখানে কোনো বিকল্প পদ্ধতি, কোনো প্লাগইন বা বিকল্প ওয়ার্কফ্লো নেই। ঘাটতিটি বাস্তব।
Unknown মানে হলো আপনি এটি যাচাই করেননি।
