This chapter deals with teamwork ”one of the main characteristics of software development. Teamwork is essential for the development of any sizable software. Specifically, this chapter addresses types of team structures and dilemmas (whose source is in teamwork) that software developers may face during the process of software development.
The first part of the chapter addresses three types of software teams: democratic , hierarchical, and virtual. Each type is discussed from the perspectives of what kinds of team interaction it inspires, what problems it may raise, and in which situations it fits. The second part of this chapter is dedicated to one issue ”rewards ”a topic that may raise dilemmas between one s personal interests and benefits one may gain from one s contribution to the teamwork. Like other chapters of this book, this chapter delivers the message that as soon as we increase our awareness with respect to various aspects of software development and various approaches to deal with dilemmas that our profession raises, the better we may cope.
To widen readers perspective on the topic of teamwork from a theoretical point of view, the chapter ends with a brief explanation of how teamwork in software engineering can be analyzed from a game theory point of view. In addition, issues related to outsourcing in the software industry are discussed.