Skip to main content

Requirements

Welcome to Fundamentals! In this course we will explore the fundamentals of software development by going through this cycle: Requirements, Iteration, Delivery. Each day we will go through each stage and each week we will explore a stage in depth.

Requirements - in week one we will explore requirements. What are requirements, and how do we use the idea of requirements to help us develop complex systems in small, approachable steps? We’ll find out today.

Iteration - in week two we will explore iteration. Iteration means to repeat. Developers do many small iterations to build software, each time adding or changing some small thing. This is why your phone is always updating: each new version is an iteration. If developers waited until software was perfectly ‘finished’, it would never be delivered.

Delivery - in week three we will explore delivery. Delivery is the catch-all term for shipping your code, or putting it in online, in a public place where real people can use it. This ability is key to being a successful professional developer.

Learning objectives | Course Goals


Welcome

Trainee Agreement, Code of Conduct & House Rules

While you're at Code Your Future, we expect you to follow some rules. This is so that everyone has a fun, productive and enjoyable experience.

You have read through the Trainee Agreement, Code of Conduct and House Rules before coming to class.


Learning objectives

Slack (15mn)

You should have installed Slack on your computer and phone during your class preparation.

Post 5 interesting things about yourself in a thread.


Professional Development starts here

Today is the very beginning of your career journey, and it starts by thinking about your professional development journey.

Exercise (15 minutes)

In groups of five.

Introduce yourself. Why did you apply to CYF? What is one goal you have achieved? What is your career goal?

Exercise (15 minutes)

In groups of five.

Discuss why you want a job in tech and name three actions you will take as a commitment to your journey into your career. Will you keep up to date with job opportunities by researching roles? Will you build side projects to make yourself stand out? Will you commit to CYF?

Code.org

Code.org is a block based programming tool. We will use something similar to build our course project. Let's look at Code.org together now and work through the first two exercises. A mentor will share their screen.

Exercise (20 minutes)

Go to Course Three, Lesson 2: The Maze

  1. Look at the interface together
  2. Everybody open the interface on their own computer as well
  3. Complete the first exercise
  4. Complete the second exercise

Iteration: CYF Blocks

For the majority of this course, we will use a custom CYF application called CYF Blocks. It uses the same visual programming editor, Block.ly, as Code.org, but you will use it to create JavaScript for real websites you can show others.

Let's all look through the interface together now, and do one exercise as a group.

Exercise (20 minutes)
  • Look at the interface together
  • Everybody open the interface on their own computer as well
  • Complete all steps of the first exercise

Requirements

Telephone

Exercise (15 minutes)

In groups of no more than 5, we’re going to play a game of telephone.

Telephone

Communication is hard. Today, let’s explore some ways we communicate with each other in software development. It’s not enough to draw a picture of a website and assume the other person will build what you imagine. It’s never a good idea to assume shared context or shared interpretations.

So how do we understand what to do? By understanding requirements.

Formalising Requirements

Today we're going to think about requirements. We're going to ask these questions:

  • why we're working on a project
  • who we're making it for
  • what they're going to use it for.

Before starting to solve a problem (how), step back and ask yourself those why, who, and what questions.

We're going to think about a few projects and discover some requirements. This is really important in order to do technical work, but you don't need to have any coding experience, or be thinking about coding, when doing this.

Remember

To make great software, we need to think about people, not just code.

User Stories

We can discover requirements with something called 'User Stories'. The simplest user story looks like this:

As a [type of user], I can [achieve some goal].

🔑 Key term

A user story is a short sentence stating some goal a user can expect to achieve when using the product we are implementing.

Imagine a coursework tracker

As trainees, you have coursework to do. Imagine a website which tracks how coursework is going for you all. Thinking about that website, some user stories could be:

  • As a trainee, I can ask for help with a topic or task.
  • As a mentor, I can see who needs extra support.
  • As a trainee, I can see what coursework I need to complete and when.
  • As a mentor, I can see what coursework has not been turned in.

These each take the form "As [who], I can [what]". They don't say why yet.

Exercise (10 minutes)

In groups of about 5.

  1. Talk about why the "who" is useful. What would we be missing if we didn't think about the "Who"?
  2. Now think about the "why" for each of the listed user stories. Why are they important?

Discover requirements

As a [who], I can [what] so that [why]

Exercise (10 minutes)

Write some user stories for our coursework tracker on a Jamboard.

Think about the "who", "what", and "why" for each.

You can think of new "who"s (e.g. the people who write the coursework questions), and as many "what"s as you want - but make sure you remember the "why".

Reflecting

Exercise: Reflection (10 mins)

Why do you think thinking about user stories may be useful?

What's useful about thinking about the "who" and the "why"? What could go wrong if you don't think about them?

Ship It

The last thing we will do today is ship some code, because we expect you to ship very often at CYF.

You're going to be working on and developing your own projects over the Fundamentals course, so let's begin with your personal home page. In Intro to Digital (ITD) you built a Personal Home Page to complete the course. Now we’ll ship it to become a “real” website. When developers talk about shipping or deployment they mean turning the version that they’re developing into something that users can access.

tip

It's important that software works and that we can use it!

You will need:

  • Your personal home page on Codepen
  • An account with Github and to be logged in
  • An account with Netlify, so sign up now using the “Sign up with Github” option
Exercise

You’ll export your page to a folder on your computer, upload it to Github, and deploy it to Netlify.

Step by step

Step One : Codepen

Find your landing page on Codepen and click Export > Export as zip

Step Two : Github

  1. Create a new repo by going to repo.new or by clicking the + icon in the top navigation
  2. Leave the Repository Template as “No template”
  3. Type in a name for your project. It can be anything, but “landing-page” or “tribute-page” are probably good choices
  4. Leave the rest of the options as the defaults
  5. Click “Create repository”. Once it’s created it will take you to your new repo
  6. Now click the link to upload an existing file, which takes you to https://github.com/YOUR_GITHUB_NAME/YOUR_PROJECT_NAME/upload
  7. Find your downloaded zip file on your computer, unzip it and drag the folder on to your Github web interface.

Step Three: Netlify

  1. Log in to Netlify and follow this workshop to deploy your site. https://syllabus.codeyourfuture.io/workshops/deployment/workshop/instructions

  2. 🎉 Congratulations! You shipped it!

Stretch goal?

Follow the instructions in the workshop to change the site name to YOUR_GITHUB_NAME-home-page

Retro

A mentor will briefly explain what a retro is and then we will do a short retro together using Figma. Set a timer for 15 minutes.

Coursework

Find the coursework for this week on the coursework page.

Feedback

Spend two minutes reviewing this session to help us improve it for the future. This feedback will be shared with volunteers.