Skip to content

Commit

Permalink
Make Viewing Party a pair project (AdaGold#32)
Browse files Browse the repository at this point in the history
Co-authored-by: Kyra Patton <[email protected]>
  • Loading branch information
nancy-harris and kyra-patton authored Feb 16, 2023
1 parent 8c4b487 commit bdf8b35
Show file tree
Hide file tree
Showing 4 changed files with 52 additions and 19 deletions.
71 changes: 52 additions & 19 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,50 +9,75 @@ Solving problems with...
- Dictionaries
- Nested loops
- Nested data structures
- Pair-programming techniques

## Goal

You and your friends enjoy watching things together online. Of course, everyone has seen different things, has different favorites, and different things they want to watch.

You've been using a spreadsheet to compare everyone's watched list, favorites list, and watchlist, but it's been getting too cumbersome. In order to find things you've watched and your friends haven't watched, or things that your friends have watched and you haven't watched, you have to comb through the spreadsheet. You know that there are different ways we can get that information: we can use Python!

For this project, you will be given some data structure that represents the things you've watched, favorited, and want to watch. The directions below will lead you to create a series of functions. These functions will modify the data, and implement features like adding and removing things between different lists. Other features include creating recommendations!
For this project, you and your partner will be given some data structure that represents the things you've watched, favorited, and want to watch. The directions below will lead you and your partner to create a series of functions. These functions will modify the data, and implement features like adding and removing things between different lists. Other features include creating recommendations!

## Pair Programming

Utilize good pair programming practices. Refer to this [medium article](https://medium.com/@weblab_tech/pair-programming-guide-a76ca43ff389), and the lesson in Learn titled Intro to Pair Programming from Approaching a Problem if you need a refresher for some best practices. Switch _driver_ and _navigator_ roles often. When there is uncertainty or confusion, step away from the keyboard and discuss, plan, and document on paper or whiteboard before continuing.

## One-Time Project Setup

Follow these directions once, a the beginning of your project:
Follow these directions once, at the beginning of your project:

*Only one member of the team should complete the following two steps:*

1. In GitHub, click on the "Fork" button and fork the repository to your GitHub account. This will make a copy of the project in your GitHub account.

![Fork Button](images/fork.png)

2. In Github, add the other member(s) of your team as collaborators to the repository. The student who forked the respository should do this by first choosing **Settings** from the top menu bar, then choosing **Collaborators** from the navigation bar on the left, and finally selecting the green **Add People** button.

You can find detailed instructions [here](https://help.github.com/articles/inviting-collaborators-to-a-personal-repository/).

![Settings](images/settings.png)

<img src="images/manage-access.png" alt="Collaborators and teams" width="250"/>

![Invite teams or people](images/invite.png)

The invited member(s) will need to accept the invitation either by accepting the email invitation or accepting the invitation in Github.

1. Navigate to your projects folder named `projects`
Both members of the team will be working from the same forked repository. Be sure to follow proper git protocol from the Intro to Git topic in Learn.

*Each member of the pair should complete the following steps:*

3. Navigate to your projects folder which is named `projects`.

If you followed Ada's recommended file system structure from the Intro to Dev Environment lesson in Learn, you can navigate to your projects folder with the following command:

```bash
$ cd ~/Developer/projects
```

2. In Github click on the "Fork" button in github and fork the repository to your Github account. This will make a copy of the project in your github account.

![Fork Button](images/fork.png)

3. "Clone" (download a copy of this project) into your projects folder. This command makes a new folder called `viewing-party`, and then puts the project into this new folder. Make sure you are cloning from your copy of the project and not the class version (ada-cX).
4. "Clone" (download a copy of this project) into your projects folder. This command makes a new folder called `viewing-party`, and then puts the project into this new folder. Make sure you are cloning from your copy of the project and not the class version (ada-cX).

```bash
$ git clone ...
```

Use `ls` to confirm there's a new project folder

4. Move your location into this project folder
5. Move your location into this project folder

```bash
$ cd viewing-party
```

5. Create a virtual environment named `venv` for this project:
6. Create a virtual environment named `venv` for this project:

```bash
$ python3 -m venv venv
```

6. Activate this environment:
7. Activate this environment:

```bash
$ source venv/bin/activate
Expand All @@ -63,15 +88,19 @@ Verify that you're in a python3 virtual environment by running:
- `$ python --version` should output a Python 3 version
- `$ pip --version` should output that it is working with Python 3

7. Install dependencies once at the beginning of this project with
8. Install dependencies once at the beginning of this project with

```bash
# Must be in activated virtual environment
$ pip install -r requirements.txt
```

Summary of one-time project setup:
One person:
- [ ] Fork the project respository
- [ ] Invite team members to the respository

All team members:
- [ ] `cd` into your `projects` folder
- [ ] Clone the project onto your machine
- [ ] `cd` into the `viewing-party` folder
Expand Down Expand Up @@ -106,20 +135,20 @@ $ source venv/bin/activate
$ pytest
```

4. Read through the test failure, and understand why the failure is happening. Confirm your findings with a classmate.
4. Read through the test failure, and understand why the failure is happening. Confirm your findings with your partner.
- If it is a test you wrote, consider whether you are actually testing what you intend to test. Does the test need modification?

5. Make a plan to implement code to pass the test.
5. Make a plan with your partner to implement code to pass the test.

6. Write code in `party.py` to pass the test.

7. Re-run the tests.

8. Repeat steps 3-7 until that test passes!

9. Repeat steps 2-8 until you have finished all tests in the file.
9. Repeat steps 2-8 until you have finished all tests in the file. Consider switching driver/navigator roles. Make sure the current driver pushes using `git push` and the new driver pulls using `git pull`.

10. Consider looking for opportunities to improve your code.
10. Consider looking for opportunities with your partner to improve your code.

11. Before moving to the next wave, make sure you haven't missed any skipped tests.
- *Search the file (**Cmd** **F**) for `@pytest.mark.skip`*
Expand All @@ -135,9 +164,7 @@ $ deactivate

Finally, at submission time, **no matter where you are**, submit the project via Learn.



This will let us give feedback on what you've finished so that you can be better prepared for the next project.
In addition to submitting your Pull Request, submit a reflection to the pair programming reflection prompt.

## Details About How to Run Tests

Expand Down Expand Up @@ -196,6 +223,12 @@ For the time being, we need to make sure that the data provided to each test is

## Project Directions

### Set Up a Pair Plan

First, come up with a "plan of action" for how you want to work as a pair. Discuss your learning style, how you prefer to receive feedback, and one team communication skill you want to improve with this experience.

We recommend spending at least a portion of the time pair programming and working collaboratively from the same machine. Zoom and screen sharing or [VSCode Live Share](https://code.visualstudio.com/learn/collaboration/live-share) are good tools to consider. Some teams will choose to pair program and work collaboratively from the same machine for the entire project. Some teams will choose to divide a portion of the work and combine their code using git.

This project is designed such that one could puzzle together how to implement this project without many directions. Being able to read tests to understand what is expected of our program is a skill that needs to be developed; programmers often take years to develop this skill competently.

When our test failures leave us confused and stuck, let's use the detailed project requirements below.
Expand Down
Binary file added images/invite.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added images/manage-access.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added images/settings.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.

0 comments on commit bdf8b35

Please sign in to comment.