Prep for trainees
Check your eligibility and apply for the Piscine
Entry Criteria
Learning Objectives
Welcome to the Piscine.
You must apply to join the Piscine. If you meet the eligibility criteria, you will be invited to join the next run of this module.
You will receive a technical test within two days of your application.
The technical test will require you to write code. It’s like on Codewars. There will be some existing code you have to modify, and you will have up to one hour to do the task. You must pass the technical test. If you fail the technical test, you will be allowed to apply to the next Piscine if you want to.
If you are accepted, you will receive an enrollment email.
If you are not accepted, you will receive an email explaining why. If you remain eligible to apply, you will be able to apply to the next Piscine if you want to.
If you have been accepted, please now continue…
Goals
Learning Objectives
Welcome to the Piscine.
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 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:
- π― Work in a team to build working software with tests.
- π― Write simple code independently.
- π― Explain your work to others in English.
These are the core goals of the Piscine.
Expectations
Learning Objectives
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 logistical blockers.
We expect everyone to:
- Follow the Code of Conduct.
- Help each other.
- Do the prep.
π¬ Right! The Piscine has 3 working weeks and one assessment day, making 22 days in total.
π¬ The SDC is 12 weeks, but the Piscine is shorter
π¬ The Piscine is 3 weeks long, but there are 22 days in total including the assessment day.
Programming Prerequisites
Learning Objectives
Check your understanding.
Before you join the Piscine, you should have a secure understanding of a limited subset of programming concepts at a junior level. The projects, activities, and interviews are designed for people who have a working knowledge of the following foundational concepts:
JavaScript fundamentals
- Variables:
let,const - Primitive data types:
String,Number,Boolean,undefined,null - Data structures:
Array,Object - Navigating Objects:
Object.entries,Object.fromEntries,Object.keys,Object.values - Navigating Arrays:
Array.includes,Array.slice - Operators:
=,==,===,!=,!==,>,<,>=,<=,&&,||,!,%,+,-,*,/ - Control structures:
if,else,else if,return - Functions:
function,=>, scope, callbacks, and extracting a function - Loops:
for,for of - Higher order functions that take callbacks:
Array.map,Array.filter,Array.find,Array.findIndex
JavaScript in the browser
- Asynchronous programming:
Promise,async/await - Web APIs:
fetch,addEventListener,setTimeout,document - Manipulating the DOM with Web APIs: Finding elements, Creating elements, Adding elements to the DOM, Removing elements from the DOM, Changing elements currently in the DOM
JavaScript Testing
- Assertions in Jest:
test,expect,toEqual,not
Git
- Git commands:
status,clone,add,commit,push,pull,merge,branch,checkout
Help
Learning Objectives
π§ Make sure you have everything you need to come to class and do your work. Everyone at CYF has barriers to education, and we can help with some things. If you cannot come to class because you can’t afford:
π§ Childcare
then go to π§ signposts/childcare
π» A computer or broadband
then go to π§ signposts/equipment
π Bus or train tickets
then go to π§ signpost/transport
π₯ͺ Food
will be provided
π¬ No, we work in teams.
π¬ No, your team can help you too.
π¬ Yes, a good developer builds understanding by asking and answering good questions.
π‘Remember
We all help each other at CYF. We are a community.
You are not competing against each other for limited number of places. We will accept everyone who meets the success criteria.
- You should ask for help
- You should help others
Group work
When you’re working on group projects, we expect you to be working together.
You can work on code on your own, but we expect you to be aware of what each other is working on.
At your interview, you may be asked about any code in your project, including code someone else wrote.
We strongly recommend that you collaborate as you go. Read and discuss each other’s code as you’re building. Do not wait until the end of the project (or the week before the interview).
Prep
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 know how to get to class
- You have read and understood the success criteria
If you need help with any of these, ask in Slack or go to the Signposts website.
Now go read over the day plans, backlogs, success criteria and complete the quiz. You can do it! π
π¬ No, it’s a mistake to be late for class.
π¬ Yes, you should be ready to begin at 10am.
π¬ No, you must come to class in person and on time.
π¬ Yes, sign the register as soon as you come in.
π¬ No, you should sign the register first.
π¬ No, you should sign the register first.
Project Submission
Learning Objectives
For all projects in the Piscine:
- The project must be in its own repository. That repository must not contain other projects. Do not fork this
CodeYourFuture/The-Piscinerepo - make a new repository for your project.- There should not be any dead code or unused code in your repository. All code should be used, all tests should run and pass.
- For team projects, all members of the team should work in the same repository.
- There is some supplied scaffolding for all projects. You may copy this from The Piscine repository. You should remove any content that doesn’t apply when you use it (e.g. there shouldn’t be any comments saying “This is an example” or “This is a placeholder”).
- You are expected to write at least one non-trivial test for each project.
- 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 onlynpminstalled and no packages installed must be able to run the above command and have it work. - Make sure you include your
package.jsonfile in the project, ornpm testwon’t work. - Make sure that
npm testactually 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.
- 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
- 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.mdin your repository. For each rubric point, you should include an entry in yourTESTING.mdexplaining how you tested that rubric item.- For at least one rubric point, the answer must be “Unit tests in
[some filename]”.
- For at least one rubric point, the answer must be “Unit tests in
- 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.

Pre-Piscine Briefing
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.