Well, you can have code that is a fantastic high quality implementation of a flawed architecture. For example:
Backend team: As we are building an MVP, this database table will have a poorly designed schema we will iterate on later.
Frontend team: We need some data that only exists in that other team's database. We will accumulate some technical debt by reading their database directly. This will let us deliver working software quickly.
Backend team: The time has come to refactor that badly designed schema.
Frontend team: That will break everything. You must not do it.
Backend team: Please will you pay off that technical debt?
Frontend team: It's not hurting us much at all, and we would rather be working on new features and things that make money. We are busy and many people are asking us for important things. Here is a link to an article saying technical debt is not a bad thing.
Backend team: I am sad because I'm stuck looking after this badly designed table. I wish I had done a big design up front.
Backend team: As we are building an MVP, this database table will have a poorly designed schema we will iterate on later.
Frontend team: We need some data that only exists in that other team's database. We will accumulate some technical debt by reading their database directly. This will let us deliver working software quickly.
Backend team: The time has come to refactor that badly designed schema.
Frontend team: That will break everything. You must not do it.
Backend team: Please will you pay off that technical debt?
Frontend team: It's not hurting us much at all, and we would rather be working on new features and things that make money. We are busy and many people are asking us for important things. Here is a link to an article saying technical debt is not a bad thing.
Backend team: I am sad because I'm stuck looking after this badly designed table. I wish I had done a big design up front.