I mean... I understand the notion of fucking up a migration, of actually introducing data loss etc.
I guess this is partly my fault, cuz I said this list was pedantic but I didn't go in deep enough ("rollback if something is clearly blowing up" for example).
I mean yeah, don't delete the old data until you're sure! But you know what? If I'm moving two booleans into an enum with 4 states (or less states but I checked the production database to confirm a case didn't exist), I feel pretty confident about doing that data move and not having some secret data being missed.
You can use logic/math/data analysis to determine you are handling every case! And yeah, you can make mistakes, but the variety of mistakes become much smaller. And this is all in the framework of having backups of your data, having reviews, letting time pass to reduce uncertainty... just run of the mill "run stuff on computers and editing multi-tenant data" stuff.
I guess this is partly my fault, cuz I said this list was pedantic but I didn't go in deep enough ("rollback if something is clearly blowing up" for example).
I mean yeah, don't delete the old data until you're sure! But you know what? If I'm moving two booleans into an enum with 4 states (or less states but I checked the production database to confirm a case didn't exist), I feel pretty confident about doing that data move and not having some secret data being missed.
You can use logic/math/data analysis to determine you are handling every case! And yeah, you can make mistakes, but the variety of mistakes become much smaller. And this is all in the framework of having backups of your data, having reviews, letting time pass to reduce uncertainty... just run of the mill "run stuff on computers and editing multi-tenant data" stuff.