Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 3 additions & 1 deletion common-content/en/module/piscine/assessing-demos/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,9 @@ time = 10

We assess demos against 6 rubric points. A demo must pass any 5 of the 6 points to pass. Trainees must pass at least one demo to pass the course.

We give feedback after every demo, including a run-down of each rubric point.
We give feedback after every demo, including a run-down of each rubric point. This feedback, including a score, should ideally be given straight after the demo, and absolutely no later than the same day.

Where possible, we suggest having two assessors in a demo session, to get more opinions and discuss any uncertainty.

These are typically our trainees' first demos. We expect significant improvement through the course. The first sprint is expected not to be good (but sometimes is!).

Expand Down
21 changes: 0 additions & 21 deletions common-content/en/module/piscine/briefing/index.md

This file was deleted.

4 changes: 3 additions & 1 deletion common-content/en/module/piscine/expectations/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -13,16 +13,18 @@ hide_from_overview="true"

## Trainees, we expect you to:

- Check Slack at least once a day and respond to any messages.
- Work in groups and individually, in class and during the week.
- Show up on time and participate in all activities, including helping others.
- Complete the projects in the way they are specified.
- Not over-focus on styling. We often see trainees fail because they spent most of their time working on beautiful CSS, but then not complete the project. Don't make this mistake. You're allowed to style things as much as you want, but won't get _any_ credit for doing so.
- Do your best.

## Trainees, you can expect:

- Your team to work _with_ you to complete the projects.
- A fair assessment, explained clearly.
- Help from volunteers and other candidates with your code and blockers.
- Help from volunteers and other candidates with your logistical blockers.

## We expect everyone to:

Expand Down
2 changes: 1 addition & 1 deletion common-content/en/module/piscine/goals/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ objectives = [

Your goal is to build two group projects and one solo project over the next 22 days. For each project, your goal is to:

- 🎯 Build a complete project that meets the requirements, including tests.
- 🎯 Build a complete project that meets all of the requirements, including tests.
- 🎯 Build a complete understanding of all the code in your project, because you will be asked to explain it.

_Our_ goal is to find people who are ready to train in the Software Development Course. This means we are looking for people ready to begin working as a professional software engineer within the next 16 weeks. This is why we are looking at your ability to:
Expand Down
17 changes: 1 addition & 16 deletions common-content/en/module/piscine/induction/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,25 +9,10 @@ time=15

Welcome to the Piscine.

Before you came to class today, you should have completed the prep and signed the Trainee Agreement and the [Code of Conduct](https://codeyourfuture.io/about/code-of-conduct/). If you haven't done the prep, it's time to leave. Thanks, and try again next time.
Before you came to class today, you should have completed the prep and attended a briefing session. If you haven't done these things, it's time to leave. Thanks, and try again next time.

If you have done the prep, you're in the right place. Please make sure you have signed the register. Sign it as soon as you come in. The register isn't just for attendance rules; we need to know who is in the building if there's a fire, so please don't sign in for anyone else.

Next up, we need to choose a timekeeper. The timekeeper is responsible for keeping us on track and making sure we finish on time. Who would like to volunteer?

<details>
<summary>

#### ⏰ The Timekeeper will:

</summary>

- [ ] Announce the start of an activity and how long it will take (check everyone is listening)
- [ ] Manage any whole class timers that are used in an activity
- [ ] Give people a 10-minute wrap-up warning before the end of an activity
- [ ] Announce the end of an activity and what happens next
</details>

Today you will kick off your first team project. Everyone will also give a demo about something they did before the Piscine. At the end of the day, we will wrap and people are welcome to stick around to socialise.

But first, let's get to know each other. Stand up and find someone you don't know. Introduce yourself and tell them one thing you are looking forward to learning in the Piscine.
10 changes: 9 additions & 1 deletion common-content/en/module/piscine/intentions/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -13,4 +13,12 @@ As a **facilitator**, your goal is _not_ to help the trainees with their project

As an **assessor**, your goal is to provide meaningful feedback to help the trainees to grow. For demos, we provide this feedback after each demo. For projects, we provide this feedback after the interview is complete.

There is currently one exception to this: [Breaking down a project to work on as a group is a skill not currently taught in ITP](https://github.com/CodeYourFuture/curriculum/issues/1441). Until this is resolved, we host a single, consistent workshop on this in the first sprint.
If you feel a rubric clarification is needed, coordinate with the other assessors before providing this clarification. We need to make sure everyone gets the same clarification.

Below is a list of learning objectives that are not currently taught in ITP, and how we handle them in the Piscine:

| Learning Objective | How we handle it |
| -------------------|------------------|
| [Break down a project to work on as a group in parallel](https://github.com/CodeYourFuture/curriculum/issues/1441) | We teach this in a workshop in sprint 1 |
| [Test a project reasonably thoroughly](https://github.com/CodeYourFuture/curriculum/issues/1616) | We only require one non-trivial test |
| Anticipate and prevent time-zone and daylight-savings bugs | Time-related project briefings, contain warnings and guidance |
33 changes: 22 additions & 11 deletions common-content/en/module/piscine/practice-break-down/index.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
+++
title = "Practice breaking down a requirement"
time = 60
time = 45
objectives = [
"Break down a requirement into approachable tasks.",
"Coordinate multiple team members in executing tasks in parallel.",
Expand All @@ -19,13 +19,13 @@ Finally, it's important that we arrange tasks so your team isn't blocking yourse

We will practice this together on the two of the requirements of the project:

- Selecting a user must display the agenda for the relevant user (see manual testing below)
- Submitting the form adds a new topic to revise for the relevant user only
- Selecting a user must display the list of bookmarks for the relevant user
- Submitting the form adds a new bookmark for the relevant user only

To complete these requirements we'd need to build most of the project! So we'll focus on simplified versions of these requirements:

- When the page loads, display one revision date for one topic from in User 1's stored agenda
- When clicking a button, store {{<tooltip title="hard-coded">}}Hard-coding refers to when developers directly write values or data into code, often replacing variables or user input with static values.{{</tooltip>}} data for User 1's agenda
- When the page loads, display one bookmark from User 1's stored agenda
- When clicking a button, add a {{<tooltip title="hard-coded">}}Hard-coding refers to when developers directly write values or data into code, often replacing variables or user input with static values.{{</tooltip>}} bookmark to User 1

To complete the full requirements, you can build on the tasks we decide on today.

Expand All @@ -38,17 +38,28 @@ To complete the full requirements, you can build on the tasks we decide on today

{{</note>}}

Looking ahead to your coursework for the next week, one of your tasks will be to [Refine a ticket](https://github.com/CodeYourFuture/The-Piscine/issues/6).
Our goal right now is to make sure we refine the tickets so that two different people could be working on tasks at the same time.

{{<note type="exercise" title="Refining tickets">}}
{{<note type="exercise" title="Unblocking group work">}}

1. Everyone read the [Refine a ticket coursework task](https://github.com/CodeYourFuture/The-Piscine/issues/6), for {{<timer>}}3{{</timer>}}.
2. Get into pairs. Each pair should then pick 2 of the tasks from the whiteboard (it doesn't matter if multiple pairs do the same task). Spend {{<timer>}}10{{</timer>}} refining your tickets in your pairs. Make sure you work through **all** of the workflow points.
3. Go around each pair in the group. The pair should pick 1 of their tasks and say what they think the priority, estimate, schedule and type of work the task is, and if there is anything they would need to know before starting the ticket. (Hint: the last point is **important**! Don't skip it!)
4. As a group, pick a task (or two, depending on time) that needs more information. Spend {{<timer>}}10{{</timer>}} discussing what actions you could take to ensure everyone has what they need to complete this task?
1. Set a timer for {{<timer>}}10{{</timer>}}

Work out what blockers would limit the tasks so that only one person could be working at a time.

Define additional tasks that can be done first to unblock parallel working.

{{</note>}}

Discuss as a group how we can unblock parallel work.

<details>

<summary>Tips for volunteers</summary>

The big insight we're looking to drive here is that agreeing a data format in advance means we can work in parallel.

</details>

<!--
TODO: The Piscine is meant to be pure evaluation with no teaching.
Ideally ITP would provide this experience so we wouldn't need to teach it in the Piscine.
Expand Down
31 changes: 31 additions & 0 deletions common-content/en/module/piscine/pre-piscine-briefing/index.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
+++
title = "Pre-Piscine Briefing"
time = 5
[build]
render = "never"
list = "local"
publishResources = false
+++

Before the Piscine starts, there will be a meeting to brief you on how the Piscine works, and answer any questions.

You will be notified on Slack when this meeting will be.

## For trainees

Before the meeting, think about any questions you have. What are you not sure about?

Make sure you attend the meeting.

## For volunteers

Make sure everyone knows:
* What the schedule of the Piscine is. When are people expected where?
* What people should do before the first session.
* What's expected of trainees in the first session, and in the first week.
* How trainees should be working as a team.
* How trainees will be assessed.
* Which projects, demos, and interview trainees need to pass, and what it means to pass them.
* How much to style your projects, and why.
* When trainees are expected to show up in person or on calls.
* How trainees will hand in their projects.
2 changes: 1 addition & 1 deletion common-content/en/module/piscine/preparation/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,10 +11,10 @@ hide_from_overview="true"
Double-check you have everything you need to start the Piscine.

- [ ] You have applied to the Piscine and received an enrollment email
- [ ] You have joined the CYF Slack where the Piscine is hosted, and filled out your profile
- [ ] You have a suitable laptop and internet access
- [ ] You have organised childcare if you need it
- [ ] You have signed the Code of Conduct
- [ ] You have signed the trainee agreement
- [ ] You know how to get to class
- [ ] You have read and understood the success criteria

Expand Down
8 changes: 7 additions & 1 deletion common-content/en/module/piscine/project-submission/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -19,11 +19,17 @@ For all projects in the Piscine:
* Non-trivial means that the test must test something that could go wrong, and matters to the project. So it a test which shows that calling `getUsers()` returns 5 users would not be non-trivial. But testing that, say, entries are sorted correctly before being presented to the user is non-trivial.
* You are not required to test via the DOM. You may choose to. But you can pass the Piscine without writing a single test involving the DOM.
* We will try running your tests by running `npm i && npm test`. This must run your tests and they must all pass. Make sure you're not relying on globally installed packages - someone on a fresh computer with only `npm` installed and no packages installed must be able to run the above command and have it work.
* You have a copy of the rubric for each project - this is how we will test your project. We **highly recommend** that you run through the test steps yourself just before submitting the project.
* Make sure you include your `package.json` file in the project, or `npm test` won't work.
* Make sure that `npm test` actually runs your tests.
* Your tests must test code actually used in your project. You must not copy+paste the code into the test itself, but must import the code into the test file.
* You have a copy of the rubric for each project - this is how we will test your project. Your project must meet _all_ criteria in order to pass. We **highly recommend** that you run through the test steps yourself just before submitting the project.
* We expect you to include a file named `TESTING.md` in your repository. For each rubric point, you should include an entry in your `TESTING.md` explaining how you tested that rubric item.
* For at least one rubric point, the answer must be "Unit tests in `[some filename]`".
* You will get instructions for when and how to submit your projects on Slack.
* When you submit your project, you must include the git sha of the commit you're submitting. You can get this by going to your project in GitHub, and looking at the latest commit (see screenshot below). If you want to submit a different sha than the latest one, you can open the list of commits, and copy the sha associated with that commit.
* Once you submit your project, any changes you make after will be ignored for assessing the project. Do not submit the project until you are sure it's complete.
* Test your project against the rubric before submitting your project.
* Your code must be correctly indented. This means that each line after a `{` should be consistently indented one more level, and a `}` triggers one level less of indentation.
* You should not collaborate with anyone else in your individual project. If there are signs you didn't write your own code for your individual project, you will fail.

![Finding a git sha in the GitHub UI](git-sha-in-github.png)
3 changes: 3 additions & 0 deletions org-cyf-piscine/content/for-volunteers/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -18,4 +18,7 @@ src = "module/piscine/assessing-demos"
[[blocks]]
name = "Interviewing"
src = "module/piscine/interviewing"
[[blocks]]
name = "Pre-Piscine Briefing"
src = "module/piscine/pre-piscine-briefing"
+++
3 changes: 3 additions & 0 deletions org-cyf-piscine/content/prep/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -30,4 +30,7 @@ src="module/piscine/preparation"
[[blocks]]
name="Project Submission"
src="module/piscine/project-submission"
[[blocks]]
name="Pre-Piscine Briefing"
src="module/piscine/pre-piscine-briefing"
+++
11 changes: 6 additions & 5 deletions org-cyf-piscine/content/sprints/1/day-plan/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,9 +11,6 @@ time=5
name="Energiser"
src="energisers/zip-zap-boing"
[[blocks]]
name = "Briefing"
src = "module/piscine/briefing"
[[blocks]]
name="Practice breaking down a requirement"
src="module/piscine/practice-break-down"
[[blocks]]
Expand All @@ -24,10 +21,14 @@ time=20
name="Morning break"
src="blocks/morning-break"
[[blocks]]
name="Group Project: Spaced Repetition Tracker"
src="https://github.com/CodeYourFuture/The-Piscine/tree/main/Project-Spaced-Repetition-Tracker"
name="Group Project: Shared Bookmarks"
src="https://github.com/CodeYourFuture/The-Piscine/tree/main/Project-Shared-Bookmarks"
time=30
[[blocks]]
name="Development"
src="module/piscine/development"
time="45"
[[blocks]]
name="lunch"
src="blocks/lunch"
[[blocks]]
Expand Down
4 changes: 2 additions & 2 deletions org-cyf-piscine/content/sprints/3/day-plan/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -17,8 +17,8 @@ name="Solo project"
src="module/piscine/solo-project"
time=45
[[blocks.nested.blocks]]
name="Shared Bookmarks"
src="https://github.com/CodeYourFuture/The-Piscine/tree/main/Project-Shared-Bookmarks"
name="Spaced Repetition Tracker"
src="https://github.com/CodeYourFuture/The-Piscine/tree/main/Project-Spaced-Repetition-Tracker"
time=0
[[blocks.nested.blocks]]
name="Music Data"
Expand Down
2 changes: 1 addition & 1 deletion org-cyf-piscine/content/success/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ menu = ["assessment"]
weight = 11
objectives = [[
"Attend every session.",
"Complete one solo and two group projects on time and according to their rubrics.",
"Complete one solo and two group projects on time and according to their rubrics. Only one of the group projects needs to pass, but you must attempt two.",
"Pass at least one demo (which means getting at least 5/6 against the rubric for that demo). You will have up to 4 opportunities to have your demos assessed.",
"Pass a technical interview.",
]]
Expand Down
Loading