Unit 2 · Programming 1 · Lesson 2.9

How Software Actually Gets Made

Nobody writes a working app top to bottom in one go. Real software is built in loops and pieces — and usually by more than one person.

Big Idea 1 — Creative DevelopmentProcess, not magic

Before this lesson — read on Runestone

The CED’s take on how development and collaboration work. Enrolled in our Runestone course? Open it from there so your progress counts.

1

Where We Are

People→ Bits→ Programs→ Internet→ Security→ Big Data→ Impact

A step back inside Programs. You’ve been writing code; today is about the process around it — the part the Create PT actually grades, and the part that separates “I typed something” from “I built something.”

2

The Hook

Version 1 is always ugly. The apps on your phone did not arrive fully formed. Every one started as a rough, broken first draft that got fixed, extended, and reshaped hundreds of times. The polished thing you see is the last version, not the first.

That’s liberating news for you: your first draft is supposed to be rough. The skill isn’t writing perfect code once — it’s having a process that turns a rough draft into a good program, reliably. Today you learn that process and the words the exam uses for it.

3

The Idea

Software is built two ways at once, and the exam wants you to tell them apart:

ApproachMeansPicture it
Iterativerepeat and refine the same part until it’s rightredrafting one paragraph over and over
Incrementalbuild in separate pieces, then combine themwriting chapters, then assembling the book

They work together: you build one increment (a piece), then iterate on it until it’s solid, then add the next piece. Around the code sit two habits the CED names directly — investigating (before you build: who is this for, what exactly should it do?) and reflecting (after: what worked, what would you change?).

Investigating produces a program specification — a clear statement of what the program must do, agreed before coding. Your purpose sentence (2.5) is a tiny spec. Real projects have bigger ones, and skipping this step is how teams build the wrong thing beautifully.

Pair programming. Two people, one screen. The driver types; the navigator watches, catches mistakes, and thinks one step ahead. You swap every ten minutes, so both stay sharp and both understand the whole thing. It sounds slower and usually isn’t — two sets of eyes catch bugs before they cost an hour. This is collaboration, and you’ll do it for real in the 2.10 lab tomorrow.
4

Try It — Iterative or Incremental?

Each scenario is one or the other. Refining the same piece is iterative; adding a new, separate piece is incremental. Decide, then check.

0 of 4 classified
5

Vocabulary

iterative development Programs
Repeatedly refining and improving a part of a program — building, testing, adjusting, and repeating — rather than finishing it in one pass.
incremental development Programs
Building a program in separate pieces or stages and combining them, so each part can be developed and tested on its own.
program specification Programs
A clear description of what a program is supposed to do, produced by investigating a problem before writing code.
collaboration Programs
People working together on a program — for example, pair programming with a driver and a navigator who swap roles.
6

Check

Five questions in AP format. Pick an answer for instant feedback.

0 of 5 answered
7

Impact Check

Why a diverse team writes better software

A famous example: an early automatic soap dispenser worked for some people and not others — it failed to detect darker skin tones, because the team that built and tested it didn’t include anyone it would fail on. The code wasn’t “buggy” in the syntax sense. It ran perfectly. It was built and tested by too narrow a group to notice who it left out.

This is the CED’s point about collaboration, and it’s genuinely testable: diverse teams catch design flaws that homogeneous teams miss, because more kinds of people means more kinds of “wait, this breaks for me.” It’s the same “whose case did we forget?” question from the username lesson (2.7) — now applied to who’s in the room, not just what’s in the code.

8

Connections

Came from 2.8 — since every program breaks, you need a process that expects breakage: build a piece, iterate until solid, add the next.
Uses 2.5 — the purpose sentence was your first program specification. Real projects just have bigger ones.
Next in 2.10 — you run this for real: a paired Mad Libs lab with driver, navigator, and a ten-minute swap.
Returns on the Create PT — the exam grades your process and collaboration, not just your code. Iterative refinement and reflecting are the words to use in the written response.
← 2.8 When Programs Go Wrong