ਮੈਂ ਮਹੀਨਿਆਂ ਤੱਕ ਤੁਲਨਾ ਵਾਲੀਆਂ ਟੇਬਲਾਂ (comparison tables) ਬਣਾਉਣ ਵਿੱਚ ਬਿਤਾਏ, ਇਸ ਤੋਂ ਪਹਿਲਾਂ ਕਿ ਮੈਨੂੰ ਸਮਝ ਆਇਆ ਕਿ ਮੇਰਾ ਡਾਟਾਬੇਸ ਮੈਨੂੰ ਝੂਠ ਬੋਲ ਰਿਹਾ ਸੀ।
ਇੰਟਰਫੇਸ ਠੀਕ ਲੱਗ ਰਿਹਾ ਸੀ। ਸਾਫ਼-ਸੁਥਰੀਆਂ ਲਾਈਨਾਂ (rows), ਸੁੰਦਰ ਚੈੱਕਮਾਰਕਸ, ਅਤੇ ਜਿੱਥੇ ਕੋਈ ਟੂਲ ਕਮੀਆਂ ਰੱਖਦਾ ਸੀ ਉੱਥੇ ਲਾਲ X ਦੇ ਨਿਸ਼ਾਨ। ਵਿਜ਼ਿਟਰ ਉਹਨਾਂ ਨੂੰ ਦੇਖਦੇ ਅਤੇ ਕਦੇ-ਕਦੇ ਕਲਿੱਕ ਕਰਦੇ। ਪਰ ਸਤ੍ਹਾ ਦੇ ਹੇਠਾਂ, ਸਕੀਮਾ (schema) ਚੁੱਪਚਾਪ ਹਰ ਨਤੀਜੇ ਨੂੰ ਖਰਾਬ ਕਰ ਰਿਹਾ ਸੀ। ਮੈਂ ਮਾੜੇ ਡਾਟਾ ਦੇ ਉੱਪਰ ਇੱਕ ਸੁੰਦਰ UI ਬਣਾ ਦਿੱਤਾ ਸੀ।
ਬੂਲੀਅਨ ਦਾ ਜਾਲ (The Boolean Trap)
ਤੁਲਨਾ ਵਾਲੇ ਪੇਜ ਆਮ ਤੌਰ 'ਤੇ ਇੱਕ ਸਪੱਸ਼ਟ ਪੈਟਰਨ ਨਾਲ ਸ਼ੁਰੂ ਹੁੰਦੇ ਹਨ। ਤੁਸੀਂ ਇੱਕ ਗਰਿੱਡ ਬਣਾਉਂਦੇ ਹੋ ਜਿੱਥੇ ਲਾਈਨਾਂ (rows) ਵਿਸ਼ੇਸ਼ਤਾਵਾਂ (features) ਹੁੰਦੀਆਂ ਹਨ, ਕਾਲਮਾਂ (columns) ਵਿੱਚ ਉਤਪਾਦ (products) ਹੁੰਦੇ ਹਨ, ਅਤੇ ਹਰ ਸੈੱਲ (cell) ਵਿੱਚ ਇੱਕ ਬੂਲੀਅਨ (boolean) ਹੁੰਦਾ ਹੈ। 'True' ਦਾ ਮਤਲਬ ਹੈ ਕਿ ਟੂਲ ਕੋਲ ਉਹ ਵਿਸ਼ੇਸ਼ਤਾ ਹੈ। 'False' ਦਾ ਮਤਲਬ ਹੈ ਕਿ ਉਹ ਨਹੀਂ ਹੈ। ਕੁਝ ਸਮੇਂ ਲਈ, ਇਹ ਸਭ ਕੁਝ ਸਹੀ ਲੱਗਦਾ ਹੈ। ਫਿਰ ਤੁਸੀਂ ਦੋ ਪ੍ਰੋਜੈਕਟ ਮੈਨੇਜਮੈਂਟ ਟੂਲਸ, ਜਾਂ ਤਿੰਨ ਕਲਾਉਡ ਡਾਟਾਬੇਸ, ਜਾਂ ਚਾਰ API ਗੇਟਵੇਅ ਦੀ ਤੁਲਨਾ ਕਰਨ ਦੀ ਕੋਸ਼ਿਸ਼ ਕਰਦੇ ਹੋ, ਅਤੇ ਗਰਿੱਡ ਵਿਰੋਧ ਕਰਨ ਲੱਗ ਪੈਂਦਾ ਹੈ।
ਬੂਲੀਅਨ ਸੈੱਲ ਬਾਰੀਕੀਆਂ (nuance) ਨੂੰ ਨਹੀਂ ਦਰਸਾ ਸਕਦੇ। ਜਦੋਂ ਇੱਕ ਸੈੱਲ 'false' ਦਿਖਾਉਂਦਾ ਹੈ, ਤਾਂ ਇਸਦੇ ਪੰਜ ਬਿਲਕੁਲ ਵੱਖਰੇ ਮਤਲਬ ਹੋ ਸਕਦੇ ਹਨ। ਸ਼ਾਇਦ ਟੂਲ ਵਿੱਚ ਸੱਚਮੁੱਚ ਉਸ ਸਮਰੱਥਾ ਦੀ ਕਮੀ ਹੈ। ਸ਼ਾਇਦ ਇਹ ਉਸੇ ਸਮੱਸਿਆ ਨੂੰ ਕਿਸੇ ਵੱਖਰੇ ਤਰੀਕੇ ਨਾਲ ਹੱਲ ਕਰਦਾ ਹੈ। ਸ਼ਾਇਦ ਉਹ ਵਿਸ਼ੇਸ਼ਤਾ ਮੌਜੂਦ ਹੈ ਪਰ ਕਿਸੇ ਐਂਟਰਪ੍ਰਾਈਜ਼ ਪੇਵਾਲ (enterprise paywall) ਦੇ ਪਿੱਛੇ ਹੈ। ਸ਼ਾਇਦ ਇਸ ਲਈ ਕਿਸੇ ਅਜਿਹੇ ਪਲੱਗਇਨ ਦੀ ਲੋੜ ਹੈ ਜਿਸ ਵੱਲ ਤੁਸੀਂ ਧਿਆਨ ਨਹੀਂ ਦਿੱਤਾ। ਜਾਂ ਸ਼ਾਇਦ ਤੁਸੀਂ ਸਿਰਫ਼ ਇਸਦੀ ਪੁਸ਼ਟੀ ਕਰਨਾ ਭੁੱਲ ਗਏ ਹੋ, ਅਤੇ ਲਾਲ X ਸਿਰਫ਼ ਤੁਹਾਡੀ ਆਪਣੀ ਅਨਿਸ਼ਚਿਤਤਾ ਲਈ ਇੱਕ ਸਥਾਨ (placeholder) ਹੈ।
ਇਹ ਇਸ ਲਈ ਮਹੱਤਵਪੂਰਨ ਹੈ ਕਿਉਂਕਿ ਉਪਭੋਗਤਾ ਮਹਿੰਗੇ ਫੈਸਲੇ ਲੈਣ ਲਈ ਤੁਲਨਾ ਵਾਲੇ ਗਰਿੱਡਾਂ 'ਤੇ ਭਰੋਸਾ ਕਰਦੇ ਹਨ। ਜਦੋਂ ਤੁਸੀਂ ਕਿਸੇ CLI-ਅਧਾਰਤ ਟੂਲ ਨੂੰ ਰੀਅਲ-ਟਾਈਮ ਕੋਲੈਬੋਰੇਸ਼ਨ (real-time collaboration) ਦੀ ਕਮੀ ਵਜੋਂ ਦਰਜ ਕਰਦੇ ਹੋ, ਤਾਂ ਤੁਹਾਡਾ ਮਤਲਬ ਹੋ ਸਕਦਾ ਹੈ ਕਿ ਇਸ ਵਿੱਚ ਲਾਈਵ ਕਰਸਰ ਸ਼ੇਅਰਿੰਗ ਨਹੀਂ ਹੈ। ਪਰ ਉਹੀ ਟੂਲ ਸ਼ਾਇਦ ਬਿਲਕੁਲ ਉਹੀ ਨਤੀਜਾ ਪ੍ਰਾਪਤ ਕਰਨ ਲਈ ਬ੍ਰਾਂਚ-ਅਧਾਰਤ ਵਰਕਫਲੋ (branch-based workflows) ਅਤੇ ਰਿਵਿਊ ਕਿਊਜ਼ (review queues) ਦੀ ਵਰਤੋਂ ਕਰਦਾ ਹੈ। ਇਸਨੂੰ 'false' ਵਜੋਂ ਦਰਜ ਕਰਨਾ ਇੱਕ ਡਿਜ਼ਾਈਨ ਚੋਣ ਨੂੰ ਇੱਕ ਨੁਕਸ ਵਜੋਂ ਦਿਖਾਉਂਦਾ ਹੈ। ਜੇਕਰ ਤੁਸੀਂ ਵੀਹ ਵਿਸ਼ੇਸ਼ਤਾਵਾਂ ਵਿੱਚ ਅਜਿਹਾ ਕਰਦੇ ਹੋ, ਤਾਂ ਤੁਸੀਂ ਦੋ ਟੂਲਸ ਦੀ ਤੁਲਨਾ ਨਹੀਂ ਕਰ ਰਹੇ ਹੁੰਦੇ। ਤੁਸੀਂ ਉਹਨਾਂ ਵਿੱਚੋਂ ਇੱਕ ਨੂੰ ਖਰਾਬ ਐਲਾਨ ਰਹੇ ਹੁੰਦੇ ਹੋ।
ਇੱਕ ਬੂਲੀਅਨ ਸਕੀਮਾ ਤੁਹਾਨੂੰ ਉਪਭੋਗਤਾ ਦੀਆਂ ਲੋੜਾਂ ਦੀ ਬਜਾਏ ਵੈਂਡਰ (vendor) ਦੀ ਸ਼ਬਦਾਵਲੀ ਵਿੱਚ ਸੋਚਣ ਲਈ ਵੀ ਸਿਖਾਉਂਦਾ ਹੈ। ਜੇਕਰ ਤੁਹਾਡੀਆਂ ਲਾਈਨਾਂ (rows) ਕੈਟੇਗਰੀ ਦੇ ਲੀਡਰ ਤੋਂ ਨਾਮ ਉਧਾਰ ਲੈਂਦੀਆਂ ਹਨ, ਤਾਂ ਤੁਸੀਂ ਇਹ ਪੁੱਛਣ ਲੱਗ ਪੈਂਦੇ ਹੋ ਕਿ ਕੀ ਹਰ ਮੁਕਾਬਲੇਬਾਜ਼ ਕੋਲ 'Workspaces' ਹਨ ਕਿਉਂਕਿ Notion ਉਹਨਾਂ ਨੂੰ 'Workspaces' ਕਹਿੰਦਾ ਹੈ। ਕੋਈ ਹੋਰ ਟੂਲ ਉਹਨਾਂ ਨੂੰ 'Projects' ਕਹਿੰਦਾ ਹੈ। ਤੀਜਾ ਟੂਲ ਕੋਈ ਸਮਰਪਿਤ ਕੰਟੇਨਰ (dedicated container) ਰੱਖਦਾ ਹੀ ਨਹੀਂ ਹੈ, ਪਰ ਤੁਹਾਨੂੰ ਵਿਅਕਤੀਗਤ ਫਾਈਲਾਂ ਨੂੰ ਪਰਮਿਸ਼ਨ ਦੇਣ ਦੀ ਇਜਾਜ਼ਤ ਦਿੰਦਾ ਹੈ ਜਦੋਂ ਤੱਕ ਤੁਸੀਂ ਉਹੀ ਅਲੱਗਤਾ (isolation) ਪ੍ਰਾਪਤ ਨਹੀਂ ਕਰ ਲੈਂਦੇ। ਤੁਹਾਡੇ ਰੋਅ (row) ਦੇ ਨਾਮ ਹਰ ਉਤਪਾਦ ਨੂੰ ਲੀਡਰ ਦੇ ਮਾਨਸਿਕ ਮਾਡਲ ਵਿੱਚ ਫੜਨ ਲਈ ਮਜਬੂਰ ਕਰਦੇ ਹਨ, ਜੋ ਕਿ ਬਾਜ਼ਾਰ ਦੇ ਦਿੱਗਜ ਲਈ ਸੁਵਿਧਾਜਨਕ ਹੈ ਪਰ ਬਾਕੀ ਸਾਰਿਆਂ ਲਈ ਬੇਇਨਸਾਫ਼ੀ ਹੈ।
ਸਟੇਟਸ (Status) ਲਈ ਇੱਕ ਬਿਹਤਰ ਸ਼ਬਦਾਵਲੀ
ਇਸਦਾ ਹੱਲ ਡਾਟਾ ਟਾਈਪ ਤੋਂ ਹੀ ਸ਼ੁਰੂ ਹੁੰਦਾ ਹੈ। ਬੂਲੀਅਨਸ (booleans) ਨੂੰ ਸਟੋਰ ਕਰਨਾ ਬੰਦ ਕਰੋ। ਇੱਕ ਸਟੇਟਸ ਫੀਲਡ (status field) ਸਟੋਰ ਕਰੋ ਜਿਸ ਵਿੱਚ ਸਪੱਸ਼ਟ ਸ਼ਬਦਾਵਲੀ ਹੋਵੇ।
ਇਹਨਾਂ ਛੇ ਸਥਿਤੀਆਂ (states) 'ਤੇ ਵਿਚਾਰ ਕਰੋ।
Full ਦਾ ਮਤਲਬ ਹੈ ਕਿ ਟੂਲ ਕਿਸੇ ਵੀ ਜੁਗਾੜ (workaround) ਜਾਂ ਵਾਧੂ ਖਰੀਦਦਾਰੀ ਤੋਂ ਬਿਨਾਂ ਕੰਮ ਨੂੰ ਸੰਭਾਲ ਲੈਂਦਾ ਹੈ।
Partial ਦਾ ਮਤਲਬ ਹੈ ਕਿ ਇਹ ਇਸਦਾ ਕੁਝ ਹਿੱਸਾ ਸੰਭਾਲਦਾ ਹੈ, ਜਾਂ ਇਹ ਸਿਰਫ਼ ਉਦੋਂ ਹੀ ਸੰਭਾਲਦਾ ਹੈ ਜਦੋਂ ਤੁਸੀਂ ਕੁਝ ਗੁੰਝਲਦਾਰ ਕੰਿਫਿਗਰ ਕਰਦੇ ਹੋ। ਇੱਥੇ ਹੀ ਜ਼ਿਆਦਾਤਰ ਤੁਲਨਾਵਾਂ ਵਿੱਚ ਗਲਤੀਆਂ ਛੁਪੀਆਂ ਹੁੰਦੀਆਂ ਹਨ। ਇੱਕ ਟੂਲ ਜੋ ਐਨਕ੍ਰਿਪਸ਼ਨ (encryption) ਦੀ ਪੇਸ਼ਕਸ਼ ਕਰਦਾ ਹੈ ਪਰ ਸਿਰਫ਼ 'at rest' (ਡਾਟਾ ਸਟੋਰ ਹੋਣ ਵੇਲੇ) ਹੀ, ਉਹ 'Partial' ਹੋਣਾ ਚਾਹੀਦਾ ਹੈ, 'Full' ਨਹੀਂ।
Different Model ਦਾ ਮਤਲਬ ਹੈ ਕਿ ਸਮੱਸਿਆ ਹੱਲ ਹੋ ਜਾਂਦੀ ਹੈ, ਬੱਸ ਉਸ ਤਰੀਕੇ ਨਾਲ ਨਹੀਂ ਜਿਸ ਤਰੀਕੇ ਨਾਲ ਕੈਟੇਗਰੀ ਦਾ ਲੀਡਰ ਇਸਨੂੰ ਹੱਲ ਕਰਦਾ ਹੈ। ਬ੍ਰਾਂਚਾਂ ਅਤੇ ਰਿਵਿਊਜ਼ ਵਾਲਾ CLI ਟੂਲ ਇੱਥੇ ਆਉਂਦਾ ਹੈ। ਉਹੀ ਡਾਟਾਬੇਸ ਵੀ, ਜੋ ਸਿੰਗਲ ਪੂਲਡ ਕਨੈਕਸ਼ਨ ਦੀ ਬਜਾਏ ਰੀਡ ਰੈਪਲਿਕਾਜ਼ (read replicas) ਦੀ ਵਰਤੋਂ ਕਰਦਾ ਹੈ। ਇਹ ਸਥਿਤੀ ਉਤਪਾਦ ਦੇ ਡਿਜ਼ਾਈਨ ਦੀ ਬੁੱਧੀ ਨੂੰ ਬਰਕਰਾਰ ਰੱਖਦੀ ਹੈ, ਨਾ ਕਿ ਮੁਕਾਬਲੇਬਾਜ਼ ਦੀ ਨਕਲ ਨਾ ਕਰਨ ਲਈ ਉਸਨੂੰ ਸਜ਼ਾ ਦਿੰਦੀ ਹੈ।
Not Applicable ਦਾ ਮਤਲਬ ਹੈ ਕਿ ਇਹ ਸੰਕਲਪ (concept) ਇਸ ਕਿਸਮ ਦੇ ਟੂਲ 'ਤੇ ਲਾਗੂ ਨਹੀਂ ਹੁੰਦਾ। ਇੱਕ ਸਰਵਰਲੈੱਸ ਫੰਕਸ਼ਨ ਪਲੇਟਫਾਰਮ (serverless function platform) ਨੂੰ ਉਸ ਤਰੀਕੇ ਨਾਲ ਪਰਸਿਸਟੈਂਟ ਲੋਕਲ ਸਟੋਰੇਜ (persistent local storage) ਦੀ ਲੋੜ ਨਹੀਂ ਹੁੰਦੀ ਜਿਵੇਂ ਕਿ ਇੱਕ ਵਰਚੁਅਲ ਮਸ਼ੀਨ ਨੂੰ ਹੁੰਦੀ ਹੈ। ਉੱਥੇ 'false' ਲਗਾਉਣਾ ਕੈਟੇਗਰੀ ਦੀ ਉਲਝਣ ਹੈ।
Absent ਦਾ ਮਤਲਬ ਹੈ ਕਿ ਤੁਸੀਂ ਦੇਖਿਆ ਹੈ, ਅਤੇ ਉਹ ਸਮਰੱਥਾ ਸੱਚਮੁੱਚ ਗਾਇਬ ਹੈ। ਕੋਈ ਜੁਗਾੜ ਨਹੀਂ, ਕੋਈ ਪਲੱਗਇਨ ਨਹੀਂ, ਕੋਈ ਵਿਕਲਪਿਕ ਵਰਕਫਲੋ ਨਹੀਂ। ਇਹ ਘਾਟ ਅਸਲੀ ਹੈ।
Unknown ਦਾ ਮਤਲਬ ਹੈ ਕਿ ਤੁਸੀਂ ਇਸਦੀ ਪੁਸ਼ਟੀ ਨਹੀਂ ਕੀਤੀ ਹੈ।
