As long as the dev wrote (and tested!) two-way migrations and they are possible, then yes you are correct.
As long as the dev wrote (and tested!) two-way migrations and they are possible, then yes you are correct.
If your system is truly distributed (multiple machines hosting it), then if one server performs migration that deletes the table, then the other server stops working.
You must have 2 checkins and 2 rollouts: Create a new table while maintaingin the old one -- and let it bake in; and then delete the old table a week later (or whatever is your cadence/release cycle).
I saw a heinous bug once because a newer person was using a column that had stopped getting updated years earlier (because it was replaced). This person saw the column and it was exactly what they needed. Then customers started getting billed on old accounts that they had either closed or changed with us. They were really mad.
I can see it being useful to rename these things, as long as there is some process in place to delete the renamed items after a period of time has passed.
Would be good if you could schedule a future migration that will happen only after a certain date has passed, which deletes the renamed tables/columns.
That bug you describe, maybe stale data is part of the problem, but ... why are you having a new person working on the billing system presumably without any code review? It sounds like you have a lot of process issues.
You see how that isn't an actual solution?
They're saying the solution to the specific problem of being unable to rollback due to irreversible migrations is to not write irreversible migrations, which is a completely valid solution and indeed the correct one. The whole point of migrations is to track db changes so that undoing them is easy.
Code and the DB always need to be compatible one version forward and back. That's required engineering discipline.
Two way migrations are both possible and SHOULD be done for any real data.