βπ½ Register
π‘ Morning orientation
Learning Objectives
Planning during the week
π£ Steps
If you haven’t done so already, choose someone (volunteer or trainee) to be the facilitator for this morning orientation block. Choose another to be the timekeeper.
ποΈ The Facilitator will:
- Assemble the entire group (all volunteers & all trainees) in a circle
- Briefly welcome everyone with an announcement, like this:
π¬ “Morning everyone, Welcome to CYF {REGION}, this week we are working on {MODULE} {SPRINT} and we’re currently working on {SUMMARISE THE TOPICS OF THE WEEK}”
- Ask any newcomers to introduce themselves to the group, and welcome them.
- Now check: is it the start of a new module? Is it sprint 1? If so, read out the success criteria for the new module.
- Next go through the morning day plan only (typically on the curriculum website) - and check the following things:
Facilitator Checklist
- Check the number of volunteers you have for the morning
- Check someone is leading each session
- Describe how any new activities works for the group
- Decide how best to allocate trainees and volunteers for a given block - most blocks will make this clear
β° The Timekeeper will:
- Announce the start of an activity and how long it will take (check everyone is listening)
- Manage any whole class timers that are used in an activity
- Give people a 10-minute wrap-up warning before the end of an activity
- Announce the end of an activity and what happens next
π Using a project board workshop
Using (and getting value from) a project boards
Project boards are a key tool used by teams to manage their work. Let’s find out together why.
Discussion (15 min)
Make a circle with the trainees (if you have more than 20 people in class, split it into 2 groups)
Each trainee should answer the following question:
- What problems are we trying to solve with project boards and tickets?
- Have you heard of reading from the right to the left? And can you explain it to the group?
- Can you explain the concepts for work in progress?
- What are work in progress (WIP) limits and how are they useful? How should we set them?
PS: If no one knows the answers, Google it and discuss it
Exercise (25 min)
Separate teams in groups of 4.
3 people should take on the role of “developer” and one person the role of “QA”.
Make a copy of this Miro board. The board tracks is for a project which tracks to progress of trainees.
Look at the board and discuss:
- What is each column for? Why is each column useful?
- What WIP (work in progress) limits may we want to apply to each column?
- Which ticket would you pick up first and why?
- What information could help us decide when we’re not sure?
- How should we prioritise tickets in each column?
- How can we be effective at moving tickets to done?
- Is there anything we could remove from the board?
- How can you ask for help from your team or give help to your peer?
- How can I tell my team just with this board where I am at with my ticket?
- We discussed a teamwork board. Can any of the things we learned today be applied to your individual coursework board?
Wrap up (5 min)
Make a circle with the trainees.
Each trainee should share one thing they learned today.
π« Morning Break
A quick break of fifteen minutes so we can all concentrate on the next piece of work.
π Terminal skills workshop
Terminal skills
Developers frequently use the terminal to interact with their computer. It is a useful job skill to get comfortable doing this.
In this workshop you will experiment with a terminal while there are volunteers around who can help you.
Split into groups, one volunteer per group. Volunteers, please follow along on your own machine, and be ready to offer help, ask helpful questions, and unblock. (But please also keep your hands off the keyboards of your group. )
Why do we use the terminal?
Collect reasons (2 minutes)
Set a timer for 2 minutes. Write down as many reasons people use the terminal as you can.
Share reasons (3 minutes)
Popcorn around the group sharing reasons for using the terminal.
Consider an example (2 minutes)
One reason developers use a terminal is to query files, or find out information. There are lots of existing tools that search, sort and change data.
Developers often write tools that other people can use in scripts or pipelines.
For instance, git
exposes a lot of information that you can conveniently consume in a script.
We can find the email addresses of people who have contributed to a Git repo by running:
git log | grep '^Author:' | awk -F'[<>]' '{print $2}' | grep -v 'users\.noreply\.github\.com' | sort | uniq
Or sort contributors to a Git repo by number of contributions:
git log | grep '^Author:' | sed -e 's/^Author: //' -e 's/ <.*$//' | sort | uniq -c | sort -r -n
git log | grep '^Author:' | sed -e 's/^Author: //' -e 's/ <.*$//' | sort | uniq -c | sort -r -n
curriculum % git log | grep '^Author:' | sed -e 's/^Author: //' -e 's/ <.*$//' | sort | uniq -c | sort -r -n
790 Sally McGrath
787 Dedekind561
231 MitchLloyd
176 Daniel Wagner-Hall
151 KFK
70 Alasdair Smith
38 Lara Huzjan
14 Barath Vignarajah
11 Caroline (Frank) Scherf
10 Barny Dathan
8 omahs
7 Zsolt Sz. SztupΓ‘k
6 dependabot[bot]
5 Sam Pennington
4 Metin BarΔ±Ε
4 Anna Aitchison
3 karen
3 Amy
2 daslerr
2 Rabia Avci
2 Kyrylo Kovzel
2 Jonathan Zheng
2 Jay Mayer
1 metinbaris
1 karam ali
1 Vlad Boisa
1 Varuna
1 Tony Beaumont
1 Mohamad Badrawy
1 Isar
1 H. Nhi (Alex)
1 FridIsar
1 Fikret Ellek
1 Della Bella
1 David Christensen
1 Chris
1 CJ Yuan
1 Berkeli Halmyradov
1 Baz
1 Azar Alampanah
These would be hard questions to answer without some kind of program or script. By combining re-usable tools, we can quickly answer them. (You’ll learn more about combining tools next sprint!)
Being effective with the terminal
This is a list of exercises for you to try on your own. You will probably get stuck or confused. Ask the people around you (either volunteers or trainees) when you’re stuck.
Volunteers: Make sure people aren’t stuck, and help them when they are.
Shell scripts
Sometimes we want to re-use some series of commands, or share them with other people. To find our top Git contributors it’d be nicer to run get-top-git-contributors
. That would be clearer and simpler than remembering and running all those commands each time.
A way of doing this is to write them in a script. A terminal is also called a shell, so these are called shell scripts.
The format of a shell script is to put one command per line. Often the very first line will be #!/bin/bash
, to tell the computer what program should interpret the script.
There are three ways you can run a shell script:
- As an argument to
bash
. If you runbash /path/to/your/get-top-git-contributors
, your script will be run. - By making the script executable. You do this by running
chmod a+x /path/to/your/get-top-git-contributors
once. After this, you can run your script by putting its path into your terminal. This means running/path/to/your/get-top-git-contributors
, or./get-top-git-contributors
if you’re in the same directory as the script. - By making the script executable and putting it on your
$PATH
. Once you have done this, you can run it by name:get-top-git-contributors
.
Make some shell scripts (20 minutes)
Make a shell script (it can do whatever you want - print something, look up git information, or something else completely!). Run it via all three of the ways described above. Run it from a few different working directories.
If you aren’t sure what shell script to write, try to write a script which does all of the following:
- Outputs the current date and time (using the
date
command). - Outputs the current working directory (using the
pwd
command). - Outputs the current user’s username (using the
whoami
command). - Outputs a friendly message to the user, e.g. saying “I hope you have a good day” (using the
echo
command).
Running previous commands
Often we want to run a command we ran in the past. Shells support this. Pressing the up arrow will bring the last command you ran. Keeping pressing it will cycle through.
Pressing Control+r and typing some text (like git
) will search back for the last time you ran a command containing that text. Pressing Control+r again will go back to the command before that contained that text.
Practice running previous commands (5 minutes)
Run the following commands in a row:
% git status
% echo "Hello"
% git rev-parse HEAD
% echo "I ran a command"
% echo "I ran another command"
% date
Find the last git
command you ran with Control+r. Change the argument HEAD
to the argument main
and run it.
Practice using the up arrow, and Control+r to search for, edit, and run other previously run commands.
Navigating within a single prompt
Often we have typed a command we’re going to run, but we need to slightly change the command. Maybe we made a typo, or need to change an argument.
Many terminals don’t let us just click around to change the position of the cursor. We can use the left and right arrows to move around one character at a time.
Navigate around a prompt (5 minutes)
Shells also support moving the cursor one word at a time, or jumping all the way to the start or end of your line. Work out how to do this, practice it, and take notes to help you remember how.
(Note: This may be different on different operating systems!)
Avoiding needing to type everything (5 minutes)
Shells support tab completion (pressing the tab key to fill in the names of files), and expansion (using special characters like *
) to avoid you needing to type in the full names of files.
Use both of these techniques to run commands involving files without needing to type out all of their full names.
Wrap up
Run through the learning objectives of this workshop. Make sure you have achieved them. If you’re not sure about any of them, work on them in study group or in the week.
π Study Group
Learning Objectives
What are we doing now?
You’re going to use this time to work through coursework. Your cohort will collectively self-organise to work through the coursework together in your own way. Sort yourselves into groups that work for you.
Use this time wisely
You will have study time in almost every class day. Don’t waste it. Use it to:
- work through the coursework
- ask questions and get unblocked
- give and receive code review
- work on your portfolio
- develop your own projects
π² Games, rules, logic, and strategy
Usually there’s a rota showing who will lead the energiser. We have some favourite games you can play if you are stuck.
- Traffic Jam: re-order the cars to unblock yourself
- Telephone: draw the words and write the pictures
- Set: a game of visual perception
- Mastermind: a game of deduction
- Sudoku: a game of logic
- Mancala: a game of strategy
π½οΈ Community Lunch
Every Saturday we cook and eat together. We share our food and our stories. We learn about each other and the world. We build community.
This is everyone’s responsibility, so help with what is needed to make this happen, for example, organising the food, setting up the table, washing up, tidying up, etc. You can do something different every week. You don’t need to be constantly responsible for the same task.
π€ Demo
At CYF we expect you to demo your work to the class. You must have many opportunities to practice how to clearly and simply explain your work to others. This is really important both for interviews and for getting promoted later on.
β° Timekeeper
The timekeeper will keep the groups on track.
Split randomly into groups of no more than 5 people. Each person will have 2 minutes to demo their work to the group. After the demo, the group will give feedback for 5 minutes. Then the next person will demo their work.
π§πΌβπ Trainees
1. Demo
You will demo your work to the group. You will have 2 minutes to explain what you did and why. It’s ok to show broken code or code that doesn’t work yet. Just make sure your demo is interesting.
2. Feedback
After the demo, the group will give you feedback for up to 5 minutes. It’s smart to suggest what kind of feedback you want by asking some “generative” questions. For example:
- I wasn’t sure if it makes sense to try X. What do you think?
- I liked the way I did X, but I know there are other approaches, what did you do?
- I found X really confusing, did anyone else have the same problem?
- I wasn’t sure if I explained what an X was very clearly, how could I have explained it better?
π‘ Tips:
- Practice your demo before class.
- Keep it simple. Don’t try to show everything you did. Just show one interesting thing.
- Keep it short. Two minutes is enough.
- Explain what you did and why.
- Show your code.
- Ask for feedback.
π Study Group
Learning Objectives
What are we doing now?
You’re going to use this time to work through coursework. Your cohort will collectively self-organise to work through the coursework together in your own way. Sort yourselves into groups that work for you.
Use this time wisely
You will have study time in almost every class day. Don’t waste it. Use it to:
- work through the coursework
- ask questions and get unblocked
- give and receive code review
- work on your portfolio
- develop your own projects
ποΈ 0 PRs available. Open some pull requests! π
π« Afternoon Break
Please feel comfortable and welcome to pray at this time if this is part of your religion.
If you are breastfeeding and would like a private space, please let us know.
π Study Group
Learning Objectives
What are we doing now?
You’re going to use this time to work through coursework. Your cohort will collectively self-organise to work through the coursework together in your own way. Sort yourselves into groups that work for you.
Use this time wisely
You will have study time in almost every class day. Don’t waste it. Use it to:
- work through the coursework
- ask questions and get unblocked
- give and receive code review
- work on your portfolio
- develop your own projects
π Retro: Start / Stop / Continue
πΉοΈRetro (20 minutes)
A retro is a chance to reflect. You can do this on RetroTool (create a free anonymous retro and share the link with the class) or on sticky notes on a wall.
- Set a timer for 5 minutes. There’s one on the RetroTool too.
- Write down as many things as you can think of that you’d like to start, stop, and continue doing next sprint.
- Write one point per note and keep it short.
- When the timer goes off, one person should set a timer for 1 minute and group the notes into themes.
- Next, set a timer for 2 minutes and all vote on the most important themes by adding a dot or a +1 to the note.
- Finally, set a timer for 8 minutes and all discuss the top three themes.