How do you handle workplace disagreements when you think you're right?

Posted by Ok-Introduction-9111@reddit | ExperiencedDevs | View on Reddit | 124 comments

Just got a new job (working for 5 months in that company). I recently had a technical disagreement with a more tenured colleague whom I'm trying to learn from.

The context: We're building a saved filters feature for a table. Each user can have multiple named filter presets (like "My Active Items" or "Q3 Priorities"). The backend dev chose to store all of a user's saved filters as a single JSON blob, one document per user containing the entire array of filters. To add or delete a filter, the frontend loads the full array, mutates it, and sends the whole thing back.

My approach: I argued for per-record CRUD. Each saved filter as its own record with its own ID. Reasoning was that the blob pattern has structural issues for collections of independent items: concurrent edits across tabs cause silent overwrites (deleted filters can resurrect, added filters can disappear), the frontend has to implement CRUD-like state management on top of a non-CRUD API, no per-filter IDs makes future features (sharing, pinning) hard, and migration cost grows with user count. I framed it as a user-experience concern, silent data loss, even rare, erodes trust.

Their approach: Blob storage, "this is the standard pattern," edge cases acceptable for v1, can refactor later if needed.

I made the case multiple times with different framings (including a "hybrid" reframe, CRUD at collection level, structured contents within each record). I engaged with their counter-arguments. My (now departing) lead privately agreed with my view but didn't override the call. The QA initially leaned toward my view (because he taught that was BE dev's opinion), then sided with the BE dev once he said his position. Decision was made for blob. I'm now implementing it.

What I'm curious about: