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:


Q1. Describe two ways in which programming by a team differs from programming by an individual working alone.



JSR Notes:

One point to make at the start of this is that for sure most modern programs are simply too complex to be managed by one person alone. This was not always the case, but it certainly is now. Which is one reason why interpersonal skills are so important to work on, along with core programming skills.

To highlight the increasing importance of programming teams, you'll note that there's a really interesting move now-a-days for (particularly young) coders to apply for jobs as a team or a group, rather than individually.

Reasons for using programming teams include (as noted above in the Teaching Note)


Teams can very easily split up a big job and work on the pieces individually (decomposition). This is easy with OOP whereby separate, encapsulated, classes can use/have/inherit other classes (being developed by other teams), often via interacting with the "public interface" of the class' methods. Important here also are the concepts of information hiding and abstraction, in which the users of other classes do not have to intimately know the inner workings of the classes all the other teams are working on; rather they can just use them according to the documentation provided by those other teams.


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.


A team member or parts of a team can focus on their own problem without worrying about the other pieces - which is yet another example of abstraction. Such "information hiding" of other team's work allows the programmer or team 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. (Remember that this "information hiding" is enabled through encapsulation, where only the public "interface" of other team member work is "publicly" available to other coders on the team.)


In Summary, Back to the Assessment Statement:
Discuss the use of programming teams.

Programmers can be specialized; some programmers can develop special expertise in one area, like testing, while others focus on user interfaces, for example. Different programmers can work on different classes independently because of the modularity provided by OOP principles of decompositon. And yes, with many people, various backgounds and ideas can help lead to novel solutions.