Skip to main content

Studio Kickoff: Team Charters, Backlog & Estimation

Pixel art strategy map. On the left, four small crews gather at a warmly lit base camp and sign a scroll on a signboard. On the right, most of the map is covered in fog, and four scouts with lanterns walk into it, each revealing a small patch of terrain: a river, a cliff, a bridge, and a dead end. Tagline: Agree First. Then Scout the Fog.

Reminders​

  • FEEDBACK: Onboarding: Gradebook Column Groups, closed Thu Sep 24; feedback coming back shortly
  • RELEASED: Team Workspace & Charter, due Thu Oct 1
  • RELEASED: Declare Your Target Band, due Thu Oct 1
  • RELEASED: Reading Presentation, pairs and dates assigned today; sessions Oct 21, Oct 28, Dec 2
  • NEXT: Async Sprint runs Fri Oct 2 – Tue Oct 13; objectives ratified Thursday

CS 4535: Software Design & Delivery

Studio Kickoff: Team Charters, Backlog & Estimation​

©2026 Jonathan Bell, CC-BY-SA

Learning Objectives​

After this session, you'll be able to:

  1. Write a team charter that will survive a disagreement
  2. Break a vague backlog into scoped, claimable tickets
  3. Estimate work in an unfamiliar codebase, and know when estimation is theater
  4. Name and ratify your individual objective for the async sprint

Four Teams, Four Areas​

Paper Exams (3)

Generate, scan, and grade paper exams in Pawtograder. First milestone: PR #814 green and merged.

Cloud Workspaces (4)

Forgejo repo, Coder workspace, graded push. One intro assignment end to end.

Office Hours (3)

Usability sweep, user study, then one Discord integration the study picks.

Usability, Accessibility & Permissions (3)

System-wide audit and user research, then finer-grained staff roles.

Right now: open the Team Workspace assignment in Pawtograder. Check your teammates. Clone the repo.

Reading Pairs and Cross-Project Functions​

Reading presentations. Pairs, readings, and session dates are on Discord. Sessions: Oct 21 · Oct 28 · Dec 2.

Cross-project functions. Each teammate takes a different function. Write it in section 1 of your charter.

FunctionOwns
Release and CIActions pipelines, migration discipline, staging → production
AccessibilityWCAG defects, axe findings, a11y-judge
ObservabilitySentry, dashboards, game-day response
Docs and handoffmintlify-docs, ops playbooks, docs/
AI researchCLAUDE.md, AGENTS.md, evidence about agents

A Charter Is For Week Nine​

It's the set of agreements you make now, while everyone still likes each other, about what happens when somebody doesn't.

The syllabus sends every teammate grievance through it first.

"We'll communicate openly and respect each other's time."

"A PR with no review after 48 hours gets pinged in the team channel. After 72, the author can ask any other team's member to review."

The test: could you point at it during an argument and settle something?

Eight Sections​

  1. Who's on the team: energy, function, hours you can't be reached
  2. What we're shipping by Nov 23: in your words, plus a first milestone
  3. How we talk: which channel, where a decision counts as made, response time
  4. When we meet: both sync points booked, summary authors named
  5. How we decide: who owns what, what goes to the team, what happens on a split
  6. Definition of done for a PR: the checklist, plus one line only your project needs
  7. When it goes wrong: three scenarios, answered in writing
  8. Sprint objectives: filled in Thursday

Under two pages. Every teammate commits to it. Due Thu Oct 1.

Three Things That Will Happen​

A. A teammate misses two standups in a row and doesn't answer in the channel.

B. A PR has waited three days for review. The author's deadline is tomorrow.

C. Two of you disagree on an approach, and both approaches would work.

For each: who does what, by when, and at what point it comes to clinic.

Draft, Then Swap​

10 min, in your team. Draft sections 3, 5, and 7 in charter.md. Book both sync points (section 4).

4 min, swap. Hand your section 7 to the team next to you. They pick one scenario and try to find the gap. Where does your rule stop telling someone what to do?

1 min. Fix the gap they found.

Finish the rest by Thursday. Everyone commits.

From a Pitch to a Backlog​

"Make the office-hours queue something students and TAs trust."

Nobody can claim that. Break it down:

  • Epic: queue state students can trust
  • Story: a student's queue position updates when the person ahead of them is picked up
  • Tickets:
    • failing E2E test that pins the bug
    • fix the position count in useActiveHelpRequest
    • realtime update without refresh
    • what does a student see when their TA gets reassigned?

A Claimable Ticket​

One owner. One person can start it tomorrow without waiting on anyone.

A vertical slice. It changes something a user or a test can see. "Add the table" isn't a slice. "A TA can see a request's wait time" is.

Checkable done. Someone else can tell whether it's finished. That's your definition of done plus acceptance criteria.

Small. Mergeable inside the window you have. The first ticket gets two weeks, with Game Day 1 in the middle.

When You Can't Write the Ticket Yet​

Some backlog items are questions:

  • Where does the queue update get lost between the database and the browser?
  • How tightly is repo creation tied to GitHub?
  • Does PR #814's e2e job pass at all?

A spike is a ticket whose output is an answer. It has a timebox, and it has a question. When the timebox runs out, you write down what you know, even if the answer is "worse than we thought."

Your async sprint is a two-week spike, one per person.

Your Pitch, Your Backlog​

12 min, in your team. Start from your slate blurb.

  1. Write 6–8 tickets, as GitHub-style titles with one line of acceptance criteria each
  2. Mark each: claimable now, or question first
  3. For each "question first": what's the question, and which answer would change your plan?

Keep the list. The next arc estimates it, and the question-first ones are your sprint candidates.

Story Points Are Relative​

You're bad at "how many hours." Everyone is. You're much better at "is this bigger than that?"

  • Pick one small, well-understood ticket. Call it a 2.
  • Size everything else against it: 1, 2, 3, 5, 8, 13
  • The gaps grow on purpose. Nobody can tell a 9 from a 10.
  • ? means "I can't size this." That's a real answer.

Points turn into a schedule through velocity: how many points this team actually finishes in a sprint. You measure it, and it takes a few sprints to settle.

Planning Poker​

10 min, in your team. Take 3–4 tickets from your list.

  1. Read the ticket aloud. Anyone can ask a clarifying question.
  2. Everyone picks a card privately: 1, 2, 3, 5, 8, 13, ?
  3. Reveal at once.
  4. Highest and lowest explain. Then vote again, once.

Write down the first-round spread for each ticket, along with the final number.

The Spread Is the Data​

Tight spread (3, 3, 5): you understand the ticket the same way. Write the number down and move on.

Wide spread (2, 13): one of you knows something. Find out what, then vote again.

Wide spread after the second vote, or any ?: nobody knows. You can't estimate this ticket. It's a spike.

When Estimation Is Theater​

Points are worth it when you have velocity history, a codebase you know, and a schedule that depends on the number.

Right now you have none of the three:

  • no velocity, since this team has never finished a sprint
  • a codebase you met three weeks ago
  • an async sprint where nothing needs to merge

So for the next two weeks: don't point your spikes. Timebox them. After Oct 15, when you're picking implementation tickets, poker earns its keep.

The conversation was worth having. The numbers weren't worth writing down yet.

Spike Menu: Paper Exams​

Milestone 1 is #814, so someone is on it from day one.

  • E2, #814's E2E locally (reproduction): which specs still fail after merging staging, and why?
  • E3, #814's P1 findings (reproduction): reproduce each one and write its regression test
  • E4, page codes (spike): can a printed code survive a real copier scan?
  • E6/E7, where BYOK lives (research / spike): which provider layer, and where does a course's key live?

Full menu, with where to start: /docs/assignments/async-sprint-menu

Spike Menu: Cloud Workspaces​

There's no Codespaces code to replace. The coupling map is repos, webhooks, identity, and grading, in a 5,000-line GitHubWrapper.ts.

  • W7, Forgejo + Coder in your namespace (spike): SSO → repo → workspace: what breaks?
  • W3, Forgejo Actions as the grader (research): can grading keep GitHub's OIDC trust step, or does submission auth need a redesign?
  • W4, auth and identity (trace): is a second provider a column or a refactor?
  • W5 or W8, permission sync or #981 (trace / reproduction): how do permissions reach repos, and why does "ready" lie?

Full menu, with where to start: /docs/assignments/async-sprint-menu

Spike Menu: Office Hours​

Three people, three needs before the study: a baseline number, the realtime path, and a protocol.

  • O1, time to resolution (spike): what can the existing tables measure, and how far can you trust it?
  • O2, queue update to browser (trace): every "only updates on refresh" bug runs through this path
  • O7, interview protocol (research): 20 minutes, student and TA variants, recruitment plan
  • O4, queue position test (practice): a failing E2E test that becomes your first ticket

Full menu, with where to start: /docs/assignments/async-sprint-menu

Spike Menu: Usability, Accessibility & Permissions​

Your Ticket Hunt found a pattern: the UI lets you start something the backend refuses (#983, #996, #1010).

  • U1, one grader action, UI to RLS (trace): what check runs at each layer, and where do they disagree?
  • U2, drift inventory (spike): sample one area: UI looser, stricter, or matching?
  • U6, axe on SurveyJS (practice): what does axe find once the survey widget stops being excluded?
  • U8, user-research protocol (research): which tasks, who, and what consent script?

Full menu, with where to start: /docs/assignments/async-sprint-menu

Pick By Thursday​

  • One objective each. Where two overlap, split them cleanly or pick one.
  • The question has to change your plan. If every answer leads to the same next step, pick something else.
  • Your own is fine if your team ratifies it.
  • Think about Oct 15. Your First Implementation Ticket comes out of what you learn.

Thursday, end of class: each person writes one line in section 8 of the charter. Shape, objective, question. The team ratifies.

Up Next​

Wed Sep 30, User Research & Product Thinking

Two of the four teams have a user study on their plan. Wednesday is how you run one that tells you something you didn't already believe.

Before Thursday:

  • Team Workspace & Charter: sections 1–7 committed; section 8 in class Thursday
  • Declare Your Target Band, due Thu Oct 1
  • Pick your sprint objective from the menu, or bring your own