π§πΎβπ€βπ§πΎ day-plan
π Energiser
Every session begins with an energiser. 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
- 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.
π‘ Morning orientation
Learning Objectives
Planning during the week
π£ To Do
ποΈ The Facilitator will:
- Assemble the entire group (all volunteers & all students) in a circle
- Briefly welcome everyone with an announcement, like this:
π¬ “Morning everyone, Welcome to another Saturday at MigraCode, this week we are working on Module X Sprint 3 and we’re currently working on {summarise what the topic of the week is}”
- 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 add one thing you hope to find out or learn about today.
β° 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
ποΈ Options
Disclaimer: this exercise is from Code Your Future
β οΈ Disclaimer
πNote
This exercise is hosted on the GitHub repository of our partner NGO, Code Your Future (UK), and not on a MigraCode-owned repository. We are part of a European network where we share resources and support each other as we share the same mission - to provide free, high-quality tech education to our communities.
The exercise works as intended β you are free to fork and clone the repository as usual, if required by the exercise. However, please do not make any pull requests to the original Code Your Future repository.
Lastly, if there are any mentions to CYF Slack channels please write a message into our MigraCode class channel instead.
π§° Workshop Activity
Learning Objectives
This space is for a workshop activity of your choosing. In order for this to actually happen, you must organise it ahead of time.
What is a MigraCode workshop?
π·πΏββοΈ No lectures
MigraCode workshops are designed to be interactive. Developed by volunteers and trainees, they are not about listening to a lecture. They are about doing, discussing, and learning together.
πͺπΎ No spoonfeeding
Workshops are also not tutorials, where you follow along step-by-step. MigraCode workshops are meant to expose gaps and mistakes in your understanding, so mentors can help you fix them. This means you should expect to be challenged and to make mistakes. This is the main value of mentor-led workshops.
ππΏ Responding to needs
You can run a workshop in person on class days, or online in the week. Mentors volunteer to run workshops on Slack, and learners propose topics they need help with. There are a huge number of workshops available at workshops.codeyourfuture.io/.
Organise a workshop on Slack

ποΈ Options
Giving Feedback [PD] (60 Mins)
π Giving Feedback [PD] (60 Mins)
Feedback Workshop π£οΈ
Feedback is the foundation of effective collaboration. Both giving and receiving feedback are important communication skills to master.
Tips for Giving Feedback:
- Give feedback in the right context, being mindful of tone and its impact on the receiver.
- Give feedback in a timely fashion, be direct, and non-accusatory (assume positive intent).
- Give feedback privately.
- Sometimes it is also better to ask if someone would like feedback.
Tips for Receiving Feedback:
- Receiving feedback is crucial for measuring your progress and understanding unspoken expectations.
- Ask for feedback early and often. Asking for feedback late on a project or presentation can lead us to be less receptive to criticism.
- Not all feedback will always be positive, it is important to learn to take good and bad feedback in stride.
We will practice giving and receiving feedback today.
After the workshop today, participants will be able to:
- Choose a framework for giving clear, direct feedback depending on the scenario.
- Reflect on the impact of feedback on personal growth and team dynamics
- Apply feedback techniques to real-world situations, balancing critique with encouragement
- Apply techniques for receiving tough feedback
Set up πΌ
- Pair up into groups of 2
The Activity π
First, read this article on mastering feedback in the workplace.
Read the following scenarios and role-play each. One person will be giving the feedback and one person will be receiving the feedback. After each scenario switch who is giving the feedback and who is receiving it.
For the person giving feedback, remember to:
- Be direct
- Use clear language
- Talk about behavior, not personality
- Be kind
For the person receiving feedback, remember to:
- Be available and approachable
- Accountable
- Steer clear of defensiveness
- Take a moment to reflect before responding
- Assume positive intent
Practice Giving Feedback [20 mins]
- Spend 3 mins on each of these scenarios.
- One person will be giving the feedback and one person will be receiving the feedback. After each scenario switch who is giving the feedback and who is receiving it.
- Situation, Behavior, Impact (SBI) Framework
The SBI Framework structures feedback in the following order:
- Situation: Describe the situation
- Behavior: Describe the behavior observed
- Impact: Explain the effect of the behavior on you, your team, or the organization
Try Applying the SBI method to the following scenario: A teammate consistently misses deadlines and when they finally do deliver their tasks, they are often not of good quality tasks requiring the rest of the team to redo portions of their work.
Objective: Use the SBI framework for giving feedback. Practice addressing issues of accountability, responsibility, and time management without demotivating the person.
- Observation, Feelings, Needs, and Request (OFNR) framework
The OFNR framework consists of four parts:
- Observation: Tell the other person the behavior you observe from them that is making you uncomfortable. “When I Observe⦔
- Feelings: Explain how the personβs behavior makes you feel (happy, sad, angry, annoyed, excited, worried, scared, hurt, embarrassed, confused) “I feel⦔
- Needs: Describe what you need from the other person (physiological, safety, social, esteem, self-actualization) “Because I need⦔
- Request: Ask them specifically what youβd like them to do. “Would you be willing to⦔
Try Applying the ONFR method to the following scenario: A team member gives an informative presentation that is too long-winded, going over an hour causing the audience to lose focus. This presentation will be used at the next client meeting which is only 1 hour long and needs to cover many other topics.
Objective: Use the (OFNR) framework to give the team member feedback. Practice providing feedback on communication skills, structuring information, and presentation techniques.
- Actionable, Specific, Kind (ASK) framework
The ASK framework focuses on the following attributes:
- Actionable: Address the actionable issue
- Specific: Be specific in your request.
- Kind
Scenario: A colleague dominates team discussions, interrupting others or dismissing alternative ideas without considering them. His behavior is often seen as grating or rude by the team.
Objective: Use the ASK framework to give feedback. Start by addressing the actionable issue and be specific in your request. Make sure it is delivered in a kind and understanding manner. Address how their behavior affects group dynamics and encourage a more inclusive approach, allowing others to share their thoughts.
- Goal, Reality, Options, Will (GROW) model
The Grow framework focuses on mentoring and guidance to give feedback
- Goal: Explore the individual’s goals
- Reality: Assess the current reality
- Options: Brainstorm options
- Will: Create a list of actions to commit to to achieve the goal
Scenario: A colleague is working towards a promotion to senior software engineer and has asked you for feedback on their performance. Although they have great technical proficiency you have noticed that they do not speak up during meetings unless directly asked and often wait for tasks to be assigned instead of taking initiative.
Objective: Use the GROW model to speak with your colleague.
Choose a Framework for Giving Feedback [10 mins]
We have looked at the following frameworks for giving feedback:
- Situation, Behavior, Impact (SBI) - Describe the situation, detail the specific behavior observed, and explain the impact it had.
- Actionable, Specific, Kind (ASK) - Start with an actionable issue, be specific in your request and make sure it is delivered in a kind manner.
- Observation, Feelings, Needs and Actions (OFNA) - discuss an observation, how it made you feel, what needs to happen to rectify this behavior and the actions they can take.
- Goal, Reality, Options, Will (GROW) model. Explore the individual’s goals, assess the current reality, brainstorm options, and commit to action. This model is best suited when the individual is already aware of the area to improve.
For the following scenarios, discuss with your partner which framework you think should be applied.
- Behavioral Feedback
Scenario: A team member frequently arrives late to meetings, affecting the team’s schedule.
- Positive Feedback for Improvement
Scenario: A colleague made significant improvements in their work, but thereβs still room for further development.
- Conflict Resolution
Scenario: Two team members have a disagreement about how to approach a project, leading to tension in meetings.
- Performance Review
Scenario: You are giving a formal performance review to a team member whose work has been solid but lacks creativity or initiative.
- Cross-Team Collaboration
Scenario: A team member from another department is not communicating well with your team, leading to delays and confusion.
Reflection π§ββοΈ [10 mins]
Come together as a group and discuss the following:
When giving feedback:
- What challenges did you face when delivering feedback?
- How did you decide which feedback framework to use? Would you choose the same framework in real life?
- Which framework do you find the most useful? Which did you struggle with the most?
- How did you balance providing constructive criticism with being supportive?
- Did the scenario feel realistic or exaggerated? How would you adapt your approach in a real-world situation?
- How do you think feedback methods can differ depending on the person or context?
When receiving feedback:
- How did the feedback make you feel? Was it easy to remain open to feedback?
- Were there any moments when you felt defensive? How did you manage those feelings? How might you manage those feelings in real-world scenarios?
- Was the feedback clear and actionable? How would you apply it to improve?
- How can you proactively seek out more feedback from your peers or mentors?
π« Morning Break
Please feel free to grab some coffee or tea or pray at this time if this is part of your religion .
π§° Workshop Activity
Learning Objectives
This space is for a workshop activity of your choosing. In order for this to actually happen, you must organise it ahead of time.
What is a MigraCode workshop?
π·πΏββοΈ No lectures
MigraCode workshops are designed to be interactive. Developed by volunteers and trainees, they are not about listening to a lecture. They are about doing, discussing, and learning together.
πͺπΎ No spoonfeeding
Workshops are also not tutorials, where you follow along step-by-step. MigraCode workshops are meant to expose gaps and mistakes in your understanding, so mentors can help you fix them. This means you should expect to be challenged and to make mistakes. This is the main value of mentor-led workshops.
ππΏ Responding to needs
You can run a workshop in person on class days, or online in the week. Mentors volunteer to run workshops on Slack, and learners propose topics they need help with. There are a huge number of workshops available at workshops.codeyourfuture.io/.
Organise a workshop on Slack

ποΈ Options
Debugging Is Asking Questions [Tech] (60 Mins)
π Debugging Is Asking Questions [Tech] (60 Mins)
Debugging is Asking Questions
Prep
- Re-read this article about Mental Models
- Watch this video about VSCode Debugger and follow along with the mini-workshop
- Open this CYF Workshops repo in VSCode and go to the
debugging/bankfolder to find the problem bank.
Whew, that’s loads! But we did set it all as coursework, so you have done it already, right? π
Today we’re going to use our formal language of developer questions. We began 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 really helps us with debugging. Today we will use a debugger and our scientific method to find and fix bugs. Recall your scientific method:
Recap asking questions
Predict & Explain
- Make a prediction by explaining what the outcome will be
Test
- Run the code to see what actually happens
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.
Setup
Get into pairs. Each pair consists of two roles:
- Computer: Execute the code mentally, predicting the outcome.
- Debugger: Use the VSCode debugger to step through the code.
You will swap roles after each exercise.
Set a whole class timer for 10 minutes.

Stepping
πΉοΈUnderstanding Variables and Flow, 10m
Identify the value of variables at each step in a loop.
const sumArray = (numbers) => {
let total = 0;
for (let i = 0; i < numbers.length; i++) {
total += numbers[i];
}
return total;
};
console.log(sumArray([1, 2, 3]));
Computer:
- Write down predictions for
totalandivalues before each loop iteration. - Compare predictions after each Debugger’s step.
Debugger:
- Open
sumArray.jsin VSCode. - Choose ‘Run > Start Debugging’ from the menu.
- Set a breakpoint at
total += numbers[i];. - Step into your function.
- Step Over through iteration until your loop is complete.
- Monitor
totalandiin the Variables section.
Debugging
Okay, swap roles. Set a whole class timer for 15 minutes.
πΉοΈFinding an Error, 15m
const findLargest = (numbers) => {
let largest = numbers[0];
for (let i = 1; i < numbers.length; i++) {
if (numbers[i] > largest) {
largest = numbers[i];
}
}
return largest;
};
console.log(findLargest([3, 7, 2, 5, 6]));
Debugger:
- Open
findLargestin VSCode. - Predict the return value of
findLargest. Write your prediction down. - Set a breakpoint at
if (numbers[i] > largest). - Debug and inspect
i,numbers[i], andlargest. - Write down the return value of
findLargest([3, 7, 2, 5, 6]).
Computer:
- Predict the value of
largestafter each loop iteration. - ‘Execute’ the code and write down the actual value of
largestafter each loop iteration. - Write down the return value of
findLargest([3, 7, 2, 5, 6]). - Now execute the code in VSCode. Did you get the same result?
Both (briefly) write up your mental model using this format:
- What I did
- What I expected. Make sure you include your prediction here
- What actually happened
Okay, swap roles. If you have time left and you’re into this, there are many problems stored in debugging/bank. Set a whole class timer for 15 minutes.
πΉοΈProblem Bank, 30m
Pick any problem from the bank and work through it together. Use the debugger and the scientific method to find and fix the bug.
Write up your findings in the developer question format. Swap roles and repeat until we run out of time.
π§πΎβπ»π Developer questions contain
- π Links π
- Objectives - what are you actually trying to do? π
- πΌοΈ Screenshots of UI π
- π
Code blocksπ - π·
Screenshots of codeπ
π Further reading
π 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.