When working as a team the most important part is understanding your true place. I'm not talking about some title you are given. I'm talking about your true essence in relation to the work you do. Understanding this place of yours will make things hell a lot easier, efficient and more comfortable for both you and your team.
This understanding can only be used among groups such as executive boards or small teams which can work as mesh. Working as a mesh means team members doing what they are best at to ensure the best output without being concerned of their titles or whatever. First of all you have to kill your ego or you wouldn't get the best results. Explore some teachings of Osho. It would help very much.
Understanding your place means understanding everything about you without judgement or excuses. Just be the observer and know all the pros, cons and facts about you. Then understand the facts about other members. Don't try to assign them into positions or name their places. Just know yourself and others as different and unique individuals. Of course; you should be with a bunch of people who are at least on this level of understanding to work like this. This is more of Human 2.0 thing.
This is all you have to do to work in the most efficient way possible. After this everything becomes context based and everything will be go beyond what's called flexible by most of the people. You and your team will work like water. Do not assign any tasks at anybody. When there is something to do the best will lead the task. This is why I told you to kill your ego before starting everything. You wouldn't be a part of a stone building. You would be a pile of water in a ocean. Nothing will be fixed for you. Your understanding of your place in relative to other members will tell you how to deal with the situation. You will do something better than anybody in the team and completely suck at another thing.
For an example let's say you are good at designing games and there is a programmer who is good with thriller elements and plot twists in a story though he lacks the skill of connecting dots and actually creating a story. If this programmer comes up with something saying he has got a better idea than the story writer; let the programmer deal with that specific part of the story. The designer and writer shouldn't go teaching the programmer about his entitlement. Instead all 3 of them should understand their true place. Designer should go along with programmer's idea and the writer should back off for a moment. Then after doing his small yet important part, programmer should slide back to his programming work.
This is the true way of teamwork. Dump those mechanical hierarchy bullshit and act based on the context and realization. Know your true place and know each others place at the given context. Take over when you can do better than the rest. Help when you can do something about it and back off if you suck at it. Simple as that. Efficient as hell. Productive as heaven.