# Welcome to CodeYourFuture Docs

We are in the process of archiving Code Your Future Docs. All information is being moved to either the CYF Website or Slack Canvases.

If you cannot find some information, please let us know in Slack.


# Archived Pages

CYF has living documentation, so things move around and change a lot. In an effort to manage link rot, we archive older pages that are no longer in use in this section, and replace the old content with a link to the current stuff. It's not perfect!


# Tech Education Volunteering


# Roles


# Lead Trainer

The Lead Trainer handles the class pace and the involvement of our other volunteers. It is an important and impactful role where you can have a huge impact on our trainee’s education

We use the flipped classroom method: you and other volunteers won't be teachers, but facilitators. Read more about how our curriculum works on this [page](https://sdc.codeyourfuture.io/how-our-curriculum-works/).

People will look to you as a figure of authority and leadership. You will help create and incentivise the community to be responsible for their own learning and the group.

**Requires technical experience?** Yes, minimum 1 year of professional experience in the technology that will be taught

**Duration:** minimum 4 weeks

**Commitment per week:** 10 hours (this includes the Saturday class)


# Technical Assistant

The assistant role is to guide trainees in small groups or individually through the lesson.

You will be a mentor, so rather than giving answers, you are expected to ask questions.

You motivate trainees and encourage them to ask good questions. You support trainees that have done their prep work, as expected. And if others haven't, you incentivise them to do that first.

You will be working more closely with our trainees than anyone else in the organisation and so you are a crucial part of the relationship.&#x20;

**Requires technical experience?** Yes, must know the technology that will be taught

**Duration:** minimum 4 weeks

**Commitment per week:** 8 hours (this includes the Saturday class)


# Tech Buddy

## Overview

The Buddy’s role is the role of the guide.

This role is an ongoing commitment you make to three trainees for around three/four months.&#x20;

You are the first point of contact for technical mentorship. For many trainees you will be the first developer they will ever work closely with. Meaningful technical mentorship is the heart of this role. You will build a close, supportive team with your trainees and model code review, accountability, time management and professional behaviour.&#x20;

You will also attend a regular meeting with your Buddy volunteer team. This meeting is a place to communicate feedback on individual progress, get additional support and resources for your trainees, and share skills and insights with other Buddies.&#x20;

{% tabs %}
{% tab title="Check in " %}
Buddy groups meet every two weeks. (Some Buddies run standups more often.)

In these sessions, you will identify blockers and talk/live code through them.  You will do a code review and give coursework feedback. You will reassure them and empathise with the immense challenge they are facing. It is really really hard!&#x20;

You will also facilitate access to resources, including mentoring support, online study resources and access to study groups or peer learning. Developing your trainees to lead their own study groups is a great way to empower them in their own learning.
{% endtab %}

{% tab title="Coursework" %}
We know that submitting coursework is a strong predictor of success, both in the course and in getting a job. As team lead, you should hold your trainees accountable and work with them on blockers, technical and emotional. But you can't do it for them.&#x20;

Support your trainees with coursework, engage deeply with their code in code review, and kindly, firmly, expect them to meet their commitments. Don't spend your time chasing them to do the work. All our trainees are adults and you are developing them to be successful professionals. Accountability and time management is part of what some people may be learning here.
{% endtab %}

{% tab title="Feedback to Team" %}
You know your trainees best, and it's vital you share that with the rest of the team.

We can and do provide extra support, but only if we know people need it. Secondly, if one of our students has an issue then we resolve it with them; if many have the same problem, then we have a systemic bug we need to fix.

Your volunteer team has a wealth of experience with trainee issues and can support you in addressing them.
{% endtab %}
{% endtabs %}


# CYF Products/Launch Module Volunteering

Here you will find out more about the roles we have for CYF Products and Launch Module.

You can learn more about [CYF Products](/archive/archived-pages/cyf-products) and [Launch Module](https://cyf-curriculum.netlify.app/the-launch/) on their respective pages (link on names).


# Roles


# Product Owner

Voluntary Role

CodeYourFuture (CYF) is looking for a **Product Owner** responsible for working with one of their CYF Tech Product teams to deliver the roadmap.&#x20;

The Product Teams are responsible for building features that support the day-to-day processes of CYF. These could be new hypothesis-driven, supporting everyday activities or with an educational focus.

The **commitment** for this role is **7 hours weekly** for at least three months, including **weekly meetings.**&#x20;

\
**Who are you?**

* Looking to **volunteer** in a Product team
* **Experience in Product delivery** of at least **one year** in a role such as **Business Analysis, Scrum Master, Product Owner**, etc.)&#x20;
* Good stakeholder management and communication skills

#### **Your responsibilities:**

* [ ] Communicate the vision, direction and clear priority to the Agile development team.&#x20;
* [ ] Define epics, user stories and prototypes with the support of the product team and stakeholders.
* [ ] Prioritise the backlog
* [ ] Ensure the team always has adequate tasks ready in the backlog for each sprint.
* [ ] Create support and training documents for internal and external users.
* [ ] Performing quality assurance controls on products, if no QA is available
* [ ] Monitor and report on users’ reactions after launching.
* [ ] In case there is no Scrum Master on the team, you would be responsible for managing the day-to-day of the team (description [here](https://docs.google.com/document/d/1lUI99YjerYyNZDvNUmQQKSSd5-i3Ura2a9oQ8b0L3rM/edit?usp=sharing))


# Product Manager (Launch Module)

Voluntary Role

CodeYourFuture (CYF) is looking for a **Product Manager** responsible for working with one of the [Launch Module ](https://cyf-curriculum.netlify.app/the-launch/)teams to deliver their briefing.&#x20;

The [Launch Module](https://cyf-curriculum.netlify.app/the-launch/) is the last project of our 9-month-long trainees' [Software Developer Course](https://cyf-curriculum.netlify.app/) and the first one in launching their careers as Software Developers. This team must deliver a briefing within 4 weeks.

The time **commitment is 2-4 hours per week plus Saturday all day**. It is a 5-week long commitment.&#x20;

\
**Who are you?**

* Looking to **volunteer** in a Product team
* **Experience in Product delivery** of at least **one year** in a role such as **Business Analysis, Scrum Master, Product Owner**, **Product Manager,** etc.)&#x20;
* Good stakeholder management and communication skills

#### **Your responsibilities:**

* [ ] Work with the team and the stakeholders on the vision, direction and clear priorities
* [ ] Define epics, user stories and prototypes with the support of the Scrum team and stakeholders.
* [ ] Prioritise the backlog with the team members
* [ ] Ensure the team always has adequate tasks ready in the backlog for each sprint.
* [ ] Performing quality assurance controls on products, if needed
* [ ] Incentivising the team to be self-organised and accountable
* [ ] Working with the team members on any conflicts
* [ ] Write the [assessment](https://docs.google.com/document/d/1sgNNJNsgWprh7VMCbiRgXY1BrqjzqxdWKKxSvTZwcjk/edit?usp=sharing) of every trainee in your team. This must be done with the other volunteers in your team.


# Scrum Master

Voluntary Role

This role is only part of the **Product Teams** responsible for building features that support the day-to-day processes of CYF.

The expected **commitment** is 5 hours per week for at least three months. This is so you and Code Your Future get the most out of the experience.&#x20;

**Who are you?**

* Looking to **volunteer** in a Product team
* Experience as **Scrum Master** of at least one year in the role) or someone with experience in the tech world who wants to **transition into this role**
* Efficient communication skills and great problem-solving to ensure delivery is done effectively

#### **Your responsibilities:**

* [ ] Work closely with the Product Owner to maintain the team's backlog according to the priority
* [ ] Ensure the team understands the project’s goal and user story requirements.&#x20;
* [ ] Raise if the development team requires further clarification on scope and user stories.&#x20;
* [ ] Coaching the development team in self-organisation&#x20;
* [ ] Plan and communicate releases that should happen at least once every two weeks.
* [ ] Checking in with the progress of the team at least once every two days, if possible, daily
* [ ] Helping to remove obstacles to the team’s progress&#x20;
* [ ] Organising and facilitating Agile processes and Scrum events as needed&#x20;
  * [ ] Sprint Planning (acceptance of stories, estimation, sprint goal, communication)&#x20;
  * [ ] Daily Scrum (i.e. Slack update)&#x20;
  * [ ] Backlog Refinement (support the Product Owner and represent them, if possible)&#x20;
  * [ ] Sprint Demo (organise and support team to be ready)&#x20;
  * [ ] Sprint Retrospective (run sessions every two weeks, ensure actions are reviewed and assigned to team members)


# Tech Lead

Voluntary Role

The Tech Lead will be part of an Agile Scrum Team supporting the developers on the daily dev work to deliver value to the users and organisation.

Your commitment is 7 hours per week for at least three months, including being present in the weekly meetings.

**Who are you?**

* Looking to volunteer in a Product team
* **Developers with at least two years of experience in a mid-level that want to take the next step in their career** or **experienced Tech Leads**&#x20;
* Excellent problem-solving skills to break down the delivery and architecture/design of software ing down&#x20;

#### **Your responsibilities:**

* [ ] Being part of the Product Team motivating team members and creating a space where they can ask questions and voice their concerns.&#x20;
* [ ] Being transparent with the team about challenges, failures, and successes&#x20;
* [ ] Actively participating in the Agile/Scrum ceremonies.&#x20;
* [ ] Supporting the team to understand the requirements and approving the technical implementation solutions the teams come up with&#x20;
* [ ] Oversee and define the architecture of the application.
* [ ] Identifying risks that could jeopardise delivery&#x20;
* [ ] Ensuring the team is developing using software development best practices&#x20;
  * [ ] Front End Experience: React, Javascript, HTML, CSS&#x20;
  * [ ] Back End: Express, NodeJS
  * [ ] Database: SQL OR MongoDB&#x20;
  * [ ] RESTful Services & API&#x20;
  * [ ] CircleCI, Git, AWS&#x20;
* [ ] Doing quality code reviews that ensure the developers have appropriate feedback&#x20;
* [ ] Incentivising team to pair programme&#x20;
* [ ] Work with other Tech Leads and Product Managers to enhance processes.&#x20;
* [ ] Giving the developers honest and constructive feedback


# Tech Lead (Launch Module)

Voluntary Role

The Tech Lead will be part of an Agile Scrum Team supporting the developers on the daily dev work to deliver value to the users and organisation.

Your commitment will be 2-4 hours per week plus Saturday all day. It is a 5-week long commitment.&#x20;

This is the [link to the Launch Module](https://cyf-curriculum.netlify.app/the-launch/) prep and sprints, so you can get familiar with what will be expected.

**Who are you?**

* **Developers with at least two years of experience in a mid-level that want to take the next step in their career** or **experienced Tech Leads**&#x20;
* Excellent problem-solving skills to break down the delivery and architecture/design of software ing down&#x20;

#### **Your responsibilities:**

* [ ] **Being part of the Product Team motivating team members and creating a space where they can ask questions and voice their concerns.**&#x20;
  * [ ] the team own their solutions, and it should be them writing all the code but you are there to support them with suggested approaches when they get stuck.
* [ ] **Being transparent with the team about challenges, failures, and successes**
  * [ ] Giving the developers honest and constructive feedback: if you wouldn't hire them, tell them why so they can work on it.
  * [ ] Make sure everyone contributes: the team has to contribute evenly, which will be measured.
* [ ] **Supporting the team to understand the requirements and approving the technical implementation solutions the teams come up with**&#x20;
  * [ ] Help with breaking tasks down into tickets.
  * [ ] Take teams through the agile workflow: Assigning themselves to tickets, creating PRs, getting reviews, merging and deploying code.
* [ ] **Oversee and define the architecture of the application**
  * [ ] Help the team avoid getting stuck when building the solutions. They are juniors, and your experience will help them clarify how things should fit together, especially when integrating 3rd party APIs or setting up authentication.
  * [ ] We have a [Starter Kit](https://github.com/CodeYourFuture/cyf-final-project-starter-kit) we expect the teams to use to help with this. Work with them on this.
  * [ ] Identifying risks that could jeopardise delivery&#x20;
* [ ] **Support the team as a lead**
  * [ ] You should not be writing or committing code, but you can pair or mob with the students on tasks where they've got stuck to help unblock them.
  * [ ] Incentivising team to pair programme
  * [ ] Help teams with merge conflicts
  * [ ] Encourage teams to help each other as much as possible
  * [ ] Actively participating in the Agile/Scrum ceremonies.&#x20;
* [ ] **Ensuring the team is developing using software development best practices**&#x20;
  * [ ] Front End Experience: React, Javascript, HTML, CSS&#x20;
  * [ ] Back End: Express, NodeJS
  * [ ] Database: SQL OR MongoDB&#x20;
  * [ ] RESTful Services & API&#x20;
  * [ ] CircleCI, Git, AWS&#x20;
* [ ] **Write the** [**assessment**](https://docs.google.com/document/d/1sgNNJNsgWprh7VMCbiRgXY1BrqjzqxdWKKxSvTZwcjk/edit?usp=sharing) **of every trainee in your team.** This must be done with the other volunteers in your team.


# Developer

Voluntary Role

Developers that will be part of an Agile Scrum Team working on front-end and back-end development to deliver value to the users and organisation.

This role is part of a **Product Team** responsible for building features that support the day-to-day processes of CYF.

**Commitment for Junior Developers**: you will need 10h per week of coding + meetings for 3 months and 5-10h to learn about the new technologies/ways of working in the first month.

**Commitment for experienced developers:** 10h per week of coding + meetings for at least 3 months.&#x20;

This way you and Code Your Future get the most out of the experience.&#x20;

#### **Your Role**

We are looking for **Junior or experienced Developers** who will be part of a Scrum Team, working on features, bugs and tech debt issues that will deliver the roadmap. The teamwork has a collaborative, committed and fun approach.

#### **You will:**

* [ ] Being part of the Product Team and using these key skills daily: team player mindset, self-accountability, pro-actively communicating, working with an agile mindset and being open to asking questions&#x20;
* [ ] Actively participating in the Agile/Scrum ceremonies&#x20;
* [ ] Understanding requirements and mapping them to technical implementation solutions&#x20;
* [ ] Developing front and back-end functionalities using software development best practices&#x20;
  * [ ] Front End Experience: React, Javascript, HTML, CSS&#x20;
  * [ ] Back End: Express, NodeJS&#x20;
  * [ ] Database: SQL OR MongoDB&#x20;
  * [ ] RESTful Services & API&#x20;
  * [ ] CircleCI, Git, AWS&#x20;
* [ ] Building the code and respective automated testing for the feature
* [ ] Owning the story you worked on until the release, supporting the testers and even testing it yourself&#x20;
* [ ] Supporting the team with pair programming whenever possible
* [ ] Doing thorough code reviews to speed up delivery


# Code Reviewer

Voluntary Role

Our product teams need developers to deliver the new functionalities or fixes. But we know that demands a lot of commitment in a week. So if you want to support a specific development team, but can only commit around 3 hours a week, this role is for you.&#x20;

This role is part of a **Product Team** responsible for building features that support the day-to-day processes of CYF.

The expected **commitment** is 3 hours per week. This does not include meetings, which are optional for you. You will receive review requests per Slack messages on the channels, via GitHub reviewers prompt or directly from the Product Owner.&#x20;

#### **Your Role**

We are looking for **Junior or experienced Code Reviewers** who will be part of a Scrum Team, working on features, bugs and tech debt issues that will deliver the roadmap. The teamwork has a collaborative, committed and fun approach.

#### **You will:**

* [ ] Being part of the Product Team and using these key skills daily: team player mindset, self-accountability, pro-actively communicating, working with an agile mindset and being open to asking questions&#x20;
* [ ] Ensuring you use our [CYF Guide for Code Review](https://cyf-curriculum.netlify.app/guides/reviewing/)
* [ ] Reviewing  front and back-end functionalities in:
  * [ ] Front End Experience: React, Javascript, HTML, CSS&#x20;
  * [ ] Back End: Express, NodeJS&#x20;
  * [ ] Database: SQL OR MongoDB&#x20;
  * [ ] RESTful Services & API&#x20;
  * [ ] CircleCI, Git, AWS&#x20;
* [ ] Ensuring the code, automated tests and documentation is actively matching the acceptance criteria&#x20;
* [ ] Raising any issues promptly, asking questions and giving honest and good feedback


# QA

Voluntary Role

Quality Assurance roles will be part of an Agile Scrum Team working on ensuring the product features are delivered with quality to the users and organisation.

This role is part of a **Product Team** responsible for building features that support the day-to-day processes of CYF.

The ideal **commitment** is of 7 hours per week for at least 3 months, which includes the weekly meetings. This is so you and Code Your Future get the most out of the experience.&#x20;

#### **Your Role**

We are looking for **Junior or experienced QAs** who will be part of a Scrum Team, doing the manual or automated test of features, bugs and tech debt issues that will deliver the roadmap. The teamwork has a collaborative, committed and fun approach.

#### **You will:**

* [ ] Being part of the Product Team and using these key skills daily: team player mindset, self-accountability, pro-actively communicating, working with an agile mindset and being open to asking questions&#x20;
* [ ] Actively participating in the Agile/Scrum ceremonies&#x20;
* [ ] Ensure functional requirements are clear from the beginning
* [ ] Identify non-functional requirements
* [ ] Write test cases
* [ ] Raise necessary bugs
* [ ] Work closely with the developers to test and ensure the story has quality until the release
* [ ] Coaching the team on quality&#x20;
* [ ] Creating documentation around quality&#x20;
* [ ] Creating or improving existing QA processes selecting the right tools to accomplish your mission to improve quality
* [ ] Building the automated feature testing is a differential


# UI/UX Designer

Voluntary Role

UI/UX Designer will be part of an Agile Scrum Team working on ensuring the product features are following the UI/UX best practices and aligned with the organisation branding.

This role could be part of the **Final Projects** team or part of a **Product Team** responsible for building features that support the day to day processes of CYF.

The expected **commitment** **for Final Projects** is 5 hours per week for 5 weeks long. If possible, also join Saturday's meeting, especially in the beginning.&#x20;

For Product Team the ideal commitment is 5 hours per week for at least 3 months. This includes weekly meetings. This is so you and Code Your Future get the most out of the experience.&#x20;

#### **Your Role**

We are looking for **junior or experienced UI/UX Designers** who will be part of a Scrum Team, creating the necessary artefacts to support the developers and testers when building and testing the features, bugs and tech debt issues. The teamwork has a collaborative, committed and fun approach.

#### **You will:**

* [ ] Being part of the Product Team and using these key skills daily: team player mindset, self-accountability, pro-actively communicating, work with an agile mindset and open to asking questions&#x20;
* [ ] Actively participating in the Agile/Scrum ceremonies&#x20;
* [ ] Developing simple UI for the applications
* [ ] Providing support on answering UX issues
* [ ] Advising on how to better design an application to our teams
* [ ] Work closely with the developers to ensure the best implementation is done


# Business Owner (Lauch Module)

Voluntary Role

Business Owner is the main contact for Launch Module teams to get the guidance, answer questions and support with prioritisation of the tasks.

It is a role that needs to be able to attend a weekly/bi-weekly meeting with our teams but we should consider daily availability since questions could come up at any time and could block the delivery.

The Business Owner is not involved in daily meetings or catch-ups but supports and guides the team whenever they are stuck or want approval.

#### **Your Role**

The Business Owner must be knowledgeable about the product being built and understand the user's needs and the organisation's strategy. This role must have the authority to make decisions and support the team daily, so must be someone with knowledge about the product's context, users and strategy.

#### **You will:**

* [ ] Be available via e-mails, chats or phone to answer questions within a 0.5-1 working day.
* [ ] Responsible for unblocking the team with making necessary decisions
* [ ] Be able to attend a weekly/bi-weekly meeting with our teams.
* [ ] Be in a position to advise the prioritisation of features in the project.
  * [ ] e.g. Should we prioritise Feature A or Feature B?
  * [ ] e.g. We should remove Feature B because it's no longer needed.
* [ ] Have realistic expectations of what our trainees can build in the time given to them
* [ ] It would be very helpful if you could join our internal instant messaging tool (Slack) to speak to our trainees more regularly.


# DevOps Engineer

Voluntary Role

This is the description of the Jr DevOps Engineer role to support the CYF Tech Products.

You will be expected to do around 10h a week of volunteering.

#### **Your Role**

The DevOps Engineer must learn through hands-on experience with technologies, tools, and workflows while also providing production support and reliable delivery of applications.

#### **You will:**

* [ ] Assist with CI/CD pipeline implementation, automation, and management for application deployments.
* [ ] Participate in infrastructure provisioning and configuration using tools like Terraform and Ansible.
* [ ] Monitor application and system health using metrics, logs, and alerts. Assist with troubleshooting issues.
* [ ] Contribute to configuration management by enforcing standards, documentation, and security hardening.
* [ ] Gain hands-on experience with cloud platforms like AWS, Azure, or GCP through deployments and migrations.
* [ ] Provide support for code testing, releases, integrations, and deployments.
* [ ] Assist developers and senior DevOps engineers with Docker builds, Kubernetes orchestration, and microservices.
* [ ] Document processes and procedures to ensure we have information shard with all


# CYF Products

### Who are we?

CYF Products is in charge of building software, also known as products, that can be used by us or by charities.&#x20;

### Vision

We want to use what our Community knows to build and support products that can make jobs easier at CodeYourFuture and beyond.

### Aims

* Let graduates and trainees who have finished our course work in a product team. This gives them real job experience, which helps when they look for work.
* A chance for our best students to learn how to work in a busy team
* Make our work at CYF easier and quicker so that we can help even more people with the great things our community does
* Have volunteers who can get better at their skills and support our graduates' learning journey
* Delivering value to the users: giving something useful to the people who use our products

### How can you join us?

Read about the [roles](https://docs.codeyourfuture.io/volunteers/teams-1/cyf-products-final-projects/roles) available on each team

If you want to join us, go to this channel [#join-cyf-tech-products](https://codeyourfuture.slack.com/archives/C05AAMJSAKC)&#x20;


# Our Products

This is a high-level description of our in-house built products. If you are interested in Launch Module you can read more about how it works on [this link](https://launch.codeyourfuture.io/).

This is a description of the product teams we have at CYF right now\
If you want to know more about the Launch Module go to these pages: [format](https://launch.codeyourfuture.io/) or [roles](https://docs.codeyourfuture.io/volunteers/teams-1/cyf-products-final-projects/roles).

**Active Products**

#### Dashboard Ecosystem (includes [Introduction to Digital](https://application-process.codeyourfuture.io/), [Volunteer Form](https://forms.codeyourfuture.io/), [Dashboard](https://dashboard.codeyourfuture.io/) and the API)

* *Built by graduates in 2019*
* **Purpose**: this system manages participants and volunteers who want to join CYF. It includes features such as sign-up portals, data management and programme management.
* **Tech Stack**: MERN (MongoDB, Express, React, Node)

[**Class Planner**](https://classplanner.codeyourfuture.io/)

* *Built by graduates in 2021*
* **Purpose:** manage the commitment of volunteers for the weekly classes so the region can see if they have enough volunteers for each session.
* **Tech Stack**: MERN (MongoDB, Express, React, Node)

#### [Rainbird](https://rainbird.codeyourfuture.io/)

* *Built by graduates with the support of our Tech Education Director in 2021*
* **Purpose:** automate the suitability and eligibility questionnaire to identify which participants of our programme can become trainees.
* **Tech Stack**: PERN (PostgreSQL, Express, React, and Node) connected to Rainbird API

  the&#x20;

[**Good PR**](https://goodpr.codeyourfuture.io/)

* *Built by graduates in 2023*
* **Purpose:** Identify that every trainee does the same amount of work on their Launch project and highlight any issues the volunteers should look into
* **Tech Stack**: PERN (PostgreSQL, Express, React, and Node) connected to Rainbird API

  the&#x20;

**DevOps**

* **Purpose:** manage the CYF Platform working closely with all other Product teams to ensure the infrastructure is working well.
* **Tech Stack**: AWS, Kubernetes

#### Discontinued products

#### Mentor For Slack

* *Built by volunteers in 2022 - used until 2023*
* **Purpose:** A system that automatically keeps track of how trainees are doing and how much the volunteers are helping. This makes sure no one falls behind.
* **Tech Stack**: Slack bot created with PERN (PostgreSQL, Express, React, and Node) and Hasura API

#### CYF Next

* *Stopped build in 2023*
* **Purpose: l**ooking at how we keep all our information, and making sure we can use it safely within CYF.
* **Tech Stack**: PERN (PostgreSQL, Express, React, and Node)&#x20;


# Basic Online Skills Course

If you want to know more about this programme, go to our [Basic Online Skills website. ](https://codeyourfuture.io/dds/)


# WhatsApp Community Guidelines

Welcome to our WhatsApp community for our Basic Online Skills trainees. We are very excited to have you join our group!

At CodeYourFuture, we have a [Code of Conduct](https://codeyourfuture.io/about/code-of-conduct/) and our [Values and Working Principles](https://codeyourfuture.io/about/). You must follow both if you are part of our community.

Also, we have guidelines for WhatsApp, which are below. Please follow these so we can work well together.

**Communicating in the groups on WhatsApp**

* Use the main group chat when you need help or want to discuss something. That allows more people to assist and learn together.

**Please avoid the following behaviours:**

* Do not send the same message again and again across groups or to many people's inboxes. Only send helpful information.
* Share only legal content. **Do not spread illegal material.**
* Take part with sincerity. Do not try to fool or upset others.
* Do not share inappropriate or adult content. Keep our community friendly for everyone.
* Avoid offensive language and graphic content. Be respectful in all messages.
* If you see worrying behaviour or content, inform CodeYourFuture. The number to use is 07469 488132.

By being part of our WhatsApp community, you agree to follow these guidelines. This will help create a supportive place where we can all learn new skills. Violating these rules may result in removal from the groups. We want to maintain a respectful environment for all members to collaborate and grow.

Let's learn great things together!

<br>


# Intro to Digital (ITD)

ITD is used as part of the application process for the Software Development course.

## <https://introtocoding.codeyourfuture.io/>

Successful completion of ITD will give you access to Rainbird, our automated decision maker.&#x20;

Everyone who meets the published criteria will be waitlisted for a place on our one month Fundamentals Course.


# Re-application Requirements for Application rejection

Applicants who did not meet the application critieria can re-apply if they wish in the future.&#x20;

In order to be considered again, they must:

1. Complete the entire application process from the start
   * They must show significant improvement from the first time they applied for the course
2. Show significant evidence that they will be able to complete the full course this year
3. (If required) show significant improvement in their reading, written and spoken English (or main language of country) skills

####


# After Graduation

This content has been moved to graduate module

### Post-Graduate Module

{% embed url="<https://module-graduates.codeyourfuture.io/>" %}


# Running the course


# Overview

There are many CYF volunteering opportunities, and you can learn more about our teams on our website [https://codeyourfuture.io/volunteers](https://codeyourfuture.io/volunteers/).

You can join as a volunteer by filling out a [volunteer form on our website](https://codeyourfuture.io/volunteers/). *You must be over 18 years old to volunteer.*


# Teams


# Getting a Job

This content has been moved to graduate module

## This content has been moved to&#x20;

{% embed url="<https://module-graduates.codeyourfuture.io/exercise-types/cv-and-job-prep>" %}


# Useful Links

{% embed url="<https://syllabus.codeyourfuture.io/guides/useful-links>" %}


# Hackathons

Throughout the course, our students may have the opportunity to work on [Hackathons](https://en.wikipedia.org/wiki/Hackathon) organised by CodeYourFuture or partner organisations.

## Goals

The goals of the Hackathon are as follows in priority order

1. The trainees have the chance to put their learning into practice in a low risk environment
2. The trainees get experience working in a team
3. The trainees get to meet experienced developers (if pairing with external developers)
4. The teams produce some useful that will be used

## Steps Required Running a Hackathon

More details about these steps can be found below

1. Sign off from Programme Managers & Education Team to run a Hackathon
2. All Stakeholders must decide when the Hackathon will run
3. Dicuss with Education Team about the technologies that the participants will be encouraged to use
4. Decide on the Challenges that will be set
5. Find and onboard Volunteers
6. Select and onboard Trainees

## Prerequisite

Before a Hackathon can happen sign-off must be given from

* Local Programme Manager(s)
* Local Education Team

In addition to this, the depending on when during the course takes place the Education Team must be consonsulted on

* When the Hackathon runs
  * To make sure it doesn't clash with any other events
* What technologies the particpants will be using
  * To make sure that the hackathon compliments trainees learning rather than being in conflict

## Trainee Constraints

If a Hackathon is taking place during the duration of a class (i.e. before Graduation) then there are some constraints on the trainees

1. Coursework Comes First
   * Above all else, the trainees must prioritise their coursework before doing any work on the hackathon.
   * For some trainees this can be up to twenty hours of work a week
2. Only Fully Up To Date Trainees
   * The trainee must have no outstanding coursework
3. Only Part Time Paid Working or Less
   * Some of our trainees work in paid jobs. We ask that they don't partake in any hackathons if they are already working more than twenty hours a week of paid work.

If the Hackathon happens outside of a scheduled course you should also be thoughtful of

* Time constraints because of work
  * Many of our trainees will be working part or full time
* Family constraints
  * Many of our students look after children or relatives

## Hackathon Volunteers

As a volunteer on a Hackathon you have several aims over the project

1. Teach our students about how a hackathon works
   * Our trainees  will never have take part in a hackathon
2. Guide our trainees on working on quick turnover projects
   * This could mean guiding them towards an MVP over a larger project
3. Create a valuable product for us
   * With your outside perspective we'd love to see some of your solutions to the problems we face
4. Have fun!
   * Most of all, we want to make sure you have a great time working with our trainees. They're eager to learn and always excited to meet developers like you.

## Challenges

Our Hackthons will either be based around a project idea or a general theme.

For example we may have a business problem such as

> We need a website that allows us to track attendance through the course. It must be able to register students who attend on time, late and who do not attend. It must be able to accessed only be verified volunteers.

In the above example we have a specific tool in mind that we know we need built in order to do what we do better.

Alternatively, we might have a problem that we need a creative solution for. For example

> Our trainee often have trouble managing their time and submitted homework before each lesson.

For more general problems like this we're looking to your creativity to help us solve the problems in ways we haven't thought of yet.

## Previous Hackathon

Here are some example hackathon that we've run with partners in the past

* [Capgemini Hackathon - West Midlands - November 2020](https://docs.google.com/document/d/1ZSA10i9ub6Mm_OpQKl3Esl6vP_A_crq7PiCwqzeTx6s/edit#)


# Asking Questions

{% embed url="<https://syllabus.codeyourfuture.io/guides/asking-questions>" %}


# Hosting on Netlify

{% embed url="<https://syllabus.codeyourfuture.io/guides/deployment/>" %}


# Applicant Interviews

## WE no longer run these interviews and use Fundamentals instead

Before every new course, we make sure to interview our potential learners as a final step before acceptance into the Fundamentals course.

## Aims

* Get to the know the applicants
  * This is the first time we've ever met them! We have to be sure we can work with them for the next eight months
* Assess that the applicants have retained the knowledge they have learnt during the application process
  * We need to confirm that the applicants actually did the work themselves
* Assess the applicants have a good level of English speaking and reading
  * Applicants might have gotten help from friends and family for written work

## Getting Setup

Make sure you have all of the following information before you have your first interview

1. You have access to [the Dashboard](https://dashboard.codeyourfuture.io) (or alternative way of getting information about your applicants)
   * If you do not have access, speak to your coordinator
2. Read this document fully
3. Make sure you have access to the interview form&#x20;
4. Make sure you have read the [Interview Technical](https://docs.codeyourfuture.io/course-processes/before-the-course/student-interviews/interview-technical), [Interview English](https://docs.codeyourfuture.io/course-processes/before-the-course/student-interviews/interview-english) and  [Interview Rubric](/archive/archived-pages/student-interviews/interview-rubric)

## Roles

### Greeters (for face to face interviews)

Make sure you have at least two volunteers welcoming the Applicants to the interviews. Record their attendance, give them a tour of the premises and get them a coffee or a tea. These interviews can be very intimidating for some of our applicants so you should take time to make sure that people feel welcome and safe.

See below for explaining how the interviews will work.&#x20;

### Greeters (for online interviews)

Make sure you have someone in a  Zoom break out room (which will be the waiting room) welcoming the Applicants to the interviews. These interviews can be very intimidating for some of our applicants so you should take time to make sure that people feel welcome and safe. Take time to explain that the interviews are  so we can get to know them better. Emphasise that they've made it this far, and we think they have great potential.<br>

#### Set Up

Have them test their camera and microphone to ensure everything is working. Support them to get all their relevant webpages ready on their computer. Ensure everyone knows how to share their screen on Zoom.&#x20;

#### Interview Process

Explain how the interview will work. The interview has 4 parts.  \
We will first check their name and identity. \
So they will need to show the interviewer their photo ID and confirm the spelling of their name. \
Then they will have to talk about what they learned and their motivation for the course. They will need to share their webpage and talk about their code. \
They will do a short English task. \
And finally they will wrap up and have an opportunity to ask any questions. \ <br>

### Interviewers

In this context a technical interviewer is somehow who is comfortable asking questions about code and programming skill. Personal (or non-technical) interviewers should access trainee soft skills and motivations to do the course. It is encouraged for interviewers to justify their decisions to each other.

Interviewers will typically have thirty minutes to conduct each interview.

Both technical and non-technical volunteers should:

* Aim to be as objective and fair as possible
* Be mindful of their biases
* If in doubt, record more information than you think is necessary
* Take notes on the applicant when they the other interviewer is talking

#### Personal Interviewers

Personal Interviewers should focus on questions surrounding

* Why the applicant wants to be a programmer
* How the applicant will find time to do the course
* Any support that the applicant may need during the course

This will mostly be the first section of the form.

#### Technical Interviewers

Technical interviewers should focus on questions surrounding

* The applicant's work that they have submitted
* Assessing the applicant current understanding of programming (none is required but it's good to know)

This will mostly be the second section of the form.

You can find a guide for this section of the interview [here](/archive/archived-pages/student-interviews/interview-technical)

## Who are our applicants?

Our applicants come from a wide variety of backgrounds. You can see lots of background information on our students [here](/archive/archived-pages/understand-students)

## Interview Days

Interview days generally run the whole day and require a large number of both technical and non-technical volunteers.

As applicants arrive they should be taken to a quiet space with one technical volunteer (someone who understands code) and one non-technical volunteer.

Together they should complete this form:

[Trainee Interview Form](https://docs.google.com/forms/d/1msNvvPWXt1MggioGjVsZaewTksxr0UOqgPXGfwxe4-E/edit)

**The Programme Manager should duplicate this form for each Class. Please contact your Programme Manager for access to this Google form.**

We ask that you arrive at least ten minutes before the interview that you will be attending to prepare.

### Technical Assessment

You can find a guide for the technical section of the interview [here](/archive/archived-pages/student-interviews/interview-technical)

### English Assessment

You can find an English Assessment test [here](https://codepen.io/enz0/full/eYzOeVg).

The guide for the assessment can be found [here](/archive/archived-pages/student-interviews/interview-english)

### Feeding Back on Applicants

When completing the form you should endeavour to write as much as you can for each candidate as this will be our primary resource for deciding who will get a place on the course.

It is important to be firm but fair in grading applicants. Do not give a applicant 10/10 for everything just because you like them.

We will be cross-referencing scores against feedback recorded so it is important to always give a full description of how applicants responded to questions in the interview.

You should make sure you use the [Interview Rubric](/archive/archived-pages/student-interviews/interview-rubric) to applicants responses.

### Upper Bounds & Lower Bounds

When selecting applicants it is important to keep in mind that a applicant can be of too high ability as well as too low.

A applicant with too low ability may

* not understand English to a sufficient level
* not be able to explain their code well enough
* not show a particularly great drive to be a programmer

A applicant with too high ability may

* already know how to program to an advanced level
* have studied programming for a prolonged period of time
* be capable of getting a programming job already

It's important to spot both lower and upper bound applicants as our course may not be the right fit for them at this time.

For lower bound applicants, a referral to a less intense programming course or further English lessons may be a better solution. Our course can be very challenging for people and if we're not sure that they're ready then we should endeavour to be upfront and supportive wherever possible.

For upper bound applicants, it may be preferable to give them the skills they need to be able to get a job and have them start applying. This could take the form of personal development lessons or some sessions working on our tech projects. We're in the business of finding jobs for the people and if the most efficient way to do that is by **not** joining our course then that is the best outcome.

## Ideal Trainee

When selecting applicants your primary aim should be to answer this statement.

```
I believe that the applicant shows the potential and drive to complete the course and get the job as a developer.
```

You can read our outline of what an ideal graduate of our course might look like [here](https://docs.codeyourfuture.io/volunteers/course-eligibility#our-ideal-trainee)

Previous programming experience is not required to join the course however it is a good determinant of a person showing passion for coding.

A strong candidate for our course should

* show that they are passionate about programming
* show potential or current experience of being a self-learner
* show a good to very good grasp of the English language
* show they are open to feedback
* show they understand the scale of the challenge
* show that they are ready to undertake such a large challenge
* show that they are focussing on our course
* be somebody who would fit into our community

## Frequently Asked Questions

Most of the students you are interviewing are part of the `Intro To Coding Slack Channel` - most students can ask questions there.

You can find the most common questions answered [here](https://github.com/CodeYourFuture/DocsV2/tree/c265f38db4043052aa0d06e2868151793028f82b/students/faqs/README.md). You can send the trainee a link to this page as well.

### Any specific technical questions

You can let them know that this will be covered in the course and that now might not be the best time to ask.

### All other questions

For any other questions they can direct them to their region email address

* <london@codeyourfuture.io>
* <west-midlands@codeyourfuture.io>
* <north-west@codeyourfuture.io>
* <scotland@codeyourfuture.io>
* <rome@codeyourfuture.io>
* <capetown@codeyourfuture.io>
* etc

You're also welcome to share this documentation website with them.


# Interview - Technical

## The Aim

The aim of the technical interview is to find out the following:

1. Understanding: The interviewee understands the HTML and CSS basics they've presumably learned and used to a sufficient level to allow them to manipulate their page further or to recreate it from scratch (if they were asked to).
2. Approach: The interviewee has picked up a process for searching for and incorporating new information
3. Knowledge: The interviewee can reason through some small problems
4. Reponses: The interviewee can express technical questions or explanations fairly clearly in English

These questions reduce the possibility of interviewees reciting prepared answers without genuine understanding.

## Questions

### Can you give me specifics?

Trainees are asked to build a product landing page and a tribute page as part of their application. The details of these tasks are here:

<https://www.freecodecamp.org/learn/responsive-web-design/responsive-web-design-projects/build-a-tribute-page>

<https://www.freecodecamp.org/learn/responsive-web-design/responsive-web-design-projects/build-a-product-landing-page>

* Find the applicant on the dashboard
* Fork submitted work in Codepen
* Quickly look over their work beforehand (5-10 mins)

### What sort of questions should I ask?

Ask short questions which would require at least one of the following:

* change of element types
* change of element attributes
* duplication and alteration of elements
* css alterations
* re-ordering of elements
* removal of elements
* for them to google something related and relatively easy which they don't know (e.g. a css rule or html attribute) such that they could potentially find the answer and make use of it in a (say) 1-minute window.

### Guidance on creating and asking questions

Try not to get bogged down in minutia - we're looking for a good overall understanding not recalling specific APIs

It's fine to ask questions that the trainee might not know the answer to or which might be considered advanced. Just be positive and make it clear that they're not expected to know the answer!

**Do not ask&#x20;*****all*****&#x20;these sample questions!** Please just choose two or three.

### A few sample questions for the product landing page task

How would you change your code if...

* We want NO video when viewing with a small-screen mobile device (e.g. smartphone)
* We want clickable links from your landing page to your tribute page and vice versa, maybe at the foot of the page
* The company has a partner that wants their logo added to the header, too!
  * <https://placekitten.com/200/100>
* We want the navbar to always be shown at the **bottom** of the viewport, instead of the top?
* *\[Ask this AFTER "playing ignorant", below]*. What if I wanted to collect email address AND full name?
  * (Note copy paste isn't quite enough here - they'd have to disable validation of the name field as an email address)
* We want to add a sound file to the page (or a playable video game, if they already know)
  * Here we're intentionally asking for something they've hopefully no clue how to do.
  * DON'T have them waste time taking this all the way, even if they can.
  * You just want to at least see that they can search and start to select from search results intelligently

### Playing Ignorant

Make a "mistake" understanding the email address form field, and see if they can help you.

* You: "This form field of the form rejects when i try to submit my name ("Neill"). What's going on?"
  * **Hint (if necessary) so they don't treat you as infallible:** You: "Am I doing something wrong? I might have the wrong idea here..." ... "I might be *intentionally* making a mistake here, what mistake am i making?"
* What we're looking for:
  * Candidate understands our mistake - it should be enough for them to read the presented error message
  * Can articulate to us why we're seeing an error and what we might do to remedy it
  * Can explain how this validation has been enabled in their html code.
* Follow up: You: "Ah! So how do you get it to validate an email field?"

### Break and fix

Fork their site and break it (e.g. cause elements to become unstyled by changing element ids or classes). Point out the errors from the user perspective (not from a code view), and ask them to fix your code.

Make sure you're agreed on what the client expects: "We want this footer text to be neon pink, and ten feet tall, right?"

How do they go about debugging it?

Here are some likely hints (if they struggle for a while):

* *\[First check you have the same expectation]*: "We expect this text at the bottom of the page to be bright pink, right?"
* "How would you do that in the first place? Forget that I *broke* it - do it from scratch as you would for any text." \[avoid them obsessing on what got broken, or how. guide back to first principles.]
* "How does it know that this rule in css is meant for *this* text?" \[Looking for the aha of a wrong class or id]

## Rubric

You may have asked more than one question, or you may have only had time for one. For each question you asked, consider the following areas. Now, overall, place the candidate on the scale provided.

### Understanding the question (forget about the answer for now)

* Clearly understood the question
* Maybe understood the question
* Probably didn't understand the questions
* I had no chance to assess this

### Approach

* Showed an excellent approach to the question
* Showed partial signs of a good approach to the questions
* Showed a poor approach (e.g. helplessness)
* I had no chance to assess this

### Knowledge

* Knew the answer
* Was clearly familiar with the domain and got to the answer after light hint(s)
* Didn't know the answer
* I had no chance to assess this

### Taking feedback

* Took feedback well (acknowledged and/or incorporated or rejected with reasoning)
* Took feedback with prompting
* Took feedback poorly (denial / no acknowledgement)
* I had no chance to assess this

### Other notes

* Any other notes on the technical interview or candidate's performance? Please contribute your insights, and any important context to your grade, in the text box.


# Interview - English

## What's the aim?

The aim is to check the candidate's ability to read a simple *written* task statement in English and to follow it step by step. Is their comprehension of written English ok? Can they focus? What attention to detail have they?

## Instructions for the interviewer

Set the candidate at ease:

* This tasks is to help us get a sense of their ability to read in English, follow instructions and think through a problem.&#x20;
* It is a really short task - it's not timed
* This task doesn't require ANY coding at all!
* Spelling mistakes do NOT matter in this task.&#x20;

### If the candidate CAN share their screen and type

* Share with them the instructions for the task
  * <https://codepen.io/enz0/full/eYzOeVg>
  * Ask them screenshare so you can watch&#x20;
* Ask them to read and follow the instructions, step by step.
* Remind them there is no hurry - it is not a timed task.
* Ask them to "think out loud" where possible, but make it clear you will be silent.
* Do not clarify the text for them unless it's obviously our fault.

### If the candidate cannot share their screen or type

* As interviewer, share your screen and check the candidate can see it
* Go to this page&#x20;
  \*
  * <https://codepen.io/enz0/full/eYzOeVg>
* Move your cursor to underneath the instructions on the left hand side
* Check if the candidate can see the instructions
* Prompt the candidate to read the instructions from your screenshare
* Prompt the candidate to tell you exactly what to type in the editor on the right.
  * (This may include spelling words, typing characters, moving the cursor, searching in google, scrolling, pausing to let something be read.)
  * Try not to infer too much.

## Taking Notes

* Did the candidate understand the written instructions?
* Did the candidate ask you to clarify the instructions?&#x20;
* Did the candidate think out loud while they were doing the task?&#x20;
* How was the candidate's attention to detail?


# Interview - Rubric

In this rubric you will find a marking guide to the questions found in the interview form.

Each of the questions will be banded into the following sections

* 0 - applicant could not give any kind of adequate answer
* 1-3 - applicant gave a poor answer
* 3-6 - applicant gave a good answer
* 7-10 - applicant gave an excellent answer

## The applicant is motivated to learn

### Poor Answer (1-3)

* The applicant did not seem excited or motivated to learn

### Good Answer (3-6)

* The applicant gave examples of what they have learnt in the past
* The applicant said they were excited to learn

### Excellent Answer (7-10)

* The applicant gave examples of what they have learnt in the past in relation to programming
* The applicant talked enthusiastically about programming

## The applicant has potential to become a self-learner

### Poor Answer (1-3)

* The applicant was actively discouraged by the idea of self-study
* The applicant could not answer how they would make time to self-study
* The applicant did not seem interested in making time to self-study

### Good Answer (3-6)

* The applicant said they could make time to self-study
* The applicant understood that self-study is important for this course

### Excellent Answer (7-10)

* The applicant gave a specific example of self-learning
* The applicant gave plans or examples of finding time to self-study

## The applicant shows signs of patience and focus

### Poor Answer (1-3)

* The applicant was impatient and tried to rush through the interview

### Good Answer (3-6)

* The applicant was patient and focussed throughout the interview

### Excellent Answer (7-10)

* The applicant gave succinct, on topic answers to questions
* The applicant spent time thinking about answers to technical questions being starting to answer

## The applicant listens attentively to questions

### Poor Answer (1-3)

* The applicant was obviously not listening to questions asked
* The applicant often gave answers unrelated to the question

### Good Answer (3-6)

* The applicant listened attentively and gave good answers

### Excellent Answer (7-10)

* The applicant answered questions correctly and accurately with little prompting
* The applicant asked clarifying questions before answering

## The applicant is open to feedback

### Poor Answer (1-3)

* The applicant reacted as if the feedback was personal,
* The applicant did not seem keen to use the feedback constructively.

### Good Answer (3-6)

* The applicant accepted the feedback in a positive way
* The applicant grateful the feedback they are given

### Excellent Answer (7-10)

* The applicant was able to interpret feedback that interviewers give
* The applicant seemed keen to implement the feedback

## The applicant is ready to challenge themselves

### Poor Answer (1-3)

* The applicant seemed unprepared to challenge themselves
* The applicant did not understand how much work will be needed

### Good Answer (3-6)

* The applicant was excited to start the course
* The applicant had research coding previously

### Excellent Answer (7-10)

* The applicant had started practicing coding already
* The applicant showed they understood the scale of the challenge
* The applicant showed specific example of being prepared to start

## The applicant is resourceful and finds solutions to problems

### Poor Answer (1-3)

* If the applicant ran into problems, they instantly gave up
* The applicant could not give an example of overcoming a challenge

### Good Answer (3-6)

* The applicant gave an example of overcoming a challenge
* The applicant worked out how to get help or find answers

### Excellent Answer (7-10)

* The applicant explained a time they have overcome a specific challenge in a work/learning environment

## The applicant is interested in learning how things work

### Poor Answer (1-3)

* The applicant was obviously uninterested in how things work

### Good Answer (3-6)

* The applicant was interested when they were told new information about how something worked

### Excellent Answer (7-10)

* The applicant showed a specific interest in the particulars of the challenges they've completed
* The applicant asked questions when they did not understand

## The applicant is determined to start a career as a developer

### Poor Answer (1-3)

* The applicant did not mention wanting to have a career as a developer
* The applicant seemed to be unsure about starting a career as a developer
* The applicant did not do what a developer did

### Good Answer (3-6)

* The trainee seemed excited about becoming a developer

### Excellent Answer (7-10)

* The applicant gave specific reasons for wanting to be a developer
* The applicant showed some understanding of what a developer does
* The applicant learnt about programming before apply for the course

## The applicant has enough time available during the week

### Poor Answer (1-3)

* The applicant spoke about many other prior commitments that they have during the week and could not explain how they would manage their time
* The applicant did not give any explanation of how they would fit in their time

### Good Answer (3-6)

* The applicant gave an adequate answer to how they will find the time to work
* The applicant seemed to have a good amount of free time

### Excellent Answer (7-10)

* The applicant gave a detailed answer to how they would structure their time
* The applicant showed they understand what 20 hours a week actually means.
* The applicant showed that they are giving the course a priority.

## The applicant will be a good fit for CodeYourFuture

### Poor Answer (1-3)

* The applicant was actively aggressive or impolite
* The applicant was actively not interested in community or making connections

### Good Answer (3-6)

* The applicant was pleasant to speak to
* The applicant come with a good attitude

### Excellent Answer (7-10)

* The applicant talked about community or learning together as being important to them
* The applicant was personable and nice to talk to
* The applicant they are excited for the opportunity

## The applicant has a good English level

### Poor Answer (1-3)

* It was often hard to understand the applicant
* It was often hard to judge what a applicant meant
* The applicant struggled to create full sentences
* The applicant could not properly answer questions because of their language skills

### Good Answer (3-6)

* It was mostly easy to understand the applicant
* It was mostly easy to judge what a applicant meant

### Excellent Answer (7-10)

* It was easy to understand what the applicant was trying to say
* It was easy to judge what an applicant meant


# Selection Day

WE NO LONGER USE THIS PROCESS AND USE THE OBJECTIVE CRITERIA AGREED WITH TRAINEES AT THE BEGINNING OF FUNDAMENTALS INSTEAD

The selection day normally happens within one to two weeks after interviews and is when we collate all of the data that we have on our applicants and decide - as a group - who will be brought forward onto the full course.

The selection process should take between 1-3 hours depending on the amount of applicants you are evaluating.

## Aims

* To select the best possible applicants to be on our course
* To find applicants who may be too advanced for the course and for who we should find alternative arrangements
* To ensure the class balance meets CodeYourFuture’s [inclusivity aims](https://docs.google.com/spreadsheets/d/1rZ02vQ3Jirsd2hFVgTN0F6xKJF6yCdDH4nHJMwLjx2Y/edit#gid=0)

## Selection Categories

When you’re evaluating the applicant you should be keeping in mind that they may fall into one of three categories.

1. **Rejected**
   * This applicant is not currently ready to start our course. See reasons below.
2. **Accepted**
   * This applicant is ready to start the course and should be accepted
3. **Accepted but Advanced**
   * This applicant is ready to start the course but has a very significant amount of knowledge beyond a beginner.

### Why might an Applicant be rejected?

An applicant might be rejected because of a variety of reasons. For example:

* Personal Interviews
  * The applicant’s English (reading, spoken or written) were graded poorly
  * The applicant did not seem to understand what it meant to be a programmer
  * The applicant could not sufficiently explain when they would find time to work
  * and many more…
* Technical Interviews
  * The applicant could not sufficiently explain the code that they had written in the application process
  * The applicant obviously did not work on the technical challenge by themselves
  * and many more...
* Motivation Letter
  * The English used in the letter is poor
  * The applicant does not sufficiently explain why they want to join the course
  * and many more…

Often an applicant will be rejected for a selection of reasons spanning across their interview, technical work and motivation letter.

### What is “Accepted but Advanced”?

A small but significant portion (historically 15-20%) of the people who apply and reach the selection stage have had a significant amount of experience with programming already.

It is important that while we should not reject these people - they still come from disadvantaged backgrounds and should not be penalised for knowing too much - however advanced applicants can be very disruptive in class for applicants without experience and it may not be the best use of their time.

An “Accepted but Advanced” applicant could look like

* An asylum seeker who completed a Computer Science education in their country of origin but has no professional experience
* An amateur enthusiast who has spent years learning how to code in their own time because they have been unable to afford a bootcamp.
* A professional software engineer, refugee who has recently been given Right To Remain and is now looking for a job.

For applicants who fit into this category alternative avenues to employment might be

* Applying for work through CodeYourFuture’s network
  * If they have worked professionally before or are very advanced
* Working on Tech Projects to gain experience
  * These are internal tools that we use at CodeYourFuture that look good on a CV
  * Applicants will also receive employment coaching during this time

Whilst they’re working towards employment they should also be invited to

* Support as Teaching Assistants
  * In this capacity they are given the ability to help applicants whilst also consolidating their knowledge

It is essential that all “Accepted but Advanced” applicants are considered on a case by case basis. By their very nature, they are edge cases and must be treated as such.

It’s important that the Applicant is involved in any discussions around their involvement in the course.

## Selection Process

### Before the Meeting

Make a copy of this template to organise all of the information we have on the applicants

[\[TEMPLATE\] CodeYourFuture Applicant Selection](https://docs.google.com/spreadsheets/d/1SLzDiz2y3VH3ilWb4PB7_sZAQqo-uaMHT7I-_690aPM/edit?usp=sharing)

### During the Meeting

The aim of this event is to decide which category each of the applicants should fit into.

Everyone should split into small teams and begin to work through sets of applicants methodically. Initially, you will be looking for the obvious outliers in the applicant pool - the people who are obviously not ready for the course and the people who obviously are. It is important that you take notes on the spreadsheet to justify your decisions.

After this, you will have a selection of people who will be more towards the line, you may also have difficult decisions to make if you have a limited size of class.

#### Resolving Conflicts

For every applicant where decisions are split

* One person should stand in defence of the applicant
* One person should stand in opposition to the applicant

Each representative will then have one minute to debate on behalf of the applicant using knowledge that they have from the information available.

After they have debated, all attended must cast a vote either for or against the applicant. If a consensus cannot be reached leave the applicant for the time being and return at the end of session.

### After the Meeting

Be sure to communicate the results of the Selection Day to applicants as soon as possible

## Ranking Applicants

Applicants should be ranked on a scale of 1-10 where

![drawing](/files/-MLT7fiFwqTrNzYlqjx9)

You can **only** rank applicants in whole numbers (i.e. 5.5 is **not** allowed)

Below you can find a grading rubric for each of the ranks.

You will find that applicants will often fall between rankings - try to find the most appropriate place for the applicant and record your thoughts in the notes.

### Previous Technical Experience

The aim of the technical assessment is to work out if the trainee should go into the “Accepted But Advanced” group.

This is a non-exhaustive list of qualities that each group might have.

**Advanced**

* The applicant already knows another programming language
* The applicant has used Node/React/MongoDB in a personal project
* The applicant has professional programming experience
* The applicant studied and graduated from a Computer Science/Software Engineering Degree at University level

**Beginner**

* The applicant has some self-taught programming experience from online learning
* The applicant studied some level of programming education at secondary school or college

**None**

* The applicant has no or very limited prior programming experience before starting the application process

### **Assessment Areas**

1. **English Level**

Using the *Interview Notes*, Interview *English Test Results* and *Motivation Letter* decide which category the applicant would fit into

**Very Poor**

* It was often hard to understand the applicant when speaking
* It was often hard to judge what an applicant meant when speaking
* The applicant struggled to create full spoken sentences
* The applicant could not properly answer questions because they didn’t understand what was asked
* The applicant could not construct full written sentences
* The applicant could not successfully complete the English Test in the interview

**Poor**

* It was sometimes hard to understand the applicant when speaking
* It was sometimes hard to judge what a applicant meant when speaking
* The applicant struggled to create full spoken sentences
* The applicant could not sometimes properly answer questions because they didn’t understand what was asked
* The applicant could not successfully completed the English Test in the interview

**Average**

* It was fairly easy to understand the applicant when speaking
* It was fairly easy to judge what a applicant meant when speaking
* The applicant could successfully complete the English Test in the interview with some errors
* The applicant could write in full simple sentences

**Good**

* It was easy to understand the applicant when speaking
* It was easy to judge what the applicant meant when speaking
* The applicant could properly answer questions because they understood what was asked
* The applicant could successfully complete the English Test in the interview
* The applicant could write full and complex sentences

**Very Good**

* The applicant could communicate clearly and succinctly when speaking
* The applicant could always write in complex, complete sentences
* The applicant could successfully complete the English Test in the interview

### **Motivation & Careers**

Using the applicants *Interview Notes* and *Motivation Letter* decide which category the applicant would fit into

**Very Poor**

* The applicant did not say why they wanted to be a developer (e.g. creating software, solving problems etc)

**Poor**

* The applicant only listed generic reasons for wanting a job (e.g support family, have money)
* **Average**
* The applicant showed some understanding of what a developer does
* The applicant showed excitement at the idea of becoming a programmer

**Good**

* The applicant showed some evidence of wanting to be a developer in particular
* The applicant gave specific reasons for wanting to be a developer
* The applicant had researched coding previously

**Very Good**

* The applicant showed concrete evidence of wanting to be a developer in particular
* The applicant showed concrete understanding of what a developer does
* The applicant had started practicing coding already
* **Technical Skill & Self Teaching**

Using the *Technical Interview Notes* and *Technical Work from the Application Process* decide which category the applicant would fit into

**Very Poor**

* The applicant performed poorly in the technical part of the interview (Score 1+)
* The applicant did not mention self-teaching or how they would achieve it

**Poor**

* The applicant performed poorly in the technical part of the interview (Score 3+)
* The applicant did not give examples of self-teaching but referenced it

**Average**

* The applicant performed averagely in the technical part of the interview (Score 5+)
* The applicant only gave examples of self-teaching from the application process (i.e. FreeCodeCamp)

**Good**

* The applicant performed well in the technical part of the interview (Score 7+)
* The applicant showed they understood the scale of the challenge
* The applicant has given specific examples of having self-taught a non-programming subject

**Very Good**

* The applicant performed very well in the technical part of the interview (Score 9+)
* The applicants went beyond the requirements in their submitted website
* The applicant has given specific examples of having self-taught programming
* The applicant gave specific examples of overcoming and solving a programming issue
* **Personality & Community**

Using the *Interview Notes \_and \_Motivation Letter* decide which category the applicant would fit into

**Very Poor**

* The applicant actively disliked the idea in working with others or being part of a community
* The applicant was impatient or rude during the interview
* The interviewer gave the applicant a score of 1+ for the question “The applicant will be a good fit for CodeYourFuture”

**Poor**

* The interviewer gave the applicant a score of 3+ for the question “The applicant will be a good fit for CodeYourFuture”

**Average**

* The interviewer gave the applicant a score of 5+ for the question “The applicant will be a good fit for CodeYourFuture”
* The applicant was interested in the idea of giving back after learning

**Good**

* The applicant understood and explained why working in a group is good for learning
* The interviewer gave the applicant a score of 7+ for the question “The applicant will be a good fit for CodeYourFuture”

**Very Good**

* The applicant was actively interested in joining a community of learners
* The applicant gave concrete examples of having given back in the past (e.g. volunteering, community work)
* The interviewer gave the applicant a score of 9+ for the question “The applicant will be a good fit for CodeYourFuture”

## Rank Levels

### 1 - Very Strong Rejection

You should give an applicant this ranking if:

* The applicant scored a Very Poor in more than one of the categories

### 2 - Strong Rejection

You should give an applicant this ranking if:

* The applicant scored Very Poor in one of the categories
* The applicant scored Poor in one or more of the categories

### 3 - Rejection

You should give an applicant this ranking if:

* The applicant scored Poor in most of the categories

### 4 - Weak Rejection

You should give an applicant this ranking if:

* The applicant scored Poor in one or more of the categories
* The applicant scored Average in the rest of the categories

### 5 - Borderline Rejection

You should give an applicant this ranking if:

* The applicant scored Poor in one or more of the categories
* The applicant scored Average in the rest of the categories

### 6 - Borderline Acceptance

You should give an applicant this ranking if:

* The applicant scored Good in one or more of the categories
* The applicant scored Average in the rest of the categories

### 7 - Weak Acceptance

You should give an applicant this ranking if:

* The applicant scored Average in one or more of the categories
* The applicant scored Good in the rest of the categories

### 8 - Acceptance

You should give an applicant this ranking if:

* The applicant scored Very Good or Good for one or more of the categories
* The applicant score Good or Average for the rest of the categories

### 9 - Strong Acceptance

You should give an applicant this ranking if:

* The applicant scored Very Good for one or more of the categories
* The applicant scored Good for the rest of the categories

### 10 - Very Strong Acceptance

You should give an applicant this ranking if:

* The applicant scored Very Good in most of the categories
* The applicant scored Good in some of the categories


# Google Classroom for Trainees

## Joining Google Classroom

When the Classroom is set up, the mentors will make the classroom's code available to everyone. You may be asked to provide your email address so you can be invited to join the class. When you sign in to your Google account and head to [Google Classroom](https://classroom.google.com), you should be able to see the class you've been invited to and you can simply click 'accept' to join. If you cannot see your class, please click the plus button and, when asked to do so, enter the class code. This will let the mentors with access to Classroom know you're trying to join and you will be given access.

## How Google Classroom works

There are three main tabs in the Classroom: **Stream**, **Classwork** and **People**. Below, we'll look at what each tab does.

### Stream

![stream view of google classroom](/files/-MLm7wgepKO4kRrb4twi)

Stream works a little bit like a social media feed. Here, you'll be able to see announcements and assignments from the mentors. Announcements may be important information about classes or homework. You can add comments to these posts by using 'add a comment' underneath the specific post. Assignments are homework. You will usually have a deadline by which you must submit your homework. Any homework you have will be visible in the classwork tab.

### Classwork

![an example of an assignment](/files/-MLm7wgfh-uel7bf-ysW)

To see what a piece of homework is, you can click 'view assignment' or the title of the homework. You will then see instructions on what the task is and what you need to submit to complete the homework. This can be anything from leaving a link to your GitHub to a short piece of writing. If you are ever confused by the instructions, please let your mentors know and they can explain the task again or even update the instructions to make them clearer for everyone.

Once you're ready to submit your homework, use the 'turn in' button. You will notice you can add files under the section 'your work' which is where you will also find the 'turn in' button. Be sure to attach any necessary links or files before clicking 'turn in'.

If you would like to edit a piece of homework, click 'unsubmit', make any edits, then click 'turn in' again. Please note, however, that if you try to make edits after the deadline and resubmit, your homework will be marked as 'late' in Google Classroom, even if you originally submitted on time.

### People

![an example of an assignment](/files/-MLm7wggzSjQN_iewhJU)

(Trainee and teacher names have been changed to protect privacy.)

The people tab will simply show you a list of trainers (these will be mentors on the course) and a list of your classmates.

## Tips on using Google Classroom

* When writing comments, be sure to use the shift key and enter to move to a new line. Pressing enter alone will send your comment.
* Comments can be public (the whole class can see) or private (only the mentor(s) can see). When making comments on the Stream tab, your comments will be made visible to everyone. If you're in an assignment, you will also see the option to make a private comment. In this case, only the mentor(s) will be able to see your comment. This can be helpful if you have a question about some feedback you received, for example.


# Google Classroom


# Google Classroom For Volunteers

## Joining Google Classroom

In most cases, one of the mentors, or perhaps the course co-ordinator, will have access to the Classroom. They may even be the person who set it up. For you to have access, they will need to invite you via email. Once you receive the email, simply follow the invite's instructions.

If you are the person in charge of the Classroom and need to invite mentors as trainers, you can do this by going to the **People** tab, clicking the plus under **Trainers**, then entering their email. Notice that you can also add trainees on this tab with their email. In our experience, it is easier and more effective to add mentors/trainers by email and share the *class code* with trainees  to get them to join. This can also avoid people ending up in the wrong roles on the Classroom. If you click the cog at the top of the page to open **Settings**, you will see the class code listed.

## How Google Classroom works

There are three main tabs in the Classroom: **Stream**, **Classwork** and **People**. As discussed above, the People tab handles invites to the Classroom as well as adding/removing members of the Classroom.

### Stream

The Stream tab is basically a list of recent activity. It will show you posts from trainees and trainers, upcoming deadlines for assignments, and you can also post here if you need to share something with the Classroom.

### Classwork

The Classwork tab is where you will handle assignments. You can add, edit and delete assignments, assign them to your trainees, and view who in the class has submitted their work. To add a new assignment, use the plus button and select the kind of assignment you would like to post. Note that you can save this as a draft before releasing it for public view to students. It is advisable to do this to make sure all details in the assignment are correct. To do this, select 'Save draft' instead of 'Schedule', then use 'Schedule' once your assignment is ready to go live. **It's important that you assign the assignment to all** trainees **in the class.**

It should be noted that due to Slack being the main tool used for communication in CodeYourFuture, we do not currently use Google Classroom to leave comments on assignments and we discourage trainees  doing this too. Often both trainers and trainees  are unaware comments have been left unless they are using the mobile version of Classroom with notifications turned on. You will have more success contacting students through Slack as usual.

Where necessary, you can mark a piece of work while in the assignment view under Classwork. Click the piece of work you want to look at to see what trainees have submitted. Most of the time, assignments are listed as 'ungraded' and we are simply looking for trainees  to have submitted their assignment with some kind of evidence. This may be something like submission of a document, a link to a URL or a screencap.

## Tips on using Google Classroom

* Get used to how Google Classroom works before you start using it with trainees. They may run into issues or have questions. You will be better prepared if you have taken the time to familiarize yourself with how it works.
* If many trainees are asking for clarification of an assignment's instructions, you may need to go back and edit them. Be mindful of keeping instructions clear and concise.
* In addition to the above point, avoid adding important links or resources as attachments, and try to include these in the main assignment instructions where they are clearly visible for trainees. This can avoid confusion or some trainees  missing important parts of the assignment.
* It is worth checking assignments in Google Classroom against the syllabus before posting them. Sometimes there are updates or changes. Stick to the current syllabus for assignments.
* It is beneficial to do a fun exercise to get trainees used to using this tool. Previous practice assignments have included things like posting a link to your favourite song


# Re-admission to Course

Sometimes you need to leave Code Your Future because things are going on in your life. This is entirely understandable and is often a good decision.&#x20;

### **Leave of Absence**

If you just need a short break, you can take a leave of absence. \
\
When taking leave, you must book a return to study call with your Programme Manager. You must do this before you take leave or you will be marked as withdrawn. \
\
The maximum leave that can be accommodated is three weeks. \ <br>

### **Course Withdrawal**

If you need to drop out of this cohort, you can withdraw.&#x20;

Complete&#x20;

## Reasons for Retaking the Course

There are several reasons why a trainee may want to drop out of the course and request to re-join on a subsequent course.

* Illness
* Injury
* Time constraints involving work
* Childcare time constraints
* Falling behind in the course content
* Bereavement
* Pregnancy/Maternity ([see Pregnancy policy here](https://docs.codeyourfuture.io/organisation/agreements-and-rules/student-agreement/student-pregnancy-policy))

In the case of students' English skill not being sufficient, the trainee must complete language training courses before they are able to return to their course. They will be referred by their City Coordinator to a partner organisation.

## Admission Requirements for Leave of Absence

In order to gain re-entry to the course students must:

1. Complete the coursework set by the Education and PD teams
2. Show significant evidence that their circumstances have changed and they will be able to complete the full course this year

\*Re-admission will not be considered under any circumstance for students that were removed from their course because of Code of Conduct violations.

### Resuming Studies

When taking leave, you must book a return to study call with your Programme Manager. You must do this before you take leave or you will be marked as withdrawn.

## Admission Requirements for Course Withdrawal

To rejoin CYF, you simply apply again. Please mention you are a returning trainee.&#x20;

1. Sign up and complete the current application process
2. Mention you are a returning trainee
3. If you withdrew to work on your English, you must demonstrate B2 or C1 level

If you have been banned for violating our Code of Conduct, you can't re-apply. Everyone else is welcome.

###


# Laptop Request

To request a laptop loan, please fill in the [form](https://airtable.com/appZdIjH0ZG3eXk1V/pagedMs6nRNHLSSoT/form).<br>

This is a loan only; you should return the laptop when you get a job in tech after completing the course. If you leave the course, you need to return the laptop to CYF.<br>

Once you have completed the form, a regional staff member for your region will be in touch with the next steps.


# Requesting a Laptop or Support

Please reach out to expenses\@codeyourfuture before incurring any costs to yourself.

## Requesting a Laptop

Please fill in the form below if you need a laptop to complete your coursework in our currently running courses.&#x20;

This means you do not have access to £300 to purchase a laptop yourself. If CodeYourFuture gives you a laptop, you agree to take care of it and return it within 14 days of the end of your course.&#x20;

If you break or lose any part of the laptop, you must contact us at <contact@codeyourfuture.io> so we can arrange a replacement if we have stock available.

[Laptop Loan Request Form](https://airtable.com/appZdIjH0ZG3eXk1V/pagedMs6nRNHLSSoT/form)

## Requesting Other Hardware

We can also support you with reimbursement for other hardware for accessibility needs.

* Webcams
* Headphones and Microphones
* Keyboard
* Mouse

Please email <expenses@codeyourfuture.io> to discuss any of your accessibility needs before purchasing.

## Requesting Internet

If your internet is slow and you cannot access online calls or learning content, we can pay for 4G/5G internet for you.

We normally supply you with 30GB or Unlimited amounts of data.&#x20;

We can also pay for you to upgrade your phone data contract.

## Requesting Childcare Support

We can offer childcare reimbursement for your children during class and study groups.

Please read the [trainee expenses policy](https://docs.google.com/document/d/1Wn6WjSjNU8G-rp4H0NuoC9AzLp4YbuSe3b0dvNEfxP4/edit) for more info on childcare.

## Requesting Travel Costs

If you are required to travel to class and cannot afford it, we can pay for your travel expenses.&#x20;

Normally, we ask you to pay your provider and then reimburse you for the costs. Otherwise, we can provide you with a travel card for the city where CodeYourFuture operates.


# Graduation Module

The Graduate module is run by the employability team with the goal of getting graduates into good jobs in tech. Follow the link to see the employability material.

{% embed url="<https://module-graduates.codeyourfuture.io/>" %}


# Join CYF Tech Products

To join the CYF Products team, you MUST already be a CYF volunteer. See [this page](https://docs.codeyourfuture.io/volunteers/joining) for more information.&#x20;

First of all, **thank you for your interest** in joining this team. We depend on volunteers like you, to keep our teams running and to be able to improve our products.

The steps for this your application are:

1. Apply on our [Product for](https://docs.google.com/forms/d/10JLyTyfhriO-uuQCEjmMRzcwMz35P0f5i4tjKL2Ww70/edit)m for the role you are interested in (see all [roles here](https://docs.codeyourfuture.io/volunteers/teams-1/cyf-products-final-projects/roles))
2. Once you receive our exercise OR Codility test, please do it within the next 7 days. *You must pass your test with at least 75%.*

   *Codility test is* S*QL, HTML, CSS and JavaScript based.*
3. The next exercise is to clone [this repo](https://github.com/CodeYourFuture/tech-products-demo) and work on its open issues. [This page](https://gist.github.com/textbook/1486e7a908e2d2a8b364b72cd1fe2125) helps with context
4. You will then have an interview with the following agenda:\
   \- Introductions\
   \- Demo of your exercise (non-technical roles) and repo work (developers)\
   \- Technical questions \
   \- Competency-base questions\
   \- Wrap-up
5. You will receive feedback of your interview


# Overview

### Why Professional Development?

At Code Your Future our aim is to empower people to change their lives by giving them the tools to have a successful career in tech.

We choose to work with people facing significant barriers to employment. We know that learning tech skills alone is not enough to become employable.

### What do we do?

We developed the Professional Development (PD) syllabus in response to these challenges. We work together with the Tech Education team to help trainees manage their learning and improve their employability.

### How do we do that?

From Fundamentals to Final Projects, the basic concept we want our trainees to understand is that agile teams use people with different skill sets playing different roles (e.g. designer, developer, QA) to produce something together.

Each module of our software development course is four weeks and each week has one hour-long PD session.

We are focusing on the following soft skills:

* Basic professional skills
* Confidence
* Communication
* Time/Project management
* Teamwork
* Problem Solving


# PD Coursework Reviewer

This page describes the steps you need to take to become a PD Coursework reviewer:

## Set yourself up

* **Join general Slack channels**
  * [CYF Volunteers](https://app.slack.com/client/T2H71EFLK/CTD17PH0D): channel in which volunteers can support each other
  * Designated cohort/PD Volunteers channel - based on your location, for example, Glasgow search for "Glasgow", "Scotland", "GLA".
* **Join PD Slack channels**
  * [Global PD Volunteer](https://app.slack.com/client/T2H71EFLK/C03JH62SUEL): channel for all PD volunteers at CYF
  * [PD Coursework Review](https://codeyourfuture.slack.com/archives/C066HFYJ478): channel for all coursework reviewers.
* Create a **GitHub** account -[ join Github](https://github.com/)

## How to do the Coursework review

* [ ] Get familiar with the process of reviewing coursework via [this video](https://app.wowto.ai/link/MWJD8ZwiKpb\&locale=english\&showplaybackspeed=true\&showsubtitle=true)
* [ ] Use this [spreadsheet](https://docs.google.com/spreadsheets/d/1lKrPAQkW0Mzn42d4nJxuOP01cTHjv7k3LlciH3XCoAY/edit#gid=0) to assign yourself to coursework and grade it as pass/no pass.
* [ ] When reviewing trainees' coursework tickets, follow the curriculum
* [ ] Give trainees efficient and kind feedback with clear examples so they can become better professionals. We suggest using the SBI Model (Situation, Behaviour, Impact)


# PD Coach

This page describes the steps you need to take to become a PD Coach:

### Set yourself up

Join general Slack channels

* ​[CYF Volunteers](https://app.slack.com/client/T2H71EFLK/CTD17PH0D): channel in which volunteers can support each other
* Designated cohort/PD Volunteers channel - based on your location, for example, Glasgow search for "Glasgow", "Scotland", "GLA".

Join PD Slack channels

* ​[Global PD Volunteer](https://app.slack.com/client/T2H71EFLK/C03JH62SUEL): channel for all PD volunteers at CYF
* [PD Coach](https://codeyourfuture.slack.com/archives/C06NNV2V8EA): channel for PD Coaches

### How to do your work

* Read the PD Coach Guide&#x20;
* Use this [spreadsheet ](https://docs.google.com/spreadsheets/d/1adLpP2BE9t18_QkuMhrV7aAkdU6aI0H5pQGia49_Dlk/edit#gid=0)to upload the content/give an update about what you did in every meeting and to keep track of attendees
* Refresh your knowledge on [Code of Conduct](https://codeyourfuture.io/about/code-of-conduct/) and Safeguarding&#x20;


# Onboarding PD Volunteers

You have gone through the general volunteer onboarding process and can now do the PD roles onboarding. In the following pages you can find the process and requirements for each role.

You'll learn more about:

* Which Slack channels to join
* If needed, how to join Github
* Who to turn to for help
* What you need access to
* How do you report to us/give feedback

## Need help?

Raise any concerns or questions with the PD Staff


# CYF Website

Visit [our website](https://codeyourfuture.io/) for relevant information, especially for people new to CodeYourFuture who wish to study, volunteer, partner, hire or donate!

{% embed url="<https://codeyourfuture.io/>" %}


# Mission, Values & Working Principles

You can read about our Mission, Values and Working Principles on the [website](https://codeyourfuture.io/about/).


# Our Trainees Backgrounds

While volunteering with CodeYourFuture, you will meet many kinds of trainees. Broadly, we offer our programme to refugees, asylum seekers, and people from several disadvantaged backgrounds.&#x20;

**You can find the eligibility criteria on our** [**website.**](https://codeyourfuture.io/itc/)


# Onboarding Process

When you're on our main Slack workspace, you should make sure you're in the right channels and invited to access relevant tools for volunteering!

### Slack

* All the channels associated with your city
  * e.g.
    * \#scotland channel
    * \#scot-class-5-volunteers channel
    * \#scotland-class-5 channel
    * @scotlandmentors user list

### GitHub

* City mentors group, so that you can review PRs and collaborate on the syllabus:
* <https://github.com/orgs/CodeYourFuture/teams/mentors><br>

Please let us know either on Slack or through your cities contact information if you have not been added to any of the above.

### Calendars

#### Global Calendar

All events that are not specific to any city

<https://calendar.google.com/calendar/b/1?cid=Y29kZXlvdXJmdXR1cmUuaW9fdG00MDN0NTlmNWJzcjlocm10bGVyN2RiaThAZ3JvdXAuY2FsZW5kYXIuZ29vZ2xlLmNvbQ>

#### City Specific Calendars

* London
  * <https://calendar.google.com/calendar/b/1?cid=Y29kZXlvdXJmdXR1cmUuaW9fbzdsNnY3aGd0bmQ4aHBmYWduazVmc2NrajRAZ3JvdXAuY2FsZW5kYXIuZ29vZ2xlLmNvbQ>
* Birmingham
  * <https://calendar.google.com/calendar/b/1?cid=Y29kZXlvdXJmdXR1cmUuaW9fbGVrNnF2MXZuZ24zMmVzZ3AxajU1MnQ4cWNAZ3JvdXAuY2FsZW5kYXIuZ29vZ2xlLmNvbQ>
* Manchester
  * <https://calendar.google.com/calendar/b/1?cid=Y29kZXlvdXJmdXR1cmUuaW9fb2U2OWNsb2piMHFzZm80dDNpMG1hNWpkamdAZ3JvdXAuY2FsZW5kYXIuZ29vZ2xlLmNvbQ>
* Scotland
  * <https://calendar.google.com/calendar?cid=Y29kZXlvdXJmdXR1cmUuaW9fYmswNDFocTNkdm9zdjBidmdkN2wwb2lwY2tAZ3JvdXAuY2FsZW5kYXIuZ29vZ2xlLmNvbQ>
* Other
  * Please contact your city coordinator

## What next?

After a month or two of volunteering, you can consider taking on more responsibility.

We have general volunteer - people who join and do occasional tasks.

And volunteer leaders - people who start to take on organisation of volunteer tasks.

Our organisation needs both types of volunteers. If you are interested in becoming a volunteer leader - contact your programme manager and find out more/register here: <https://codeyourfuture.io/leadership/>


# Dashboard

## Dashboard Training

You can find the slides for the dashboard training [here](https://docs.google.com/presentation/d/1XG0KQvT4b7NrXUa4y7bBcvI6cZkMRv6ybejvCA5wIEA/edit#slide=id.g81d5c2e1cb_1_0).

This training is given to people who want to start helping with evaluating applicants on the dashboard.

## Where is this?

<https://dashboard.codeyourfuture.io/>

## What is this?

The dashboard is the key organisation tool that we use to coodinate CodeYourFuture. It is mainted and developed by our graduates.

## What does it do?

Currently it supports the following features:

* [Application Process](https://github.com/CodeYourFuture/DocsV2/tree/e9aebc0f2d97ba4e65a510fcf287c1d11f6ee70d/organisation/volunteers/application-process.md)
  * Including managing the steps that applicants have to complete to join the course
* Volunteer Sign Ups
* Cities
* Teams

We also have these feature in development

* Volunteer CRM
* Events
* Expenses

## What problem does it solve?

When we started we would manually contact each of our applicant by email and phone calls with very little visibility on who was conducting each past of the application process.

As we've grown, we've found that this has become a a bottleneck for the organisation and so we built a tool to help us manage that. This application process tool has grown into the Dashboard that you see today.

## How do I get access?

You can sign up on the website and then talk to a city coordinator to be accepted.


# Joining

## How can I join?

You can  join as a volunteer by filling out a [volunteer form on our website](https://codeyourfuture.io/volunteers/).

**You must be over 18 to volunteer at CodeYourFuture**

## Who can be a volunteer?

The only case in which you cannot be a volunteer is if you are or plan to be a trainee at CodeYourFuture. All trainees are encouraged to volunteer when they graduate to support our community.

## When can I join?

You can join anytime as there is always something you can help out with all year round.

## What can I do?

This is a non-exhaustive list of things you can help out with:

* Helping to answer trainees' questions during classes
* Helping to teach a part or all of a class
* Reviewing trainee coursework on GitHub
* Helping out trainees outside of classes, either in person or in Slack
* Helping trainees during their graduation coding project
* Posting on social media or creating content
* Organising social events
* Helping specific teams, which involves working towards the goals outlined in the [volunteer teams page](https://github.com/CodeYourFuture/DocsV2/tree/e9aebc0f2d97ba4e65a510fcf287c1d11f6ee70d/organisation/volunteers/teams.md) through regular communication and meetings with other mentors

Volunteers are not expected to attend every class and to do all of the above, but you are more than welcome to if you would like!

## What if I want to get involved in technical teaching, but don't know JavaScript/React/Node?

In the Intro To Digital Course, Fundamentals Course and first few months of the Software Development Course, the focus is on logical thinking and teaching programming concepts common across many languages such as variables, loops, and functions so you can definitely provide help to trainees despite not knowing JavaScript.

Later in the course, the trainees learn frameworks such as React, Node and Express. If you are not familiar with these frameworks, you might be able to pick them up quickly as they are taught in class. You can still help trainees as mistakes are made at the syntax and logical level where knowledge of the framework is not required.

## After you join

Once you register with us, you will be invited to join an info session.

During the session, you will learn about CodeYourFuture's mission, program and volunteering opportunities before being onboarded to start your volunteering journey as a CYF volunteer.


# Overview


# Tools


# Slack

{% content-ref url="/pages/-MN40HgdBxH6\_eyNqsFq" %}
[Slack for Volunteers](/archive/archived-pages/tools/slack/for-volunteers)
{% endcontent-ref %}

{% content-ref url="/pages/-MLm7vchjCObnmFcbS7G" %}
[Slack for Trainees](/archive/archived-pages/tools/slack/for-students)
{% endcontent-ref %}


# Slack for Volunteers

## Introduction

[Slack](https://slack.com/) is a workplace environment for team communication. It has many advantages compared to traditional email and instant messaging, but it should not be confused with them. People do not get instant notifications unless they are tagged and have slack downloaded on their phones. Most tech companies use it at work, which offers an opportunity for CYF trainers to be available (as they can switch among workplaces).

Slack should be kept tidy and organised to maximise its usefulness.

### Fundamentals

* Use threaded communication (replies to a topic should always be in a thread)
* Edit your entries instead of adding extra information that you forgot in a message
* Learn to tag people and groups (every class is in a user group)
* Tag people only when you need their attention
* Use plain text names instead of tags if you don’t require a response from people
* Start a new thread if you are talking about a completely different topic
* Know what channels to use to make posts and ask for questions

### Trainee communication

* Learn to use thumbs up to confirm announcement has been read
* Communicate in advance if you want to work with another classmate and specify time and topic (you can tag the class)
* Ensure you reply in threads to communication and tag relevant people to get their attention to arrange on working together
* Use the trainee channel for organisation and non-class related discussion
* Start calls in the channel so that other trainees can join you.

  Ensure that it is titled with clear description of what are you working on
* Delete any failed group calls to keep the channel clear
* Inform the class as soon as possible if you are not planning to come or able to come to class

### Volunteer communication

* Make sure to tag trainees and graduates for events and create user groups for core volunteers
* Share social meetings and pictures in public channels
* Summarise meetings in minutes using assigned shared document

## Effective Organisation on Slack

### Brief

In this guide, I want to give some high level tips about how to communicate and organise effectively on Slack.

Most of this document is what I’ve gleaned from digital organising with other code schools and activist organisations.

### Problems

Using Slack as an organisational tool has several problems

* People do not check Slack enough
  * Unless you work for a company that uses Slack extensively, it’s very easy to forget that Slack exists
  * The longer people don’t check the Slack, the harder it is to catch up
* Messages are easily sent off screen so they get missed
  * Important messages are quickly sent off the first scroll of the page if there are lots of people talking
* It’s hard to tell the difference between an important message and people chatting
* Everyone’s messages have the same importance
  * There’s no way to tell who is in charge

However, I’ve noticed a few tricks that can help us cut through the noise.

### Rules of Slack Organisation

1. **Every message is a project**

When you’re writing a message you should always have in mind the information you’re trying to convey and the goals you’re trying to achieve with the message.

1. **The importance of the message is directly proportional to how much time you spend creating it**

People respond better when they know that the person sending the message has spent time creating it. The respect goes two ways.

1. **Fewer, better crafted messages**

It is very easy to swamp Slack channels with requests. You shouldn’t send multiple requests within a few hours, especially if they are low quality.

### Building a Slack Request

Every message should, at a glance, be able to answer these questions

1. Who is the message for?
2. What needs to be done?
3. How do I get involved?

Let’s imagine we have an urgent request to get volunteers to help with approving applicants.

Here is an example of a poorly made Slack Request:

![Chat Message](https://github.com/CodeYourFuture/DocsV2/tree/e9aebc0f2d97ba4e65a510fcf287c1d11f6ee70d/organisation/assets/slack-org/image2.png)

Here is an example of a better Slack Request:

![Chat Message](https://github.com/CodeYourFuture/DocsV2/tree/e9aebc0f2d97ba4e65a510fcf287c1d11f6ee70d/organisation/assets/slack-org/image3.png)

Here is an example of a better, very urgent Slack Request:

![Chat Message](https://github.com/CodeYourFuture/DocsV2/tree/e9aebc0f2d97ba4e65a510fcf287c1d11f6ee70d/organisation/assets/slack-org/image4.png)

What does the second message do better than the first?

* Formatting
  * Splitting the request out onto separate lines help to break up the post
  * Using bold to highlight the most important parts of the request to get people understand the request quickly.
* Thread
  * By tagging relevant people in the thread (instead of into the post itself) it encourages people to respond in the thread.
* Emojis
  * Whilst you shouldn’t use for every request. A line of emojis at the top of the request can help to break the message apart from others in the chat log.
* Physical space
  * The amount of screen real estate that the message takes up should be in line with how important the message is
* Short messaging
  * There’s no point in using long, run on sentences in a Slack message. Nobody will read it. Always be succinct.


# Slack for Trainees

## Introduction

[Slack](https://slack.com/) is a workplace environment for team communication. It has many advantages compared to traditional email and instant messaging, but it should not be confused with them. People do not get instant notifications unless they are tagged and have slack downloaded on their phones. Most tech companies use it at work, which offers an opportunity for CYF trainers to be available (as they can switch among workplaces).

Slack should be kept tidy and organised to maximise its usefulness.

## Fundamentals

* Use threaded communication (replies to a topic should always be in a thread)
* Edit your entries instead of adding extra information that you forgot in a message
* Learn to tag people and groups (every class is in a user group)
* Tag people only when you need their attention
* Use plain text names instead of tags if you don’t require a response from people
* Start a new thread if you are talking about a completely different topic
* Know what channels to use to make posts and ask for questions

## Trainee communication

* Learn to use thumbs up to confirm announcement has been read
* Communicate in advance if you want to work with another classmate and specify time and topic (you can tag the class)
* Ensure you reply in threads to communication and tag relevant people to get their attention to arrange on working together
* Use the trainee channel for organisation and non-class related discussion
* Start calls in the channel so that other students can join you.

  Ensure that it is titled with clear description of what are you working on
* Delete any failed group calls to keep the channel clear
* Inform the class as soon as possible if you are not planning to come or able to come to class

### Asking Questions

In order to make is easy for people to answer your questions when asking for help it's important that you have the following information

* The homework that you're working on
* What isn't working in your code or what you don't understand
* What you expect to happen
* A link to your code on Github

You should use this template:

```
Homework:
Problem:
Expected:
Code:
```

For example

```
Homework: Create a Website
Problem: The Headings on my website don't look right.
Expected: The heading should be much bigger than the other text on the page. I've tried to use a H1 tag but it doesn't work
Code: https://github.com/CodeYourFuture/my-website/pull/46
```

You can read more about asking good questions [here](https://github.com/CodeYourFuture/DocsV2/tree/c60a0ca21c9ddb472e89d72ac437b17d13a84a8b/students/guides/asking-questions/README.md)

## Volunteer communication

* Make sure to tag students and graduates for events and create user groups for core volunteers
* Share social meetings and pictures in public channels
* Summarise meetings in minutes using assigned shared document

## Effective Slack for Beginners

Slack is a powerful messaging platform, rich in features and lots of additional extensions. Here we collected some basic tips and hints for new users how to use it effectively and utilize its capabilities.

**Take note**: The description is based on the user interface in desktop Slack. It varies on different platforms.

### Conversation threads

Threads keep discussions in Slack organized usually within a channel but it also can be used in direct messages. They let you ask questions, add context, or give feedback on a specific message, all without disrupting a conversation's flow. A thread will remain connected to its original message.

**Why use threads?**

* Clearly tie your feedback and thoughts to a specific message or file.
* Organize conversations and preserve meaningful context.
* Encourage open discussion without distracting others.

To initiate a new thread on a post, hover over the message you'd like to reply to, click the "*Start a thread*" icon.

See more for [how to use threads](https://slack.com/intl/en-hu/help/articles/115000769927-Use-threads-to-organize-discussions-).

### Mention to grip members' attention

Sometimes you’ll need to get the attention of another member when having a conversation in Slack. When you send a message and include an *@mention*, the person you mention will be notified. 📣

To mention a member or a group, start typing the @ symbol followed by a member’s name that will give you a list of members to choose from. To mention a member or a group, start typing the @ symbol followed by a member’s or group's name. You will see a list of matching members or groups to choose from. When you find the name you want to mention, select it from the list.

You can also mention user groups if you would like to reach a whole group.

See for more [how to mention members](https://slack.com/intl/en-hu/help/articles/205240127-Mention-a-member).

### Making calls

Sometimes it helps to talk things out. With Slack calls, you can make a voice or video call to any member of your workspace.

To start a **call from direct message**, open a direct message then click the 📞 phone icon in the top right corner. Your call will start right away, and the member you're calling will receive a pop-up notification.

To start a **call from a channel**, open a channel and click "*Details*" in the top right then choose 📞 Call button. Slack will post a message to the channel and any member (up to 15 total) can join by clicking the *Join* button.

See for more [how to about calls](https://slack.com/intl/en-hu/help/articles/216771908-Make-calls-in-Slack).

### Bookmarking messages

You can save messages and files in Slack to bookmark them and reference them later. This helps you to find them later, without having to delve into the comment tsunami!

To bookmark a post, hover over the post and click the “*Save*" bookmark icon.

To remove a bookmarked item, simply click on the star again, and it will disappear from your list.

To list all saved messages, click on the "*Saved*" menu on the menu bar.

See for more [how to save messages](https://slack.com/intl/en-hu/help/articles/360042650274-Save-messages-and-files-).

### Edit and delete messages

Quite often we end up sending a wrong message or a message with a typo in a hurry. Thankfully, Slack lets us correct or even delete such messages.

In general, you can edit only the messages that you have sent. The edited messages will have grayed out Edited label next to them.

To edit or delete a message, hover over the message and click on the three dots icon and select "*Edit message*" or "*Delete message*" correspondingly. Once you delete a message, it will be removed for everyone.

> Tip: Use the up arrow key on PC to directly edit recently sent messages.

See for more [how to edit and delete messages](https://slack.com/intl/en-hu/help/search?utf8=%E2%9C%93\&query=reminder\&commit=Search).

### Direct Message

Another way to save resources is to share them with yourself! By setting up a Direct Message (DM) to yourself you can begin your own personal journal. It can be a place for you to save notes, personal to-do lists, documents and more!

To share a post or resource from a channel to yourself simply hover over the post and click the “*Share message*” arrow and send to yourself. It will be then saved in your personal DM.

> Tip: Edit your message to cross out tasks that you’ve finished or use an emoji reaction to mark the whole list as complete. ✅

See for more [how to send DM to yourself](https://slack.com/intl/en-gb/help/articles/219899267-Save-notes-and-files-in-your-personal-DM).

### Keep messages for group

Pin posts or set topic description to keep useful or important messages in view for wider audience in a channel. There is a couple of items in the channel header. Among others, you can see already pinned messages or get an overall about the channel.

To pin a message, hover over the post, clik thre three dots icon (“*More actions*”) then select “*Pin to channel*”. Unlike starred messages, pinned messages are visible for every member of the channel. It works like a public board on the classroom wall.

To set channel topic, hover over the current topic, click the topic to edit it. Generally it keeps useful information for the channel members for instance the channel’s purpose, links etc. If the topic is too long, it might be trimmed. To see the whole text, hover over the topic.

See for more

* [how to pin message](https://slack.com/intl/en-hu/help/articles/205239997-Pin-messages-and-files),
* [how to set channel topic](https://slack.com/intl/en-hu/help/articles/201654083-Set-a-channel-topic-or-description).

### View mentions and reactions

If we have been tagged in a post or someone has added to a thread we were involved in, Slack gives us a notification making it easy to follow along with a discussion.

A way of checking in on posts we have been involved with recently, is to use the “*Mentions & Reactions*” menu on menu bar. Here Slack shows us all our recent activity allowing us to find recent replies or reactions to our messages. This feature is great as usually Slack does not give us a notification for any reactions to our messages. So to check if someone has left an emoji to your message try checking your activity!

### Reduce noise

More channels you follow, more distracting they become that can turn to be very fustrating after a while. If you need focus time or time away from work, there are many options in Slack to help you concentrate. You can pause your notifications using Do Not Disturb (DND) mode, mute channels or conversations, or leave unrelevant channels.

To set DND schedule for routine times you'd prefer not to be notified, click your workspace name in the top left, hover over "*Pause notifications*", choose a time frame from the menu or select Custom to set your own.

To mute channels, right click the channel you’d like to mute and select "*Mute channel*". Muted channels will be greyed out at the bottom of the sidebar list.

See for more technics on [how to reduce noise](https://slack.com/intl/en-hu/help/articles/218551977-Reduce-noise-in-Slack).

### Reminder

Busy as a bee, or maybe feeling a little forgetful? Send reminders to yourself for important messages, events or anything you might need to come back to later.

To create a reminder to a post, hover the post and click the three dots icon (“*More actions*”) then select "*Remind me about this*" to remind yourself to come back to it later.

To create a general reminder, simply open the ⚡ shortcuts menu to set reminder for yourself.

See for more [how to set reminder](https://slack.com/intl/en-hu/help/articles/208423427-Set-a-reminder).

### Search

Accessing the right information in Slack is key to working smarter, faster, and more productively.

Click the 🔍 search field in the top right to open the search window, type what you are looking for into the search field, and optionally add [*modifiers*](https://docs.codeyourfuture.io/archive/archived-pages/tools/slack/pages/-MLm7vchjCObnmFcbS7G#search%20modifier) to narrow the scope. Slack will suggest relevant channels, files, and recent searches. Choose a suggested option in the list to open it.

#### Search modifier

Modifiers help narrow the scope of what you are looking for, so you can find information faster. You can also combine more modifiers together to get a more specific search result.

* Use `from:@Name` to find text shared by someone, e.g.: `from:@Sarah homework`
* Use `in:#Channel` to find text in a specific channel, e.g.: `in:#class-3`

See for more [search and modifiers](https://slack.com/intl/en-hu/help/articles/202528808-Search-in-Slack).

### One-click responses and approvals: Say it with emoji

Emoji can be a lot of fun, but we also use them as reactions all the time to speed up work. Watch for opportunities to use reactions in place of short messages that might otherwise clutter conversations in a channel.

Here are some example.

* 👍= “Acknowledgement I’ve seen your message”, “I agree” or “I'm in”
* ✅or ✔ = “Approved” or “I finished the training”
* ➕or 💯= “I agree”
* 👏= “Great job!” or “Well done!”

Same emoji can have different meaning depending on the context.

### Adjust zoom level

If the text size strains your eyes to read it, adjust the zoom level to make the app and text display larger or even smaller.

To adjust zoom level, click your workspace name, choose "*Preferences*" then click "*Click Accessibility*" and finally select your zoom level.

See for more [how to adjust zoom level](https://slack.com/intl/en-hu/help/articles/236067467-Adjust-your-zoom-level-in-Slack).


# Leaving or Stepping Back

Thank you for your support. We hope to see you again.

It's normal for you not to be able to commit to volunteering at some point!&#x20;

If you plan to take a short-term or long-term break from volunteering, you should tell your regional volunteer team so they can plan accordingly.&#x20;

If you are part of any CYF Google Groups, please remove yourself. You can always be readded upon return. We need to do this mainly for data/privacy and account number restrictions.&#x20;

If you are stepping back long-term, please get in touch with a [CYF Global Facilitator](https://codeyourfuture.io/meet-the-team/) so we can deactivate your Slack account. Don't worry, we can reactivate your account easily if you return!&#x20;

Also, don't forget to sign up for our email newsletter (scroll to the bottom of [our website](https://codeyourfuture.io/) to enter your email) to get little monthly updates on what's happening at CodeYourFure :relaxed:


# After the Course


# From Trainee to Volunteer

## Background

When Graduates finish the course they often want to give back to CodeYourFuture and support the next class coming through after them. We actively encourage this so that they

1. Keep their programming skills in practice
2. Expand their understanding of coding by teaching and mentoring
3. Continue to be part of our community

## Process

Before a Graduate can become a volunteer they should

* Sign the [volunteer agreement](http://bit.ly/cyf_vol_agreement)
* Attend a [Welcome Event](/archive/archived-pages/welcome-event)

## Roles

When a Graduate first volunteers there are a few roles that they would be really good at

* Reviewing work of applicants going through the application process
  * They understand what makes a good trainee at CodeYourFuture really well
  * They’ve all been through the process themselves
* Being a Teaching Assistant during lessons
* Being a Zoom Admin during lessons
* Individual mentoring for struggling students

Recent Graduates should not be

* Lead Trainers
  * Until they have professional experience they won’t have the depth of knowledge required to be a Lead Teacher
* Buddies
  * Graduates can offer 1:1 support to students but shouldn’t have a whole buddy group to look after as they should be focusing on their Job Search.


# General Information


# Overview of our Process

CodeYourFuture core areas

*Please read* [*Our Core value*](https://docs.codeyourfuture.io/organisation/history)<br>


# Outreach Process

CYF works with clearly identified disadvantaged ‘[Target Groups](https://docs.codeyourfuture.io/organisation/understand-students)’:

CYF is an inclusive learning community and will not tolerate any discrimination on the basis of race, ethnicity, religious beliefs, age, sexual orientation, gender identiy and previous experience. CYF has clearly identified ‘Diversity Targets’ to ensure inclusivity within applicant and trainee groups

For the outreach process to be successful CYF groups must ensure that the applicant pool exceeds 400 applicants and reflects our Target Groups and Diversity Targets.

During the outreach process all CYF branches and their Outreach Volunteer Teams must:

* Focus on approaching and supporting individuals in the Target Groups to apply as prospective students;
* Work with other charity groups and organisations to reach individuals in the Target Groups;
* Provide evidence of adequate demand among the applicant pool;
* Consider the Diversity Targets in campaigns to target applicants and in selecting students; and
* Run a cohesive, open and inclusive monthly outreach campaign to find new volunteers and volunteer leaders.

Please read [here](https://docs.codeyourfuture.io/teams/ambassadors) for more information on how the Ambassador/Outreach Team works


# Application Process

All CYF branches must follow the CYF application process guidelines to identify [eligible applicants](https://docs.codeyourfuture.io/course-processes/before-the-course/course-eligibility). This concerns every step of the application process: web tutorials, creation of web content, continuous iteration, and quality checks against our predefined criteria.

Where changes to the application process are required, whether due to general improvement work or CYF branch specifics, these need to be raised with the Global Education Team in advance and agreed before implementation.

For more information see the

{% content-ref url="/pages/-MLs1AUOmjkVE9ZAo7Uq" %}
[Intro to Digital (ITD)](/archive/archived-pages/application-process)
{% endcontent-ref %}


# Student Selection Process

All CYF branches are required to follow the [selection process guidelines](https://docs.codeyourfuture.io/course-processes/before-the-course) to select the students from all eligible applicants. This includes the following requirements:

* Eligible applicants must be clearly informed at the start of the selection process about the timings and requirements of the process;
* Eligible applicants must be interviewed face to face (whether in person or virtually) as part of the selection process;
* Independent 3rd party reviewers must be involved in the selection process to ensure fairness and transparency; and
* Any documentation relevant to the selection process should be available in advance to all students considered for selection.

See more about this process [here](/archive/archived-pages/selection-day)


# Volunteering Structure

Volunteers are considered the central structure of the CYF organisation at local level.  All CYF branches must be committed to the creation of volunteering leadership teams across four key areas:

* [Outreach/Ambassador](https://docs.codeyourfuture.io/teams/ambassadors),&#x20;
* [Education](https://docs.codeyourfuture.io/teams/education),&#x20;
* [Personal Development](https://docs.codeyourfuture.io/teams/personal-development),&#x20;
* and Tech Projects/Employment (“Volunteer Areas”).&#x20;

For a successful volunteer programme, CYF requires all CYF branches to implement the following:&#x20;

* Train and support volunteers in the Volunteer Areas;
* Volunteers must be actively working and communicate with their team on a weekly basis (“Engaged Volunteers”);
* At least 5 Engaged Volunteers are required for each Volunteer Area to ensure sustainable distribution of the responsibilities and efficient service delivery;
* All volunteers are to be treated with respect, equanimity, and be offered learning and growth opportunities; and
* Volunteers who form part of the leadership teams are expected to go through a formal [volunteer selection process](https://docs.codeyourfuture.io/volunteering-codeyourfuture/onboarding-process). &#x20;

See more about this [here](/archive/archived-pages/teams)


# Class Structure

For each CYF course, the dedicated Education volunteer team must put together a class schedule with clear timings and dates of each weekly face-to-face classes, events, and monthly socials. This must be communicated to the students clearly and with regular reminders of upcoming events.

For the duration of the course, but outside of public holidays, each CYF branch must conduct weekly face-to-face classes for the students for at least 5 continuous hours. Students must receive (by the end of each face-to-face class) remote class assignments equivalent to at least 15 hours of remote work. Students will be expected to complete at least 500 learning hours before graduating from a CYF vocational training program.

To evaluate progress and quality of content delivery, assessment of trainee progress must be carried out at a minimum on a monthly basis for the duration of the course and logged on the CYF systems. The dedicated Education volunteer team must submit monthly trainee progress reports to the central CYF team.

The Education volunteer team must set weekly targets for online remote communication between students to encourage them to regularly communicate and build study networks.

See more about this area:

* [Running a Class](broken://pages/-MLT7fRsmtGbMGunu2QJ)


# Communication from each CYF branch with CYF Global

Leaders of the key CYF Volunteer Areas must communicate on a weekly basis with their counterparts from other CYF branches to share knowledge and resolve common concerns. All CYF branch leadership teams must provide monthly updates on the progress of their organisation to the CYF Global Teams.


# Tech Projects

Group tech projects are integral to the learning and development of each trainee and form part of the CYF curriculum.

Students must complete a tech project as part of a group before they are able to graduate. All tech projects must be led by the Tech Project Volunteer team and based on the learning benchmarks set by the CYF Global Education Team.

Students must work together and achieve these minimum standards during the project. Students who do not partake in the group tech project will not be eligible to graduate as CYF graduates.


# Tech Suite

Each CYF branch shall use, and, where appropriate, improve the existing tech toolkit consisting of (but not limited to):&#x20;

* The Dashboard
* The Application Process Web Portal
* CYF Google suite,&#x20;
* CYF website,&#x20;
* Slack.


# Marketing

Each CYF team will receive and commit to fair use of approved CYF branding and content materials. New content generation is encouraged but will need to receive prior approval from the Central Strategy Team.

<br>


# People into Employment

In order to be considered suitable for employment progression, students must successfully attain learning benchmarks and deliver a group tech project.<br>


# Finances and Insurance

**Finance**

* Each CYF branch commits to proper documentation and record-keeping of trainee and staff expenses, in accordance with the CYF global policy.
* Size of staff compensation to employed CYF branch personnel is dependent on performance against trainee achievement targets - number of students, graduates, employment metrics etc.
* Each CYF branch should keep up-to-date accounts, they should keep all invoices, receipts and any other relevant documents relating to spend.

**Insurance**

Each CYF Branch should have liability insurance to cover staff, students and volunteers in the territory where they operate.


# The Founders team challenge

**The Founders team challenge**

1. Find the founding team
2. Create the strategy for your region
3. Find the Ambassador Team


# Challenge 1 - Find the Founding team

**The challenge should take 4 weeks.**

The core of the organisation is based on its local founders. No single person should start taking other steps before finding a group of 5 people that are ready to share the subsequent tasks and activities needed to start the first class.

* Find 5 super committed people, the **founding team**. Diversity is important for the team: they should be from different ethnic, gender, age, educational and socioeconomic backgrounds to properly represent your society. The more diverse the group, the stronger the foundations will be. Particularly relevant experience might include: grassroots activities, volunteering leadership, management, business development, organisation roles, humanities degrees, drama training, technology roles and software development.
* We are expecting a commitment of 12 months in order to launch the community
* The founding team will need to commit for 10-20 hours for the first 3 months in order to launch the Intro to Coding Course\*.

\*After the ambassador team is in place, the amount of hours will lower.<br>

*Tips: How can I find organisers?*

*- Speak at local tech events, NGOs, tech for good conferences and Universities*

*- Promote the idea on social media and reach out to social media groups covering a wide range of areas*

*- Organise meetups and events to present the idea of CYF*<br>


# Challenge 2 - Strategy Challenge

**The challenge should take 4 weeks.**

Before beginning the formal establishment of your chapter, it is important to understand who else is operating in the space locally – it may be that a CYF chapter isn’t the best solution, and that actually resources would be more efficiently allocated joining an existing initiative, or combining an existing initiative with the nascent CYF setup.&#x20;

Therefore the founders team needs to create the strategy of the city and region they want to operate in.

The strategy includes.&#x20;

* An analysis of the landscape in the region.&#x20;
* An analysis of the ecosystem which includes the beneficiaries of the programme
* An analysis of the Tech Sector / similar organisations which are doing some work in the tech ecosystem.
* A strategy on the outreach process: where you can find potential students and what marketing tools you will use&#x20;

The strategy will then be presented to the  CYF’s Strategy Team and core team members who will provide feedback<br>


# The strategy challenge Template

## **A  - Competitive Landscape**

* **Non-profit Organisations:**

**Are there any non-profit competitors in the area?**

*Please describe each one. Make sure to provide an overview of their approaches, content covered, annual course cycles and durations, full-time or part-time, selection criterias, application processes, any success stories and links to their websites.*

**How different are they from CYF?**

*Having considered the approach of existing provisions, please evaluate the differences between them and CYF. What are their advantages and disadvantages when compared to CYF? What value would CYF add and what provision gaps can CYF fill?*

*These questions should hopefully allow you to identify any existing provisions, as well as potential gaps and shortcomings.*&#x20;

* **For-profit Coding Bootcamps**

**What are the coding bootcamps in the region?**

*As above, please describe each one. Make sure to provide an overview of their approaches, fee structures, content covered, annual course cycles and durations, full-time or part-time, selection criterias, application processes, any success stories and links to their websites. Do they have any charitable tracks?*

*This question should allow you to understand the existing for-profit provision, approaches taken, popular coding technologies taught in your region and, most importantly, barriers facing disadvantaged groups from embarking on tech training.*

## **B - Selection Criteria**

**Who are the people you want to serve (your potential students)?**

*Definition of disadvantaged background:*

*-Social: Applicants who are refugees or disabled or from minority groups or socially excluded groups (e.g Roma populations, LGBT community).*

*-Age:*&#x20;

*-Gender:*&#x20;

*-Language:*&#x20;

*-Location:*&#x20;

*-Access to Technology:*&#x20;

*-Educational background:*&#x20;

*-Family background:*&#x20;

*-Financial background:*&#x20;

*-Criminal background:*&#x20;

*-Immigrations status:*&#x20;

*-Time commitment:*&#x20;

## **C - Demographics Data**&#x20;

**How large is the potential pool of applicants?**

*Now that you have considered and outlined your target audience. Please share any data on the potential number of people that you would reach out to in the region using this criteria. Are there any regional population clusters where your target group is overrepresented?*

*This question should hopefully allow you to understand the potential volume of applicants who would qualify to apply for the CYF course.* &#x20;

## **D - Existing Tech Sector**&#x20;

**What is the current state of the tech sector in your region?**

*One of the primary goals of CYF is to connect students to employment opportunities upon graduation. What is the current state and size of the tech sector? Is there sufficient demand for junior web developers? Is there sufficient demand for the technologies we teach? (i.e. Financial tech sector is likely to have very different tech language needs from the core CYF syllabus) What is the demographic composition of the tech force in your region? Are there any corporate initiatives that seek to address lack of diversity in the tech sector? Any companies who may be interested in these initiatives?*

*These questions should allow you to thoroughly consider potential demand for new developers in your region and their pathways to employment.*<br>

## **E- Outreach Strategy & Message - Applicants**

* How will you reach your target audience?
* Describe the likely locations of this target group?
* What is the message that you are going to use in the promotion of the course?
* You can calculate the number of applicants you will need using this [calculator](https://docs.google.com/spreadsheets/d/1UtL2Ew8abC1ROzlTiAoGdo1DiKaG1ywJYLvu0wBG680/edit#gid=0)

## **F- Outreach Strategy - Core Team of Volunteers**

* How are you planning to reach out to and recruit the core group of volunteers?
* How will you ensure that founding volunteers are determined and can contribute substantially to the founding activities and project overall?
* How will you make sure that they come from a diversity of backgrounds?
* Who are you current team members?<br>


# Challenge 3: Find the Ambassador team

**The challenge should take 4 weeks.**<br>

Now that an established Founders team has been created, you will need to recruit the Ambassador team.\*

In order to recruit Ambassadors you will need to be one of them! So your outreach tasks start now!

* You will need to be the first one creating a welcome event.&#x20;
* You will most likely need to run 3 welcome volunteer events within a short period of time, 4 to 6 weeks.&#x20;
* Your goal is to recruit 50-60 potential ambassadors.

**How to organise a** [**Welcome Volunteers Event**](https://docs.codeyourfuture.io/teams/ambassadors/volunteer-outreach/welcome-event)**.**

*\*Note: Until the ambassadors team has been created, you cannot recruit more volunteers or students.*<br>


# Launching the community in a new region

If you are interested in launching a CodeYourFuture community in your region, check out [this presentation](https://docs.google.com/presentation/d/1iW_9SFdLj9jOLOS6JFl4F3sB2ixGy7vSLmMU9GAp42g/edit?usp=sharing) with more information.

Our programme works with multiple courses, which you can learn more about on our [Curriculum page](https://curriculum.codeyourfuture.io/).


# Fundraising & budgeting

There are two possible paths to start a new chapter:

* By receiving grants or private funding;
* By starting with zero funding, which is the best way o test the grassroots potential of a new city

**What to keep in mind:**

There are some critical funding aspects such as finding laptops and covering trainees’ expenses. &#x20;

* Find Laptops
  * Ideally, you want to find second-hand laptop donations that can be given to trainees who do not have access to computers at home. This is to avoid managing laptop loans.
  * During Introduction to Digital, we suggest applicants use local libraries. But if they are halfway through Introduction to Programming they can apply to become trainees and get extra support with laptops.
  * Examples of where to find laptops:
    * Donations (businesses, charities, schools, tech companies)
    * Fundraisers to buy second-hand laptops
* At a certain point, you may need a part-time admin person who will liaise with the strategy team to support with the funding activities. Branches shouldn’t spend their time looking for funds, as there are enough other areas and tasks that they should focus on.
* If a team is well structured, start looking for corporate partners. However the suggestion is that the city does not do it on their own but works with the Strategy Team team,


# Finding a Space

You will also need an office space available for the weekend classes. The space must:

* Host around 40 to 50 people;
* Have a screen/projector to present the content.
* Have good quality wi-fi&#x20;
* Consider Accessibility&#x20;

Companies should be ready to offer at least 2-months of their space, so that we have enough time to find an alternative space (if necessary). We should aim for a central location that is easy to reach by students travelling from distant towns.

Before the program starts, your teams and trainees need to decide whether classes should be held on Saturdays or Sundays (decide on one day and stick to it!). <br>


# The Ambassadors Challenge

## Ambassador team - The hundred by hundred Challenge - 4 weeks

The founding team has now recruit 50-60 potential ambassadors\*

* The ambassadors will be split into teams of 5 people
* They are expected to commit 5 to 10 hours a week for 4 weeks
* Once a week everyone gets together to present their findings and what they're doing.&#x20;

The challenge:

1. Recruit the first 100 students
2. Recruit the first 100 volunteers
3. Organise at least 2 welcome events

\*Most likely ⅔ of the team will not complete the challenge.

At the end of the challenge, there should be a team of 5 super committed ambassadors that will stay in place for the duration of the first class <br>


# Volunteers Requirements

## How many volunteers you will need for the duration of the class

**Running Fundamentals - 1 month - based on a class of 40 students**

To run the Fundamentals course you will need a team of at least:

* 5 PD team members
* 5 EDU team members
* 5 Ambassadors

**Running Full stack Course - 8 months - based on a class of 30 students - 10 modules**

* 8-10 PD Coaches
* 10 EDU Buddies
  * For each module you will need also:
    * 2 Module Leads
    * 10 Teaching Assistants
* 5 Ambassadors


# Welcome Event

These sessions are potential volunteers first contact with CodeYourFuture and one of the key moments in a volunteers journey. The aim of this event is to give a face to the organisation, to inform the volunteers on how we work and increase the number of volunteer we get involved in what we do.

## Goals

1. Inform new volunteers about CYF, the team structure and the roles available
2. Give them a sense of the community
3. Sign interested volunteers up to an onboarding session - where they will get trained in the basics and take their first tasks on

## Details

### Presentation

The presentation we use can be found [here](https://docs.google.com/presentation/d/1aXYe1iguIp-xUaDM0qw7QNs5p12ocigxmbi2Za_gHhE/edit#slide=id.g720190f409_2_1)

### Sign-up via our Planner

[Click here](https://classplanner.codeyourfuture.io/TmmK6BZkSkuXCprGcmOa8Q/Remote%20Volunteers%20Event/coursecalendar) for the volunteer sign-up planner for the event

### Eventbrite Link

Here’s [the Eventbrite link](https://www.eventbrite.co.uk/e/volunteer-with-codeyourfuture-find-out-more-tickets-104630296032?aff=ebdsoporgprofile) with further description.

## Roles

1. **Organiser**
   * See ‘Before the Call’ and ‘After the Call’ below
2. **Presenter**
   * Introduce CYF story, discuss mission and values, give overview of Onboarding process (run the presentation, see above)
3. **Zoom admin/manager**
   * Log in using the correct credentials and make sure the meeting is up and running
   * Message attendees if necessary
   * Mute people if necessary (message them first!)
   * Open and manage breakout rooms (for the Q\&A session at the end - create one room each for Education, PD and Ambassadors)
   * Make other volunteers co-hosts so they can move between rooms if necessary
   * ***This role can be shared with the Organiser role or the Energizer role if we are short on numbers.***
4. **Energizer (and welcomer)**
   * Run a fun 5-10 minute energiser/icebreaker at the start of the call. You can look [here](https://docs.codeyourfuture.io/teams/ambassadors/energisers-and-icebreakers) for ideas. Keep in mind we work with large groups (usually between 20 and 30 participants).
5. **Edu team volunteer**
   * To talk about the team and the volunteering opportunities&#x20;
6. **Ambassador team volunteer**
   * To talk about the team and the volunteering opportunities&#x20;
7. **PD team volunteer**
   * To talk about the team and the volunteering opportunities&#x20;
8. **Graduate** (Optional)
   * For graduate story
   * Can replace graduate video and they can fulfil one of the other responsibilities above!

## Event Overview

### Before The Event

* Promote the event on Slack and on social media (liaise with `@ambassadors` group on Slack).
  * Eventbrite event can be found [here](https://www.eventbrite.co.uk/e/volunteer-with-codeyourfuture-find-out-more-tickets-104630296032).
* Share a summary of the last event within your posts. Here’s some advice on how to tailor the posts:
  * Liaise with CYF Ambassadors and with `@aaishah`, who leads the onboarding process, to figure out how many volunteers attended then followed through and started the onboarding process from the last event.
  * Reporting on previous events and discussing their impact inspires and encourages volunteers to continue Welcome Event roles or take them up for the first time.
  * Include in your post an update of the numbers of registered guests in Eventbrite for the event
    * Get Eventbrite statistics from someone with access to our account (likely someone from `@cyf-mgmt`)
    * You can ask volunteers to share the Eventbrite link in their own social media networks to advertise the event

#### 4 days Before The Event

* Enlist specific folks for the roles below (use [sign up sheet here](https://docs.google.com/spreadsheets/d/1rCLQlLzybu2A19Lxehhk7uV8GnUHicIhRfloSqawN4g/edit)) - make sure they are familiar with their role and this agenda document.
* Check the material is current (presentation is [here](https://docs.google.com/presentation/u/1/d/1aXYe1iguIp-xUaDM0qw7QNs5p12ocigxmbi2Za_gHhE/edit#slide=id.g720190f409_2_1)). If it needs adjusting, ask for updates in the cyf-ambassadors channel

#### 30 Minutes Before The Call

* Get the Zoom Room and presentation ready.
  * Ask @ambassadors or `@cyf-mgmt` for Zoom log-in credentials

### On The Call

5.45 - 6.00pm: small-talk / ask questions - in breakout rooms

6.00 - 6.15pm: online energiser

6.15 - 6.20pm: intro to CYF (Presenter)

6.20 - 6.25pm: Graduate shares CYF story (Or, we can play the graduate video after the Team Intros if the presenter feels the need and we have no graduate present in the session)

6.25 - 6.40pm: Intro to teams (Personal Development, Education and Ambassador Volunteer)

6.40 - 6.45: Remaining slides (Presenter - Values, brief onboarding process summary)

6.45 - 7.00pm: Team Q\&As - with Volunteer from each team answering questions from guests about their team

7.00 - 7.05pm: Redirect people to sign up form <https://bit.ly/cyf-volunteering>

7.05pm: Thanks / more chats if people stick around

### After the call

Get feedback from the attendees and volunteers and pass on to the CYF Ambassadors team along with a summary of the event and numbers attended, etc.


# The first Ambassador Team

At this stage, you have already reached the first group of students and you have recruited some Personal Development and Education volunteers, so what is next?

1. You can now organise the first Intro to Coding Workshop&#x20;
2. Over the next 2 months you will need to organise 3 to 4 workshops a month
3. After 2 months, you should have enough applicants, so you can start interviewing  potential candidates for the Fundamentals course, who might gain access to the  Full Stack Programme.&#x20;

**And just like that, you are now about to launch your first class after 8 months! Congratulations!**<br>


# Intro to Digital Course

## Aims

* **Provide a tech foundation** in the world of programming through the development of HTML and CSS skills.
* **Improve applicant’s self-learning skills** as well as the ability to work and research problems online.
* Provide **exposure to online tools** and remote collaboration.
* Offer **introduction of opportunities** within the software development and the tech industry.
* Understand the level of interest and **capabilities of participants** in programming.
* Offer **education paths** into programming
* Exposure to **role models** from disadvantaged backgrounds.
* **Guide participant’s ability** to work individually and in teams.
* **Analyse participant’s ability** to take ownership of small digital projects.

Most importantly, completion of the Intro To Digital course **is mandatory** before a trainee can be considered for the Fundamentals Course.

## More Information

For more information on the course and to register for ITD please follow this [link](<https://codeyourfuture.io/itc >).

{% embed url="<https://introtocoding.codeyourfuture.io>" %}


# Intro To Digital Slack Community Guidelines

Welcome to our Slack community for our Intro to Digital trainees. We are very excited to have you join!

At Code Your Future, we have a [Code of Conduct](https://codeyourfuture.io/about/code-of-conduct/) and [Values and Working Principles](https://codeyourfuture.io/about/). You must follow the Code of Conduct and Values and Working Principles if you are part of our community.

Also, we have guidelines for Slack, which are below. Please follow these so we can work well together.

How to communicate in channels on Slack

* Use the open channels when you need help or want to discuss something. That allows more people to assist and learn together.
* There is a channel for each region, where we will share updates about the next cohort. Use these to get to know your fellow learners.
* There are also channels for each stage of the Intro to Digital course. This is where you can ask for help on your current step.
* Slack has produced a [quick start guide](https://slack.com/intl/en-gb/help/articles/360059928654-How-to-use-Slack--your-quick-start-guide) that might be useful to you.

Please avoid the following behaviours

* Do not send the same message again and again across channels or to many people's inboxes. Only send helpful information.
* Share only legal content. Do not spread illegal material.
* Take part with sincerity. Do not try to fool or upset others.
* Do not share inappropriate or adult content. Keep our community friendly for everyone.
* Avoid offensive language and graphic content. Be respectful in all messages.
* If you see worrying behaviour or content, inform Code Your Future immediately.
* Do not share private data on Slack. This includes phone numbers, bank details, and confidential information. Please use email.

By being part of our Slack community, you agree to follow these guidelines. This will help create a supportive place where we can all learn new skills. Violating these rules may result in removal from our Slack. We want to maintain a respectful environment for all members to collaborate and grow.

Let's learn great things together!

<br>


# Fundamentals Course

{% embed url="<https://syllabus.codeyourfuture.io/fundamentals>" %}


# Software Development Course


# Guides


# Node Version Manager

![status-draft](https://img.shields.io/badge/status-draft-darkred.svg)

Sometimes you need to have several different versions of Node installed on your computer because different projects need different versions. If you need to be able to do this, or if you just want an easier way to install Node, use Node Version Manager (nvm).

## Installation

1. Go to the GitHub homepage: <https://github.com/nvm-sh/nvm>
2. Follow the installation instructions: <https://github.com/nvm-sh/nvm#install-script>.

   The easiest way is just to copy the command beginning with `curl`

   and paste it into your command line

**Important Note** ⚠

Using `curl` and `bash` (like you just did) can be unsafe if you do not trust where the command is coming from. Always be careful when copy/pasting commands from the internet!

### Installing a specific version of Node

Run `nvm install YOUR_NODE_VERSION` to install a version of Node. Once it's installed nvm will switch to using the version you installed. You can check by running `node -v`.

### Finding out which versions of Node you have installed

Run `nvm ls`. You will see a list of all the versions of Node you have installed with nvm. The arrow points the version that you are currently using.

### Switching to a version of Node you have installed

If you know a version of Node is already installed on your computer, you can switch to it by running `nvm use YOUR_NODE_VERSION`.


# Common Responses


# Create an example

## Why have I been given this link?

Someone who is trying to help answer your question will give you this link if you have not provided a "minimal reproducible example" of your problem.\
You can assume they want you to create one and to then post the link to it, in the same thread.

You will get much better help if you do this, and you will learn to solve your own problems.

Also, it is considered a basic sign of respect for those who are volunteering their time to help you.

## So, what should I do?

* If you don't know what it means to create this kind of example. read the article: [How to create a Minimal, Reproducible Example](https://stackoverflow.com/help/minimal-reproducible-example) on StackOverflow.
* Follow the guidance of that article, to create an example on any one of the following:&#x20;
  * [codepen.io](https://codepen.io/pen/),&#x20;
  * [repl.it](https://repl.it/),&#x20;
  * [codesandbox](https://codesandbox.io/)
  * [jsfiddle](https://jsfiddle.net/)
  * [glitch](https://glitch.com/)
* check that it really doesn't have any code that is irrelevant to the problem
* post your example on the Slack thread


# Don't ask to ask

## Why have I been given this link?

Someone (maybe a volunteer, maybe a bot) may give you this link if you have asked "is it okay to ask a question?", or "Can someone help me with a problem?" This is considered by many to be poor online etiquette. You will get a better response if you ask your question immediately in the first post.

## So, what should I do?

Just *ask your question*.

In future, just ask your question immediately - do NOT ask "Can I ask a question?" or things like "Is anyone around?"

## Further reading

You can and should read more at <https://dontasktoask.com/> and at <https://www.nohello.com/>

Also, try to prepare your question for the best chance of a good answer, and to respect volunteers' time. See: <https://stackoverflow.com/help/how-to-ask> for some advice on this.




---

[Next Page](/llms-full.txt/1)

