I feel like there should be something like a type system but for backwards compatible code. Some language in which writing non-backwards compatible code is impossible
I guess in general code is never really aware of the existence of different versions of itself, there's a whole different VC layer. And if you do it right you hopefully only have to think about this when ingesting serialized things