🐟 Piscine

Content for the piscine, basically hackathons

Piscine block viewer

This block viewer lets you flick through all the existing blocks in the Piscine folder so you can choose what parts to add to your pages and what parts you might want to create, revise, or leave out.

It's literally just an alphabetical list of whatever is in this folder.

βš–οΈ Expectations

Learning Objectives

Trainees, we expect you to:

  • 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.
  • 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.

We expect everyone to:

πŸ€” How long is the Piscine?

🎯 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 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.

🚧 Blockers

Learning Objectives

Identify any blockers or dependencies in your project. What must be done first? What can be “decoupled” and done in parallel? The better you can identify these, the more efficient your team will be. Discuss these blockers as a team and decide how to solve them while you are all together and can help each other.

Describe your blocker

Describing the problem systematically will take you most of the way to resolving the blocker. Use the following template on a ticket on your board:

  1. What you did: Describe what you have done so far. Give links and code snippets.
  2. What you expected: Describe what you expected to happen.
  3. What actually happened: Describe what actually happened.

Blockers can feel frustrating, but in reality they are opportunities to explore and solve problems. This is what engineering is all about. 🌱

Assessment

The fourth class day will be interview day. Your interview will take place in a hiring platform, Evidenced. An assessor will ask you questions about your code and your projects. You can be asked about any part of any of your projects, so make sure you understand it all, including the parts your teammates wrote.

The success criteria is listed on the success page. Read it carefully so you know what you need to do to succeed.

Prerequisites:

Your interviewer will expect you to have a secure understanding of:

  • All of the projects you have worked on during the Piscine, including the code other people wrote
  • Professional English at a B2 level
  • A limited subset of JavaScript concepts at a junior level

Review these areas before your interview. Read over the day plan for interview day so you know what to expect.

And remember: the assessor is not there to catch you out. They are there to help you do your best. If you don’t understand a question, ask for clarification. If you don’t know the answer, say so. If you need a moment to think, take it. 🌱

Backlog

Learning Objectives

You will work with your team during the week. You will need to plan your work and track your progress. You will use a kanban planning board to do this.

In the backlog view there are some assigned tasks. Most of your tasks, however, will be created by your team as you work through the project. You will need to define user stories, test cases, and interactions as you go. You will also need to refine tickets as you develop your software. We’ve added some reminders and tips to help you work effectively in the ways you learned during Intro to Programming.

Demo

Learning Objectives

At The Docs we expect you to demo your work to the class. You must have many opportunities to practice how to clearly and simply explain your work to others. This is really important for interviews and career success.

⏰ Timekeeper

The timekeeper will keep the groups on track.

Split randomly into groups of no more than 4 people. Mix up your teams. Each person will have 2 minutes to demo their work to the group. After the demo, the group will ask questions or give feedback for 5 minutes. Then the next person will demo their work.

πŸ§‘πŸΌβ€πŸŽ“ Trainees

1. Demo

You will demo something about your work to the group.

You will have 2 minutes to explain what you did and why. It’s ok to show broken code or code that doesn’t work yet. Just make sure your demo is interesting.

2. Feedback

After the demo, the group will give you feedback for up to 5 minutes. It’s smart to suggest what kind of feedback you want by asking some “generative” questions. For example:

  • I wasn’t sure if it makes sense to try X. What do you think?
  • I liked the way I did X, but I know there are other approaches, what did you do?
  • I found X really confusing, did anyone else have the same problem?

πŸ’‘ Tips:

  • Practice the format of demos before class.
  • Keep it simple. Don’t try to show everything you did. Just show one interesting thing.
  • Keep it short. Two minutes is enough.
  • Explain what you did and why.
  • Show your code.
  • Ask for feedback.

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.

EMBED APPLICATION FORM HERE

You will receive an email within two weeks of your application. If you are accepted, you will receive an enrollment email. If you are not accepted, you will receive an email explaining why.

If you have been accepted, please now continue…

Interviews

Learning Objectives

You will be asked to join a video call for your technical interview. We use an interview platform called Evidenced.

What to expect

  • The interview will be 15 minutes long
  • You will be asked to discuss a feature from a project you have worked on during the Piscine.
  • You may have written this feature yourself, or it may have been written by someone else in your group.

What questions will I be asked?

  • You will be asked to explain the code. You may be asked to:
  1. Play computer and run the code in your head
  2. Explain what the state of the application is at different points in the code
  3. Define the function and meaning of different parts of the code
  4. Refactor the code to meet new requirements given by the interviewer

Your interview will be recorded and scored against a rubric you can read before the interview. You will get the transcript of your interview with the decision about your application.

Once your interview is done, you are done. Join the wrap party and celebrate your hard work! What a journey! πŸŽ‰

Kickoff

Learning Objectives

At The Docs we work in small teams to deliver working software with tests.

πŸ’‘ tip

It’s important that software works and the people can use it

🎯 Goal:

You will be split randomly into groups of 3-4.

Kickoff

  1. Review the project docs.
  2. Setup your project board.
  3. Break down the project into tasks.
  4. Assign tasks to team members.
  5. Agree on a deadline for each task.

πŸ’‘ Tips:

  • Review the project docs before kickoff.
  • Keep it simple. Identify the simplest way you can meet the criteria.
  • Break it down. Split the work into small tasks on a board.
  • Communicate. Make sure everyone knows what they are doing.
  • Set deadlines. Agree on when you will have each task done.

Pair programming

Learning Objectives

  • Switch between driver and navigator roles after
  • The “driver” is the person typing on the keyboard, just thinking about what needs to be written
  • The “navigator” reviews what the driver is doing and is thinking about to write next
  • Don’t dominate - this is teamwork

βŒ› Time’s up! Take a break! Make a cup of tea. Good job, partners!

Pomodoro

Learning Objectives

Each team member, take a small-scoped ticket. Set a timer for . Use this focused time to complete your ticket and open a PR.

βŒ› Time’s up! Take a break! Make a cup of tea. Walk around a bit.

Now set a new and review each PR as a group.

βŒ› Time’s up! Take a break! Make a cup of tea. Stretch! Look at how much progress you made in one hour. ✨

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 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

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! πŸš€

πŸ€” What time does class start?
πŸ€” What is the first thing you should do when you come into class?

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, switch, case, break, continue, 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: describe, it, expect, to, toEqual, toBe, not
  • Error handling: try, catch, throw

Git

  • Git commands: status, clone, add, commit, push, pull, merge, branch, checkout

Review a Pull Request

Learning Objectives

You have opened at least one pull request this week and likely several more. (If you have not, your tickets are too big and you need to scope them down.)

In this session, you will review a pull request from a teammate, and they will review yours. You should be doing this during the week anyway, but this session is a chance to talk in person, ask clarifying questions, and make changes together.

Solo Development

Learning Objectives

This time is set aside for you to make progress on your solo project. But remember, you are not alone! You have your mentors and peers to help you. Here are some strategies to help you work effectively:

πŸ‘€ User stories

As a [who], I can [what] so that [why]

Spend some time working on your initial user stories 🧢 🧢 user stories A user story is a short sentence stating some goal a user can expect to achieve when using the product we are building. . Write them as tickets on your planning board.

  1. Identify described requirements: What are the requirements of your project? What are the features you need to build? Describe them in user story format.
  2. Create a strategy: How will you implement these user stories? What are the steps you need to take to complete them? Update your tickets with this information.
  3. Express as test cases: How will you know when you have completed the user story? What tests can you write to verify that the user story is complete? Write these tests.

Use this opportunity to compare your user stories with others and ask for feedback in real time. 🌟 Everyone will approach the project differently, and you can get feedback to test your ideas.

πŸ… Pomodoro

Each person take a small-scoped ticket. Set a timer for . Use this focused time to complete your ticket and open a PR.

βŒ› Time’s up! Take a break! Make a cup of tea. Walk around a bit.

Now set a new and review each PR as a group.

βŒ› Time’s up! Take a break! Make a cup of tea. Stretch! Look at how much progress you made in one hour. ✨

🚧 Blockers

Identify any blockers or dependencies in your project. What must be done first? What can be “decoupled” and done in any order? What parts will you need to research or ask for help from others? What parts are you confident about? Mark these on your board.

Describe your blocker

Describing the problem systematically will take you most of the way to resolving the blocker. Use the following template on a ticket on your board:

  1. What you did: Describe what you have done so far. Give links and code snippets.
  2. What you expected: Describe what you expected to happen.
  3. What actually happened: Describe what actually happened.

Blockers can feel frustrating, but in reality they are opportunities to explore and solve problems. This is what engineering is all about. 🌱

Team Development

Learning Objectives

This time is set aside for you to work together as a team to make progress on your project.

Remember: At your interview, you may be asked about any code in your project, not just the code you wrote. You need to understand and be able to explain the code your team mates wrote. Make sure you read their code, review it, and talk to them about it.

Wrap

You are done for the day. Take a moment to reflect on what you have learned and achieved.

Stand in a circle and share:

  • πŸ“› your name
  • πŸ’ͺ🏽 one thing you built today
  • πŸ‘·πŸΎ the task you are going to work on next
  • πŸ›Ÿ one thing you need help with

Give yourselves a round of applause. Now you have earned your rest. Usually people go for a drink (or a coffee) after class. You are welcome to join and wind down together.

Wrap Party

You made it! πŸŽ‰

Thank you so much for your hard work. We will send you the results of your interview by email by the end of the week.

Now, join the wrap party and celebrate your achievements with your community. 🎈

Can you bring a snack or drink to share? πŸͺπŸ₯€ Or a board game? We love Dixit, Codenames, and Rush Hour in particular.

🧭 Help

Learning Objectives

Make sure you have everything you need to come to class and do your work

🧭 Make sure you have everything you need to come to class and do your work. Everyone at The Docs 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

πŸ€” Who will help you with your blockers?

πŸ’‘ Remember

We all help each other at The Docs. 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

πŸ«±πŸ½β€πŸ«²πŸΎ Induction

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. If you haven’t done the prep, 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?

⏰ The Timekeeper will:

  • 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

Today you will kick off your first team project. At the end of the day, each person will give a two minute demo of something they have built, learned, or discovered today. Then we will wrap and go for a cup of tea together.

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.