Overlapping team responsibilities is a symptom of minestrone software. Or when you need multiple teams to build 1 feature.

At smaller scale, you’ve got minestrone when you can’t decide what file a function goes into. That means your files (or modules) aren’t well-defined. Or even when you’re not sure which function or component to add to.

Unclear business domains mean you’re not sure where code goes, who owns what, what new teams you need, or which microservice makes sense.

Writing well-structured software without a good domain model is impossible. No matter how clean your code.