Null could imply the field was present and a value not entered or not necessary.
Missing could imply the field was never known about at all. The context is important.
You always have to fight with incompetency in any large codebase.
Incompetency exists the most in whatever the first thing that coders learn is.
I'm old enough to remember when that was c++, then it was java, php, ruby, jquery, now it's react.
It's always a trade-off. You can build things in the "cheapest" language (whatever the first one currently is) but then you'll inevitably get the cheapest code
That's really what this conversation is about in the long arc of coding
Skills and people are a pyramid. The more competency you demand the harder the people are to find.
We have this tendency to taint the tool by the users.
Incidentally after a language or tool loses "first learned" status it generally slowly regains its prestige.
We don't assume a c++ shop is a bunch of morons any more or that using php means you write nothing but garbage. One day vue/react/whatever will lose its first language status as well and I'll be here reading about something that might not have been invented yet being a trashy bad no good idea
Ultimately the technical merits are mostly cover for a conjecture of economic efficiency. There's a reason why people aren't defending things like applications built with Go/wasm bridges - those people are expensive
The key here is that if we consider equivalent good and robust implementations, equivalent capable teams, same UX, etc of an SPA and a traditional full stack MVC application with a modern ajax tool such as livewire, hotwire, etc the latter takes a fraction of the time and cost to build and the result is far less complex and easier to maintain.
I've worked in both kinds of environments, and unless you're building an offline first app, dogma, or Google maps...SPAs make absolutely no sense from the engineering point of view.
1. In a thread about being locked out of google services because of AI black box, it makes sense to reduce dependence anywhere possible
2. If you get a new device, you need to un-enrol and re-enrol in all 2fa providers with g authenticator - it's a nightmare. Very hard if the old device got fatally dropped in a pool! I know at least with Authy you can carry the tokens to a new device.
I just want to chip in and say that 2. can be helped somewhat by having a second device (maybe old smartphone on wifi) that you export all authenticator keys to. Stick the old phone in a safe and make sure it's still working every so often (2x/year?)
This is relatively new - a few years ago Authenticator did not support this.
Oh, and make sure before you use the emergency device, time is synced - codes won't work otherwise.
Null != missing.