Discuss the use of programming teams.


Teaching Note:

As compared to individuals working alone. Examples include speed to completion, information hiding to reduce module dependencies, expertise in narrow fields (eg testing, documentation), etc.

INT, AIM 5 The need to develop a common “language” to enable collaboration across international frontiers when resolving problems.


Sample Question:


JSR Notes:

One point to make at the start of this is that many modern programs are simply too complex to be managed by one person alone.

So reasons for multiple member teams include (as noted above in the Teaching Note)

- Efficiency - teams can simply split up a big job and work on the pieces individually; this is easy with OOP and it separate, encapsulated, classes which can use other classes (being developed by other) via interacting with the "public interface" of those public methods.

- Specialization/Expertise - a team member or parts of a team can become well-practiced and faster at a certain kind of task, speeding up the overall efficiency and success of the team. And as mentioned in the teaching note, this is not just different aspects of programming itself, but other related tasks as well, which though they require a certain understanding of coding, are not necessarily coding themselves.

- Focus - a team member or parts of a team can focus on their own problem without worrying about the other pieces. The "information hiding" of other groups of work need not be of a concern to certain team members; they can be left alone to solve their own specialized task, which they in turn, keep from complicating the lives of other parts of the overall team. (Note that this "information hiding" is possible through encapsulation, where only the public "interface" of other team member work is "publicly" available to other coders on the team.)