میں نے مہینوں موازنہ کرنے والے ٹیبلز (comparison tables) بنانے میں گزار دیے اس سے پہلے کہ مجھے سمجھ آتا کہ میرا ڈیٹا بیس مجھے دھوکہ دے رہا تھا۔

انٹرفیس ٹھیک لگ رہا تھا۔ صاف ستھری قطاریں، ترتیب وار چیک مارکس، اور جہاں کوئی ٹول ناکام ہوتا وہاں سرخ X کے نشانات۔ وزٹرز انہیں دیکھتے اور کبھی کبھار کلک بھی کرتے۔ لیکن سطح کے نیچے، اس کا اسکیما (schema) خاموشی سے ہر نتیجے کو غلط ثابت کر رہا تھا۔ میں نے خراب ڈیٹا پر ایک خوبصورت UI تعمیر کر لیا تھا۔

بولین کا جال

موازنہ کرنے والے صفحات عام طور پر ایک واضح نمونے سے شروع ہوتے ہیں۔ آپ ایک گرڈ بناتے ہیں جہاں قطاریں فیچرز (features) ہوتی ہیں، کالم پروڈکٹس ہوتے ہیں، اور ہر سیل (cell) میں ایک بولین (boolean) ویلیو ہوتی ہے۔ 'True' کا مطلب ہے کہ ٹول میں یہ فیچر موجود ہے۔ 'False' کا مطلب ہے کہ یہ موجود نہیں ہے۔ کچھ دیر کے لیے، یہ ایک ترتیب کا احساس دیتا ہے۔ پھر آپ دو پروجیکٹ مینجمنٹ ٹولز، یا تین کلاؤڈ ڈیٹا بیسز، یا چار API گیٹ ویز کا موازنہ کرنے کی کوشش کرتے ہیں، اور وہ گرڈ بغاوت کرنا شروع کر دیتا ہے۔

بولین سیلز باریکیوں (nuance) کو بیان نہیں کر سکتے۔ جب ایک سیل 'false' ظاہر کرتا ہے، تو اس کے پانچ بالکل مختلف مطلب ہو سکتے ہیں۔ ہو سکتا ہے کہ ٹول میں واقعی اس صلاحیت کی کمی ہو۔ ہو سکتا ہے کہ وہ اسی مسئلے کو کسی مختلف طریقے سے حل کرتا ہو۔ ہو سکتا ہے کہ فیچر موجود ہو لیکن وہ انٹرپرائز پے وال (enterprise paywall) کے پیچھے ہو۔ ہو سکتا ہے کہ اسے کسی ایسے پلگ ان کی ضرورت ہو جس پر آپ کی نظر نہ پڑی ہو۔ یا ہو سکتا ہے کہ آپ محض اسے تصدیق کرنا بھول گئے ہوں، اور وہ سرخ X صرف آپ کی اپنی غیر یقینی صورتحال کا ایک نشان ہو۔

یہ اس لیے اہم ہے کیونکہ صارفین مہنگے فیصلے کرنے کے لیے موازنہ کرنے والے گرڈز پر بھروسہ کرتے ہیں۔ جب آپ کسی CLI پر مبنی ٹول کو 'ریئل ٹائم کولیبریشن' (real-time collaboration) کی کمی کے طور پر نشان زد کرتے ہیں، تو شاید آپ کا مطلب یہ ہو کہ اس میں لائیو کرسر شیئرنگ کی سہولت نہیں ہے۔ لیکن وہی ٹول غالباً بالکل وہی نتیجہ حاصل کرنے کے لیے برانچ پر مبنی ورک فلو (branch-based workflows) اور ریویو کیوز (review queues) کا استعمال کرتا ہے۔ اسے 'false' قرار دینا ایک ڈیزائن کے انتخاب کو نقص (defect) میں بدل دیتا ہے۔ اگر آپ بیس فیچرز کے ساتھ ایسا ہی کریں گے، تو آپ نے دو ٹولز کا موازنہ نہیں کیا، بلکہ آپ نے ان میں سے ایک کو خراب قرار دے دیا ہے۔

ایک بولین اسکیما آپ کو صارف کی ضروریات کے بجائے وینڈر (vendor) کی اصطلاحات میں سوچنے پر بھی مجبور کرتا ہے۔ اگر آپ کی قطاریں کیٹیگری کے لیڈر سے نام ادھار لیتی ہیں، تو آپ آخر کار یہ پوچھنے لگتے ہیں کہ کیا ہر مدمقابل کے پاس 'Workspaces' ہیں کیونکہ Notion انہیں 'Workspaces' کہتا ہے۔ کوئی دوسرا ٹول انہیں 'Projects' کہتا ہے۔ تیسرا ٹول شاید کوئی مخصوص کنٹینر رکھتا ہی نہ ہو، لیکن وہ آپ کو انفرادی فائلوں کو پرمیشن دینے کی اجازت دیتا ہے یہاں تک کہ آپ وہی علیحدگی (isolation) حاصل کر لیں۔ آپ کے قطاروں کے نام ہر پروڈکٹ کو لیڈر کے ذہنی ماڈل (mental model) میں فٹ کرنے پر مجبور کرتے ہیں، جو مارکیٹ کے بڑے کھلاڑی کے لیے تو آسان ہے لیکن باقی سب کے لیے ناانصافی ہے۔

اسٹیٹس کے لیے بہتر الفاظ کا مجموعہ

اس کا حل ڈیٹا ٹائپ سے ہی شروع ہوتا ہے۔ بولینز کو اسٹور کرنا بند کریں۔ ایک ایسا اسٹیٹس فیلڈ (status field) استعمال کریں جس میں واضح الفاظ استعمال کیے گئے ہوں۔

ان چھ حالتوں پر غور کریں۔

Full کا مطلب ہے کہ ٹول کسی متبادل طریقے (workaround) یا اضافی خریداری کے بغیر کام مکمل کر لیتا ہے۔

Partial کا مطلب ہے کہ یہ اس کا کچھ حصہ سنبھالتا ہے، یا صرف اس وقت سنبھالتا ہے جب آپ کسی پیچیدہ چیز کو کنفیگر کریں۔ یہ وہ جگہ ہے جہاں زیادہ تر موازنے غیر درستگی چھپاتے ہیں۔ ایک ایسا ٹول جو انکرپشن (encryption) تو فراہم کرتا ہے لیکن صرف 'at rest' (ڈیٹا محفوظ ہونے کی حالت میں)، وہ 'Partial' کا مستحق ہے، 'Full' کا نہیں۔

Different Model کا مطلب ہے کہ مسئلہ حل ہو جاتا ہے، بس اس طرح نہیں جیسے کیٹیگری لیڈر اسے حل کرتا ہے۔ برانچز اور ریویوز والا CLI ٹول اسی زمرے میں آتا ہے۔ اسی طرح وہ ڈیٹا بیس بھی، جو سنگل پولڈ کنکشن (single pooled connection) کے بجائے ریڈ ریپلیکا (read replicas) استعمال کرتا ہے۔ یہ حالت کسی مدمقابل کی نقل نہ کرنے پر پروڈکٹ کے ڈیزائن کو سزا دینے کے بجائے اس کی ذہانت کو برقرار رکھتی ہے۔

Not Applicable کا مطلب ہے کہ یہ تصور خود اس قسم کے ٹول پر لاگو نہیں ہوتا۔ ایک سرور لیس فنکشن پلیٹ فارم کو اس طرح مستقل لوکل اسٹوریج (persistent local storage) کی ضرورت نہیں ہوتی جیسے کہ ایک ورچوئل مشین کو ہوتی ہے۔ وہاں زبردستی 'false' لگانا کیٹیگری کی الجھن ہے۔

Absent کا مطلب ہے کہ آپ نے تلاش کیا، اور وہ صلاحیت واقعی موجود نہیں ہے۔ کوئی متبادل طریقہ، کوئی پلگ ان، یا کوئی متبادل ورک فلو موجود نہیں ہے۔ یہ کمی حقیقی ہے۔

Unknown کا مطلب ہے کہ آپ نے اس کی تصدیق نہیں کی ہے