One of the best sessions of the first day of QCon for me was the talk "Teamwork is an individual skill" by Christopher Avery. The talk focused on skills and habits that we can learn to become effective team members. This is becoming more and more important since most of us are in the position that people we have no direct influence over determine whether we are successful or not. A software development team is a good example of this.
Team members on a software development team are dependent on each other to achieve their goals. This interdependence forces team members to work together. Of course this is easier said than done. One of the things that makes this hard is the way people respond to problems. Typically, they go through the following steps:
1. Lay blame ("Which one of you code monkeys broke the build?!")
2. Justify ("It's always broken anyway...")
3. Shame ("I must be the worst developer EVER!")
4. Obligation ("I guess I have to fix the build since that's what we agreed on.")
5. Take responsibility
Only the fifth step is a good attitude for learning and growth, but in order to arrive there, the first steps will have to be passed. Being aware of these steps can help you take responsibility more quickly.
Christopher showed data about successful teams and the factors that can predict their success. The interesting thing is that the top 3 factors were trust, goodwill/cooperation, and a shared purpose. Technical skills appear somewhere around the 15th spot on the list. This surprised me since in my experience, technical expertise plays a larger role in project success or failure than this spot leads me to believe.