Skip to main content

Section 1.2 Collaboration

45 minutes
Almost all software is developed collaboratively in teams. Working with others can help programmers design better apps. In this topic, you will learn about the benefits of collaboration and user testing and how it can reduce bias in app development.

Subsection 1.2.1 Collaboration

The following chart shows various roles on a software development team. There are many roles that don’t require coding even on a software development team.

Activity 1.2.1.

Watch the following video about Pair Programming. Try it out with your friends the next time you code!

Activity 1.2.2.

What is one advantage of working collaboratively on an app?
  • Only one person needs to understand the project.
  • No, effective teams share knowledge so multiple people understand the project.
  • Collaboration eliminates the need for testing.
  • Testing is still an important part of software development, even when working as a team.
  • Different team members contribute different skills and perspectives.
  • Correct! Collaboration allows team members to combine their talents and ideas, often leading to a better final product.
  • Working alone is always faster than working with others.
  • Not necessarily. While teamwork requires communication, it often improves quality and allows tasks to be divided among team members.

Activity 1.2.3.

During pair programming, the driver accidentally forgets an important step. The navigator notices the mistake immediately. What does this example demonstrate about pair programming?
  • It eliminates all programming errors.
  • Not quite. Pair programming can help find mistakes earlier, but it cannot guarantee that every error will be caught.
  • It helps catch mistakes earlier through collaboration.
  • Correct! The navigator reviews the code as it is written, making it more likely that mistakes will be noticed and corrected before they become larger problems.
  • It means the partners should switch roles.
  • While pair programming involves switching roles, the main benefit is the collaborative review of code.
  • It slows down development.
  • While pair programming may initially seem slower, it often leads to higher quality code and faster debugging in the long run.

Activity 1.2.4.

Let’s do a pair programming simulation! Work with a partner to write an algorithm for brushing your teeth. It must be precise enough for a robot to follow. One partner will be the driver and the other will be the navigator. The driver will write the steps while the navigator will check for mistakes and ask questions. After 2–3 minutes, switch roles. Write your algorithm below. Put *’s next to steps that were rewritten because the navigator made suggestions. Did having a partner help you write a better algorithm?

Subsection 1.2.2 User Testing

Watch the following video about user testing and how it can help find bugs, give feedback, and improve apps. Try it out with your friends the next time you code!

Activity 1.2.5.

Why do software developers perform user testing?
  • To guarantee the program has no bugs.
  • User testing can reveal problems, but it cannot guarantee that every bug has been found.
  • To replace collaboration among team members.
  • User testing complements collaboration rather than replacing it.
  • To make sure only certain people can use the app.
  • User testing makes sure your app works for all intended users.
  • To learn how well the app meets users’ needs and identify improvements.
  • Correct! User feedback helps developers improve both the functionality and usability of an app.

Activity 1.2.6.

Imagine that you are a user-tester for Runestone, which is the platform this ebook is on. What are some things you would test to make sure the platform is easy to use? Did you find any tasks that were confusing or difficult to complete?

Subsection 1.2.3 Iterative Process

Software development teams use an iterative design process where they design, test, and revise their apps multiple times to improve the app’s functionality and usability. The following diagram is an example of an iterative design process:

Activity 1.2.7.

Which statement best describes an iterative design process?
  • Develop the app once and release it without changes.
  • Most software is improved through multiple rounds of revision.
  • Repeatedly design, test, revise, and test again to improve the app.
  • Correct! Iterative design uses multiple cycles of development and testing to better meet user needs.
  • Wait until the end of development before testing.
  • Testing and feedback are most useful throughout development so improvements can be made early and often.
  • Allow only one team member to make all design decisions.
  • Iterative design benefits from collaboration and input from multiple people, including users.

Activity 1.2.8.

During testing, users struggle with an app’s menu. According to the iterative design process, what should the development team do next?
  • Revise the menu and conduct another round of testing.
  • Correct! In an iterative design process, developers use user feedback to improve the app, then test again to see whether the changes were successful.
  • Stop testing because they have already tested the app.
  • Iterative design involves multiple rounds of testing and improvement until the app better meets users’ needs.
  • Remove the menu entirely.
  • Removing the menu is not necessarily the best solution. The goal is to revise the design based on feedback and then test the revised version.
  • Release the app anyway.
  • If testing shows that users are still having difficulty, the team should continue improving the app before releasing it.

Subsection 1.2.4 Reducing Bias through Collaboration

Watch the following video to learn more about bias that can effect AI systems.

Activity 1.2.9.

A company creates a face recognition app. The developers assume the app will mostly be used in bright lighting, so they design and test it that way. They also train the app using a dataset that contains mostly images of adults with lighter skin tones. Which statement best explains the biases in this app? This is an actual historical example pointed out by Joy Buolamwini from MIT in her Gender Shades project.
  • The app only shows human bias because the programmers made assumptions about lighting.
  • Not quite. The programmers’ assumptions are an example of human bias, but the training data is also incomplete and unrepresentative, which is data bias.
  • The app only shows data bias because the training data is not representative.
  • Not quite. The dataset shows data bias, but the programmers’ assumption about lighting is also an example of human bias.
  • The app shows both human bias and data bias because the programmers’ assumptions influenced the design, and the training data is incomplete and unrepresentative.
  • Correct! The design choices reflect human bias, while the unrepresentative training data reflects data bias. These two types of bias often interact to affect how an app behaves for different users.
  • The app shows no bias because it was trained using real photos.
  • No. Even real-world data can be biased if it does not represent the people and situations the app is intended to work well for.
Take a look at the following comic strip where a cat who is a user of an app is letting the dog developers know that the app doesn’t work well for it, but the developers don’t listen.

Activity 1.2.10.

What is the bias in the comic strip above? Why do you think the app works for dogs but not cats? How could the developers have reduced bias in their app?

Subsection 1.2.5 Vocabulary Review

Activity 1.2.11.

You have attempted of activities on this page.