Register
Energiser: Wemoji
Learning Objectives
ππ’π²
This game can be played in-person or online with 2 or more participants.
One person will be the “Emoter” and the others will be “Empaths.”
- Emoter, choose a random emoji from the list.
- Emoter, act out the emoji using only facial expressions and body language (no sounds or words).
- Empaths, try to guess the emoji.
- The first Empath to correctly identify the emoji becomes the next Emoter.
Emojis List
β€οΈ Red Heart
π Loudly Crying Face
π Skull
π₯ Fire
π«Ά Heart Hands
β
Check Mark Button
β¨ Sparkles
π Face with Tears of Joy
π Smiling Face with Smiling Eyes
β Star
π₯Ή Face Holding Back Tears
π«‘ Saluting Face
π Folded Hands
π€ White Heart
π Eyes
π« People Hugging
π©· Pink Heart
π« Melting Face
β€οΈβπ©Ή Mending Heart
βοΈ Check Mark
π Smiling Face with Heart-Eyes
𦴠Bone
πΏ Moai
π Thumbs Up
β€οΈβπ₯ Heart on Fire
π Pensive Face
π«΅ Index Pointing at the Viewer
π Crown
Facilitator Check in questions
Guide participants to reflect on emotional expression and recognition:
- What was most challenging about expressing without words?
- Which emoji were easiest to express, or read? Which were most difficult?
- How does this exercise relate to reading people in real-life situations?
More resources
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
π Workshop: Asking Questions
Asking Questions 101
Prep
- Read this article about Mental Models
- Load this webpage, which stores the problems we will work on today. https://cyf-workshop.netlify.app/asking-questions
Today we’re going to start learning a formal language of developer questions. We will begin with this basic format:
- What I did
- What I expected
- What actually happened
This format helps to find the discrepancies between expectations and reality. (This is the gap in our understanding.)
It’s also an efficient way to share our current understanding with others.
Expectation vs reality
When we are surprised by an outcome it usually means we had a mental model of the world that didn’t predict the world accurately. Don’t panic when this happens, it’s completely expected for even experienced developers to run into surprises. We use these gaps as signs that we need to update our mental models.
To develop our understanding of coding, we will:
Predict & Explain
- Make a prediction by explaining what the outcome will be
- Play computer - “run” the model in our heads and predict (say before) what the outcome will be
Try
- Code up our idea
- Run the code
Compare and Update
- Compare the outcome with our prediction
- Explain the gap between our prediction and what actually happened
- Update our understanding
This process is cyclical.
Updating the right model
If you are stuck and can’t explain the gap in your mental model, then it’s time to ask a question!
When we ask questions, it’s important that we share our current mental model as part of your question so that other people can test the right thing, focus on the mis-understanding. Then together you can get quickly to a shared understanding of your specific problem.
Let’s look at how asking questions helps you update your mental model with an example.
πΉοΈInversion, 5m
- Set a timer for 5 minutes.
- Popcorn around the room and each person give an example of a bad way to ask a question until the timer goes off. For example:
Argh I can’t make it work please help me!
Why are these not useful?
πΉοΈInversion 2, 10m
- Set a timer for 10 minutes.
- Popcorn around the room and each person give a reason that one of the previous questions was bad until the timer goes off. For example:
What is it? What are you trying to do? In what way is it not working? Be specific! Share what you see. Do you have a link? What do you want it to do?
Exercise ground rules
Before we get to the next exercise, let’s just set some ground rules here:
- The goal is not to complete the exercise; the goal is to learn
- The smart thing to do is to focus on the questions you cannot (yet) answer
πΉοΈFraming questions systematically, 30m
Split into groups of 2-5 people. Set a whole class timer for 30 minutes.
Confound yourselves
- Pick a problem from the bank.
- As a group, make a prediction about what you think the answer is, and write it down.
- Test your prediction. Try it out using the dev tools.
- Compare your prediction with the outcome.
What happened? Is there a gap in your understanding?
Keep doing this until you find a problem you can’t solve, then write up your mental model using this format:
- What I did
- What I expected. Make sure you include your prediction here
- What actually happened
Include as much context as you can, including links, line numbers, sample code, etc. Use code blocks to mark up your code. If you use screenshots, they should only show the visual render (never screenshot code - paste code as text).
Now post your write up of the question in #cyf-ask-tech-stuff.
π§πΎβπ»π Developer questions contain
- π Links π
- Objectives - what are you actually trying to do? π
- πΌοΈ Screenshots of UI π
- π
Code blocksπ - π·
Screenshots of codeπ
π Further reading
Sharing Our Blockers
Learning Objectives
We call problems that stop our progress “blockers”. We talk through our blockers regularly and help each other get “unblocked” or “unstuck”.
πΉοΈSharing Our Blockers
Join the online board or grab some sticky notes. Add your blockers.
Make sure to add only one blocker per note.
Facilitator Once everyone has added their blockers, group similar blockers together.
Facilitator Next, discuss the blockers and help each other get “unblocked”. Start with the most common blocker and work your way down the list.
Hints and Tips
Example Blockers
- I can’t find a Slack channel people keep mentioning.
- People tell me I should be replying to a Slack message in a thread, and I don’t know how.
- I can’t open a PR, because…
- How do I fix extra stray files in my PR?
- I don’t have a computer so I can’t complete my work!
- How do I run Lighthouse?
- Everyone should have blockers. If you aren’t blocked on anything in the course, do you need to challenge yourself more?
- Ask “stupid” questions. Your question is not stupid! What we are doing is hard, and everyone has questions. If you’re stuck, it’s likely that someone else is too. Please help others and ask your question!
- If you have other more advanced questions, do write them on the board but don’t expect to answer them in Blockers. We will work on those in study group.
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.
Group discussion: Working with others
We’re all here to learn and grow. Our goals are to become self-sufficient - able to do our own work, and get help when we need it.
We’re part of a community. We help each other, but we’re also each trying to learn for ourselves.
Below are a number of scenarios. Have a group discussion about each scenario. What do you think is good and bad about how people are working? What should they do differently? Why?
Spend on each scenario.
1. Working together in a group on a piece of coursework
Amira, Babak, and Charlie are on a call together talking through how to approach a problem.
They each write their own code on their own laptops, but Babak doesn’t think he could solve it on his own. If he deleted his code, and tried to solve it again after the call, he isn’t confident he would be successful. But he’s really eager to complete the sprint and move on to the next topic.
Facilitation hints
- Understanding is more important than speed.
- Deleting and re-trying exercises is a good test of understanding.
- Working together is good, but everyone needs to leave with understanding.
2. Watching someone solve Codewars exercises
Amira, Babak, and Charlie have a call every week where they watch Charlie solve Codewars exercises.
This is good practice for Charlie. And Amira and Babak find it useful to see how Charlie solves the problems.
Facilitation hints
- Working together is good.
- Seeing how other people solve problems can be interesting.
- Taking turns is better than always being in the same roles.
- Everyone can learn from each other.
3. Asking ChatGPT to solve a problem and copy+pasting the answer
Dara is trying to do a piece of coursework, but isn’t sure what code to write. They ask ChatGPT to solve the problem, and copy+paste the solution into a pull request.
Dara is pretty sure they understand the code, but isn’t sure they could write it again from scratch if they needed to.
Facilitation hints
- Deleting and re-trying exercises is a good test of understanding.
- Submitting copy+pasted code is a waste of volunteer time - people spend time reviewing it.
- No one will hire you just to copy+paste from ChatGPT. You need understanding.
- The point of coursework isn’t for you to complete it, it’s for you to learn by doing it, even if that’s a struggle and takes time.
Study Group
Learning Objectives
Trainees
This is time for you to get help with whatever you need help with.
If you didn’t understand something in the prep, ask about it.
If you were struggling with a backlog exercise, get help with it.
If you weren’t quite sure of something in a workshop, discuss it.
If you don’t have any problems, keep working through the backlog until you need help.
It can be useful to get into groups with others facing the same problem, or working on the same backlog item.
Volunteers
Don’t be scared to approach people and ask what they’re working on - see if you can help them out, or stretch their understanding.
If lots of people have the same problems, maybe you can put together a demonstration or a workshop to help them understand.
If absolutely no one needs help, consider reviewing some PRs using the process and guidelines in the #cyf-code-review-volunteer-team Slack channel canvas.
Breaks
No one can work solidly forever! Make sure to take breaks when you need.
Finished everything?
If you have finished everything in the backlog you can use this time to practice some other skills which will be useful in your future careers. We have some suggestions below:
Pair programming
Pair programming is very common in industry so it’s good to practice it now! Find a partner and choose a problem to work on, for example a Codewars kata. One person will be the “driver” and the other will be the “navigator”. Both of you will use the same laptop to complete the activity.
- The “driver” is the person typing on the keyboard, just thinking about what needs to be written
- The “navigator” reviews what the driver is doing and is thinking about to write next
- Switch between driver and navigator roles after
- Don’t dominate - this is teamwork
Code review
You will receive regular reviews of your work from volunteers when you submit a PR, but how comfortable are you giving a review? Find a partner and give each other feedback on one of the PRs you submitted this week. After you have given your feedback you should consider:
- How did you understand what the goal of the PR is? Did you read the title and description, look at the coursework exercises, etc.
- How did you use the different tabs in the PR:
Conversation,Commits,Files changed. - What made a PR easy or hard to review:
- Where unrelated files/lines changed?
- Was code consistently formatted? Did indentation help or hurt understanding?
- How did you review the code? Did you read top-to-bottom? Did you jump around into and out-of functions? Did you look at tests? Did you clone the code locally and try running it?
Prepare for your next demo
You need to give regular demos to complete the course. Use this time to work on your next one. You could:
- Prepare your slides
- Discuss topics
- Practice presenting
Share resources you have found
CYF aren’t the only resource available to you! If you have discovered a new book, YouTube channel or anything else you are using to help you learn this is an excellent time to share it with your cohort.
Wrap
You are done for the day. Take a moment to reflect on what you have learned and achieved.
Stand in a circle and share:
- π your name
- πͺπ½ one thing you built today
- π·πΎ the task you are going to work on next
- π one thing you need help with
Give yourselves a round of applause. Now you have earned your rest. Usually people go for a cup of tea or a pint after class. You are welcome to join and wind down together.
Optional: Socialise!
Learning Objectives
At CYF we learn as a community. You’re going to be spending the coming months with the people around you. After that, they will form part of your professional network too.
We encourage you to spend time getting to know them! This is optional. But after class, we encourage you to do something like:
- Hang around in the class space chatting or playing games.
- Go sit in a nearby park together.
- Go to a local cafe for hot drinks.
- Go to a nearby pub.
- Or any other ideas you have!
Make sure everyone who wants to join in will feel welcome wherever you go (e.g. a lot of people don’t like drinking or being near alcohol).
If CYF is paying childcare expenses so that you can come to class, we’re happy to pay for this time as well.