Most of the companies I worked for tried to implement a "hierarchy-free" environment. To do that they tried to just cut some management out. But in the end that never felled really like it was working.
In the past months, I've been developing a new product with a partner and we defined that we needed to test, sell and iterate as fast as we can. During this, I understood that the most of the time hierarchy is not the problem and I will explain why.
One day we were both very busy and I needed to make a decision that could possibly make us lose some money. I couldn't talk to him at the time and not make this decision could possibly cost us a week of work. I had no option but do it. That same day late at night I called him and explained what happened.
After this, we figured out that in order to go as fast as we can everybody need to break something sometime, that is how we learn and the project evolves. We just defined an amount of money that we could afford to lose due to bad decisions and that was it. From this day we have never been so relaxed and the project is really going fast because been able to break thing without a punishment only brings the best from the process.
And now I've been thinking about it. How could companies only allow the CEO to "Move fast, break things"? This is the most effective way to create a hierarchy, concentrating all expertise in one person. And the consequences is less communication, less creativity, and a slower process.
If you truly want a company with a more agile process and more connected teams you must have a way to support people mistakes, measure the risks and define boundaries to make it possible.