backlog

Module-Structuring-and-Testing-Data 🔗  

Expand all

Start Here

These tasks should be completed before attempting anything else.

Watch the VSCode Debugger Video 🔗 Clone

Watch the VSCode Debugger Video 🔗

Learning Objectives

Learning Objectives

https://code.visualstudio.com/docs/introvideos/debugging

Why are we doing this?

🧰 We are building a toolkit to help us write great software. In our toolkit we are collecting skills with:

📝 Specifications, like user stories, acceptance criteria, and Given/When/Then Help us understand what to write and check we’ve written the right thing.

🧪 Tests, like unit tests and assertions Help us break down our problems and check our solutions work even when we change things.

💬 Asking questions Helps us formally reason through our problems and identify gaps in our mental models.

🤖Playing computer Helps us reason about code with a mental model.

🦺 Audits, like Lighthouse Help us identify performance and quality improvements we can make to our code.

And now we can add debuggers to our toolkit.

🐛 Debuggers are tools that help us find and fix problems, or bugs, in our JavaScript code. They let us step through our code line-by-line while it runs to see what is happening. This helps us find the place where our mental model of the code is different from our implementation. Your browser has a debugger and so does VSCode.

Key reasons we use debuggers:

  • See what’s happening inside functions
  • Check if variables have expected values
  • Pause execution and step through slowly
  • Find exactly where mistakes happen

JavaScript debuggers give control over execution flow to methodically test and fix bugs. Watch the first four minutes of the video and then explore the VSCode Debugger on your machine.

Maximum time in hours

.5

How to get help

AI can help you here. Code along with AI so it has the context and ask it when you get stuck. Use this starting prompt:

Act as a friendly, supportive, knowledgeable programming mentor. I am learning the debugger in VSCode.Talk me through the interface step by step. Provide a simple example of a Node script with a bug in it and walk me through finding the bug by setting breakpoints with the debugger. Don't tell me what the bug is. When I get stuck, answer my questions in CEFR B2 English meant for an adult professional speaking in a second language. When I ask for hints, give me useful pointers. Say okee dokee if you understand and begin your walkthrough.

Remember to use careful prompting when you don’t understand, so you get real learning out of the exchange. Say things like:

The execution is paused and it shows me that is undefined and is undefined, but I don't understand why it says that. Can you explain this to me?

And remember you should always ask your friendly humans in Slack when you get really stuck. This coursework will be set again in later modules, so if it’s beyond you right now, you’ll pick it up later.

Check your setup 🔗 Clone

Check your setup 🔗

CYF VS Code extension pack

Why are we doing this?

You must have the CYF VS Code extension pack installed and Prettier enabled. Don’t use another formatter.

🧹 Formatting with Prettier

Using a shared formatting convention makes sure your “diffs” ( differences between the codebase and your changes) only show the code you intentionally wrote, and not a bunch of spaces or tabs. It will also help you read your own code as you work on it.

  1. In Visual Studio open the settings file (Code > Preferences > Settings)
  2. Search for editor format
  3. Set and to
  4. Set the “Default Formatter” to be Prettier
  5. In your editor, write some html and save the file. It should be formatted (indented) automatically.

Maximum time in hours

.15

How to get help

Ask for help on Slack if you are having trouble with Prettier. We will work together on the same files in some workshops, so if you don’t have this set up, you will be blocked and unable to participate.

How to submit

It will be entirely obvious if you don’t do this. 😜 We can all see!

During this module

These tasks can be completed at any point during this module. Don't leave them to the last minute!

Give a demo in a demo session 🔗 Clone

Give a demo in a demo session 🔗

Presenting information is really important. You need to start practicing giving demos.

During this module, you must attend at least one demo session, and give at least one demo. We recommend you come to more, and give more. But you are required to do at least one. Your demo can be on anything you want. You can give this demo in any sprint.

There are demo sessions every Monday evening and Friday morning. They are advertised on Slack.

Aim for a 5 minute demo. But your demo must be at least 1 minute and at most 10 minutes long. Check out our guide about presenting.

You can present anything you want. If you’re stuck for ideas, some examples:

  • Explain a term you have learnt and show how it works
  • Tell us about a blocker you experienced and how you tackled it
  • Show something you have made
  • Show a tool that assists your learning
  • Tell us about your dream job and how you will get there
  • Teach us something about one of your hobbies

You will need to attach a screenshot when submitting your Step for this Module. Make sure to take a screenshot of you presenting on the call, showing that one of the following members of CYF staff was on your call and gave you feedback:

  • Daniel Wagner-Hall
  • Karen Klein
  • Colin Farquhar
  • Poonam Rajput
  • Léon McGregor
  • Liam Greenfield
  • Abdi Saeed

If you are not available during any of the demo times, please message on Slack to arrange an alternate time.

Mentored coding - education team 🔗 Clone

Mentored coding - education team 🔗

A mentored coding session is an opportunity for you to work on a problem with a mentor. They will be there to support you and to help you develop your ability to communicate technically and break down problems.

If your region has education team support, you are required to attend this session with your assigned member of the education team. If you don’t yet know which member of the education team you should be having regular sessions with, please send a message to your cohort’s ITP slack channel.

You should come to the session with a problem to work on. We recommend a Codewars exercise, but it could be a backlog task, or a project you’re working on.

See the mentored coding guide for guidance.

Remember, as a trainee, you will need to explain your thought process, plan out what to do, write the code and check it works.

Mentored coding - volunteer 🔗 Clone

Mentored coding - volunteer 🔗

On top of mentored coding sessions with members of the education team, there is also the option to book additional sessions with a volunteer.

The expectation is the same as with other mentored coding sessions: you should come to the session with a problem to work on. We recommend a Codewars exercise, but it could be a backlog task, or a project you’re working on.

See the mentored coding guide for guidance.

To book time with a volunteer, use one of the Scheduling links in the #cyf-mentored-coding slack channel’s canvas not listed as “EDU TEAM”. If there are no available times, you may want to post in #cyf-mentored-coding to see if any volunteers have further availability.

Remember, as a trainee, you will need to explain your thought process, plan out what to do, write the code and check it works.

Mentored coding - volunteer 🔗 Clone

Mentored coding - volunteer 🔗

On top of mentored coding sessions with members of the education team, there is also the option to book additional sessions with a volunteer.

The expectation is the same as with other mentored coding sessions: you should come to the session with a problem to work on. We recommend a Codewars exercise, but it could be a backlog task, or a project you’re working on.

See the mentored coding guide for guidance.

To book time with a volunteer, use one of the Scheduling links in the #cyf-mentored-coding slack channel’s canvas not listed as “EDU TEAM”. If there are no available times, you may want to post in #cyf-mentored-coding to see if any volunteers have further availability.

Remember, as a trainee, you will need to explain your thought process, plan out what to do, write the code and check it works.

Mandatory Tasks

These tasks will help consolidate your learning for this sprint. You should complete as many of these as possible before class on Saturday.

Do the Prep

Do the Prep

https://curriculum.codeyourfuture.io/itp/testing/sprints/1/prep/

Why are we doing this?

https://curriculum.codeyourfuture.io/how-this-works/sprints/self-educate/prep/#importance-of-prep

The first thing you should do every week is the prep. The prep will help you do everything else. The prep teaches you the main concepts of the week and then the coursework provides projects and exercises to help you consolidate and practice that learning.

If you have gone straight to the coursework or straight to class and you haven’t done the prep first, then go back and do the prep.

Maximum time in hours

5

How to get help

  1. Share your blockers in #cyf-questions-support. Take the opportunity to practice asking your question like a developer: https://curriculum.codeyourfuture.io/guides/asking-questions
  2. Book a mentored coding session in the #cyf-mentored-coding channel
  3. Attend a mid-week study session online
  4. Write down your questions and bring them to class

You should do the prep every week.

Mandatory Sprint 1 Codewars Katas 🔗 Clone

Mandatory Sprint 1 Codewars Katas 🔗

Learning Objectives

https://www.codewars.com/collections/cyf-structuring-plus-testing-data-sprint-1-mandatory

Learning Objectives

Why are we doing this?

Every week, you need to complete all of the katas in the collection. If you have extra time, you can do extra katas (either from the stretch codewars task or at random on CodeWars).

Spend at least 20 minutes per kata, find time at least three times a week to complete this.

Find the Collection called “CYF Structuring + Testing Data | Sprint 1 | Mandatory” on the CodeYourFuture account.

Check your Codewars completion status via the Codewars Progress Checker.

Maximum time in hours

2

How to get help

Join the #cyf-codewars Slack channel Read the CYF Codewars docs Read Codewars advice from CYFers Read Codewars advice from mentors Book a mentored coding slot from the available appointments in the CYF Mentored Coding Slack Canvas

How to review

Once you have completed your kata, look at the other solutions in the solutions view. Consider how many different approaches there are.

Review your development plan 🔗 Clone

Review your development plan 🔗

Learning Objectives

Learning Objectives

Why are we doing this?

Using the Build Your Life plan and your first version of your Career Development plan, we want you to continuously think about the goals you want to achieve: short/medium/long-term. These should be linked to the areas you want to develop. This will help to give you perspective and clarity of where your direction is and if you are doing the right things to get there.

Remember: 2-3 areas are enough to change in such a short time, so it’s better to focus on a few, get them nailed, and then choose another area.

Ensure you are not only thinking of technical knowledge you want to acquire but especially skills and processes that will help you become a developer.

Examples of goals

  • Short term: Practicing coding = Code 1 hour a day on weekdays
  • Medium-term: Enhance my written English = Trying to correct by myself the errors that the automated grammar tool is showing in my text
  • Long term: Get a job in tech = Send 1 tailored CV per day when I have graduated from Code Your Future

Maximum time in hours

0.5

Submission & Review

Your development plan is your own and so there is no need to submit it for review. If you would like feedback you could share it with a mentor or peer you respect and ask for their advice.

Workshop Preparation: Asking Questions 🔗 Clone

Workshop Preparation: Asking Questions 🔗

Why are we doing this?

This week in class there is a workshop scheduled which will cover asking technical questions. To help you prepare for that you should read these articles:

Submission & Review

There is no need to submit anything for this exercise.

Workshop Preparation: Screen Safari 🔗 Clone

Workshop Preparation: Screen Safari 🔗

Read the Screen Safari workshop we’ll be doing on Saturday. Think about what you’re going to demonstrate to the class. Make sure you can quickly open it in class to share.
Writing an email for an internship 🔗 Clone

Writing an email for an internship 🔗

Learning Objectives

Learning Objectives

Why are we doing this?

The first stage in applying for any job will be writing to someone at the company to introduce yourself and explain why you are a good fit for the role. This assignment will give you an opportunity to practice writing in this way.

Draft an email to apply for an engineering internship at a fictional company called Vonda. Make sure to include the five things below:

  1. Why you want to become a software developer
  2. Your background and your past
  3. What you are doing at the moment
  4. Where you see yourself in the future
  5. Why Vonda should give you the opportunity to do an internship

The email should be formatted in a way that is ready to be sent. Make sure you include a subject title and pay attention to the formatting (font type and size, alignment etc).

Maximum time in hours

1

Submission & Review

Create the Google Doc in your own Google Drive. Ensure the document can be opened and commented on by reviewers - you can find out how to do that here. Share the link to the document in a comment on this issue in your planner.

Exhaustively test and fix formatAs12HourClock 🔗 Clone

Exhaustively test and fix formatAs12HourClock 🔗

Learning Objectives

Task code

CYF-1197 - make sure to include this in your PR title or description.

https://github.com/CodeYourFuture/Module-Structuring-and-Testing-Data/tree/main/format-clock-edge-cases

In the prep, we looked at a formatAs12HourClock function, and we fixed some bugs in it.

It still has bugs. Think of as many edge-cases as you can with this code. Write tests for all of them, and fix this code so that it works correctly for all valid inputs. You don’t need to worry about invalid inputs (e.g. "25:00").

Optional Tasks

These are optional "stretch goals" to attempt when you have finished the mandatory tasks. They may be more challenging or require some additional research.

Stretch Codewars Katas 🔗 Clone

Stretch Codewars Katas 🔗

Learning Objectives

https://www.codewars.com/collections/cyf-structuring-plus-testing-data-stretch

Learning Objectives

Why are we doing this?

Every week, you need to complete all of the katas in the collection. If you have completed the mandatory katas for a sprint, you can try these stretch katas.

Spend at least 20 minutes per kata.

Find the Collection called “CYF Structuring + Testing Data | Stretch” on the CodeYourFuture account.

Check your Codewars completion status via the Codewars Progress Checker.

Maximum time in hours

1

How to get help

Join the #cyf-codewars Slack channel Read the CYF Codewars docs Read Codewars advice from CYFers Read Codewars advice from mentors Book a mentored coding slot from the available appointments in the CYF Mentored Coding Slack Canvas

How to review

Once you have completed your kata, look at the other solutions in the solutions view. Consider how many different approaches there are.