While reading this article I identified with the established point of view, which is that a lot of unimaginable things make communication a lot harder than what we need it to be. The truth is that whenever you're managing a large group of people - as is the case of a software engineering project team - and there is a lot of complex information that everyone must be aware of, there will always be communication barriers. From the experience I have collected, this can be mitigated through the division of the team into smaller workgroups, which is what happens in traditional software development. Usually, the leaders of these teams establish communication between each team and the others. This seems to work because the most important issues of each team can be discussed in the meetings with all the team leaders, and the other members of the group do not need to be present because all decision-taking should be previously forecast and they will have a chance to participate in the team meetings.
Despite the processes involved in the development, it is crucial that everyone is capable to better their communication skills. Leaders need to be prepared to motivate other people to give ideas and opinions and express their concerns. Everyone should be educated on this topic to contribute to a healthy working environment, which avoids that information is lost along the way and that some people are left out of the decision process.