Energiser
Every CYF session begins with an energiser. Usually there’s a rota showing who will lead the energiser. We have some CYF 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
- Popcorn show and tell: popcorn around the room and show one nearby object or something in your pocket or bag and explain what it means to you.
Active listening 🔗
Learning Objectives
Preparation
Trainee needs a computer and internet for this exercise.
Introduction
Open-ended questions
🎯 Goal: Practice asking open-ended questions in a pre-defined scenario (20 minutes)
Pair and practice asking open-ended questions.
- One individual will play the role of speaker and the other one the role of listener, then switch.
- For each of the scenarios below, the listener should ask at least 5 questions.
- Once the person finishes their thought, the listener should demonstrate engagement by asking specific, open-ended questions.
At the end of each scenario, make sure to discuss how it went and provide feedback.
For example, ask:
- “Tell me more about that.”
- “How did you feel?”
- “What made you pursue that option?”
- “What can I do to help?”
*Avoid asking questions or making statements that indicate judgment. For example, instead of:*
- “Why would you do that?” try asking “What motivated you to do that?”
- “You didn’t really mean that, did you?” try asking “What did you mean by that?”
- “That doesn’t make sense” try asking “I’m not following, could you explain…”
Scenario 1
Joe is a new team member that just joined. Joe will start by introducing himself:
Speaker: “Hi my name is Joe, I am a software developer that just joined the company. I worked previously in SuperTech as a database developer where I used to develop database reports and support an SQL database. As a hobby I enjoy playing piano and running.”
Listener: Using open-ended questions, learn more about Joe with the objective to build trust and a strong working relationship.
Scenario 2
Lucy is your colleague and today she looks sad. When asked about it, she explained that she just had a conversation with her manager about her performance and unfortunately it was not great.
Speaker: “My manager just told me I was not meeting expectations. This caught me by surprise as I thought I was doing exactly what was expected from me. I think it is unfair. How can I make sure I do well if I don’t know what I am being assessed against?”
Listener: Using open-ended questions, demonstrate empathy.
Scenario 3
Jane is very unhappy with how John provides feedback on her pull requests.
Speaker: “It is really difficult for me to take John’s comments as constructive when he uses statements like ‘unacceptable piece of code’ or ‘this is poorly written’. I am not sure if this is because English is not his native language but I am now scared to submit my code for review!”
Listener: Use open-ended questions to help resolve this conflict.
Active listening while discussing a topic
🎯 Goal: Practice active listening in a group conversation. (35 minutes)
In many ways, active listening is a mindfulness practice. The listener is trying to stay focused on the present, with what is being shared. And they are working to accomplish this without judgment.
In groups of at least 4 people, sit in a circle and discuss each of the topics below ensuring there is always only one person speaking at all times. At the end of each discussion, discuss how it went and provide feedback.
You will have to ensure you follow these rules:
- Avoid interrupting
- Listen without judgment
- Paraphrase and summarise what the other person has told you to avoid miscommunication
- Let the other person know you are listening by showing it through positive nonverbal and body language behaviour
- Ask specific, open-ended questions.
Topics
- Topic: What do you think are the most wanted technical skills and programming languages today in the job market and why? What do you think you need to do to be ready to showcase those technical skills?
- Topic: How prepared do you feel to start interviewing for a software developer job? What do you think will be the most challenging parts of the whole recruitment process (initial recruiter call, behavioural interview, technical assessment)? What can you do to prepare better?
- Topic: Talk about something personal you would like to share with the rest of the group. It could be a personal achievement, a struggle, a recent event that impacted you either positively or negatively, it could be just sharing your personal story!
Morning Break
A quick break of fifteen minutes so we can all concentrate on the next piece of work.
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-workshops.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.
graph LR A[Predict] B[Explain] C[Try] D[Compare] E[Update] A --> B B --> C C --> D D --> E E --> A
Updating the right model
If you 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 the previous question 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
Community Lunch
Every Saturday at CYF 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.
Study Group
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
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
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 on this past sprint. You can do this on a Jamboard (make sure someone clicks “Make a copy” before you start, and you work on that together) or on sticky notes on a wall.
- Set a timer for 5 minutes.
- 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.