This chapter presents one of the basic elements of software projects—teamwork. It addresses how to build teams in a way that promotes team members’ accountability and responsibility, and that fosters communicationcommunication between teammates. One of the basic ways to start team building is by assigning roles to the team members. For this purpose a role scheme is presented in this chapter, according to which each team member is in charge of a specific managerial aspect of the development process, such as design and continuous integration, in addition to his or her development tasks. Teamwork is not always a simple process, and sometimes it raises dilemmas and conflicts between team members. This aspect of teamwork is not neglected in agile teams, and when a conflict emerges, it is addressed openly by all the team members. In the section that deals with teamwork in learning environments, it is illustrated how the role schemerole and the discussion about dilemmasteamwork in teamwork provide an evaluation framework for software projects developed by student teams in academia.
- Dubinsky Y, Hazzan O (2004) Roles in agile software development teams. 5th international conference on extreme programming and agile processes in software engineering. Garmisch-Partenkirchen, Germany, pp 157–165Google Scholar
- Hazzan O (2003) Computer science students’ conception of the relationship between reward (grade) and cooperation. 8th annual conference on innovation and technology in computer science education (ITiCSE 2003), Thessaloniki, Greece, pp 178–182Google Scholar
- Humphrey WHumphrey W (2000) Introduction to the team software process. Addison-Wesley, Reading, MAGoogle Scholar