I learned a few things about teams during the past two years:
– Good teams are crucial to successful projects.
– Process is crucial too, but good teams play with process, ie. adjust it to their needs for the project. Bad teams follow process literally and then complain about it.
– You can not afford a role in the team (visual design, IA, copy writing, …) that is weak. You can only afford weak members if someone else picks up their role.
– The client is part of the team. The team needs to educate the client and put them in the right mindset to work together.
– Specs are secondary in a good team. Specs can only convey say 40% of the nessecary information. Good teams talk, they don’t throw specs at each other. Specs are insurance that everybody understands each other, nothing more.
– Working together from a distance is only effective if you know each other well.
Of course this all assumes web-like projects. I’m not talking about launching the space shuttle, although many of the same ideas would apply. (Not the spec one)