Elon Musk says something interesting about this here:
"Product errors reflect organizational errors."
He's specifically talking about how the product subsystems are effectively mapped out by the product departments and that they should try to interface with each other with minimal constraints.
But, my take was that there needs to be a LOT of communication between departments and an ongoing debate between them as well.
Edit: The more that I think about it...
This might a big reason why Musk companies defy the odds, and why it is so difficult for incumbents to catch up.
The over the air updates of Tesla are a good example of hardware & software departments working together to make something very difficult to compete with (if you're a regular old school siloed company).
Crap >> Team >> Crap
Passages from the Life of a Philosopher (1864), ch. 5 "Difference Engine No. 1"