1 of 18

Working With the Customer

Armando Fox

2 of 18

Working effectively with customer: Why should you care

  • Single biggest project advice from your peers in 2 previous offerings:

1) frequent team communication (standups)

2) effective customer communication

3 of 18

Customer meeting ≠ TA checkoff in lab

  • You drive & show customer stuff? �No—customer should have already driven
  • You show “this works on my computer”? �No—it should work in production
  • Show up dressed for lab?�No—attire & demeanor tell customer how much you respect their time & effort
  • Show up at “Berkeley time”?�No—in the real world, 9:00 means 9:00

4 of 18

Before the meeting

  • Ensure customer receives access to latest version of app well in advance of meeting
  • Ensure customer & team have common access to last meeting’s minutes/notes, including stories agreed on, storyboards, etc
  • Note any specific comments/questions from customer to address as action items

4

5 of 18

During the meeting

  • Cell phones/laptops off except to take pictures or take notes specific to meeting
    • One person takes notes/keeps minutes
  • No multitasking: everyone focused/engaged
  • Typical agenda:
    • Revisit action items from last meeting
    • Get customer feedback on new features
    • Discuss & prioritize new features & fixes
    • Mockups/storyboards as needed for discussion (sketch as you go, revise later)

6 of 18

After meeting

  • Followup as soon as possible with email summarizing shared agreement
  • Enter new stories into Tracker (can edit later after followup with customer)
  • Pitfall: not using stories to track “minor” changes (CSS changes, etc.)
    • make it a story or you’ll lose track of how much is really left to be done
  • Arrange to contact customer to “finalize” agreement on stories

7 of 18

A remote meeting is still a meeting

  • Much harder to be effective than f2f
    • nonverbal cues (facial, gestures, etc.) missed
    • “floor switching” on Google Hangouts etc. distracting; requires strict floor control
  • Don’t multitask—even more important
  • Use good quality mic (or headphones) so you can be understood
  • Have screenshots, diagrams, etc. prepared in advance so don’t need to screenshare

8 of 18

“Iteration 0” meeting

  • Introduce yourselves briefly
  • Introduce how project meetings will work
  • Listen and understand customer’s business
  • Suggested: record, with customer permission
  • Goal: rough idea of which features will be mst important in Iter 1
  • Non-goal: decide Iter 1 stories
  • Goal after meeting: stand up or create app & Tracker

8

9 of 18

Good Meetings: SAMOSAS

  • Start and stop meeting promptly
  • Agenda created in advance; no agenda, no meeting
  • Minutes recorded so everyone can recall results
  • One speaker at a time; no interrupting talker
  • Send material in advance, since reading is faster
  • Action items at end of meeting, so know what each should do as a result of the meeting
  • Set the date and time of the next meeting

Minutes and action items record results of meeting, start next meeting by reviewing action items

9

(Photo by K.S. Poddar. Used by permission under CC-BY-SA-2.0.)

10 of 18

After the meeting:

Pre-iteration Tasks

10

11 of 18

Meeting Debrief

While meeting is fresh in your mind:

  • organize notes
  • start to form scenarios/epics
  • may consist mostly/entirely of changes/fixes to previous stories!
    • This is normal! These can be new stories
  • Tracker should be project hub
    • sketches, design docs, GDocs can be attached to epics/stories

11

12 of 18

(After customer meeting) �IPM: “the three P’s”

  • Choose Product Owner (“voice of customer”)
    • Rotate this role each iteration!
  • Goal: get to SMART stories
    • how specifically do you know story tasks?
    • If in doubt, break down into smaller stories
    • No shame in lots of 1-point stories
    • Beware of dependencies
  • Points: try “planning poker”
    • “1, 2, 3…vote” on points
    • if disagreement, discuss why
    • try to be specific about what needs to be done
  • Prioritization (based on P.O. guidance)

12

13 of 18

Agile iteration (starting after customer meeting debrief)

  1. IPM: point & prioritize stories
  2. Developer/pair claims story (=> “started”)
  3. Create topic branch for feature
  4. Work from story to develop tests/code
  5. Pull request (opt. rebase first)
  6. Comments/discuss/repeat
  7. Merge
  8. Deploy to staging
  9. Customer signoff
  10. Pull request to Golden Repo

13

14 of 18

Collective Ownership

Each team member has pretty good holistic idea of codebase—not just their own code

  • Planning poker helps: each team member sees/votes on all candidate stories
  • Pull Request reviews: go out of your way to review code “outside” your comfort zone
  • Goal: high “truck factor”
    • # of people on team who know important stuff that nobody else knows
    • low is bad: 1 means there is a particular person whose departure would doom project

14

15 of 18

Tracker is not a to-do list

The whole point is to get better at effort estimation. 1-point stories are fine!

  • Started: someone claims story
  • Finished: code & tests complete
    • open PR; while(notes) { edit feature branch }
  • Delivered: deploy to staging, notify client
    • may have multiple staging deploys!
  • Accepted: client or Prd Owner sign off
    • merge to main branch
    • optional: PR to main branch of golden repo

15

16 of 18

Tip: Use Tracker to track course deliverables too!

  • Each deliverable (customer interview, coach meeting, etc.) a chore with its own due date
    • Can track if done, who did it, when
    • Can attach document(s) to chore card containing actual deliverables (eg meeting notes, written critique, etc.)
  • Centralizes all to-do info in one place
    • Thanks to: Jeremy Park, CS169 F’16

16

17 of 18

LOCAL

Branch

START

CREATE BRANCH

COMMIT

DEPLOY

Staging

FINISH

DELIVERED

ACCEPT PULL REQUEST

PULL REQUEST

ACCEPTED

ACCEPT PULL REQUEST

Golden Flow (extended)

DEPLOY

Production

CI

CI

CI

PULL

CI

GOLDEN

ORIGIN

CI

Branch

PULL REQUEST

PUSH

COMMIT

PUSH

CLONE

FORK

COMMIT

PROJECT MANAGEMENT ACTION

(e.g. PivotalTracker)

DEPLOYMENT MANAGEMENT ACTION

(e.g. Heroku)

CODE MANAGEMENT ACTION

(e.g. Github)

CONTINUOUS INTEGRATION

BUILD & TEST

(e.g. TravisCI)

Developer

Customer

v0.4

Master

Master

Master

PULL

CI

18 of 18

LOCAL

Branch

START

CREATE BRANCH

COMMIT

DEPLOY

Staging

FINISH

DELIVERED

ACCEPT PULL REQUEST

PULL REQUEST

ACCEPTED

ACCEPT PULL REQUEST

Golden Flow (extended) Current TPA Support

DEPLOY

Production

CI

CI

CI

PULL

CI

GOLDEN

ORIGIN

CI

Branch

PULL REQUEST

PUSH

COMMIT

PUSH

CLONE

FORK

COMMIT

PROJECT MANAGEMENT ACTION

(e.g. PivotalTracker)

DEPLOYMENT MANAGEMENT ACTION

(e.g. Heroku)

CODE MANAGEMENT ACTION

(e.g. Github)

CONTINUOUS INTEGRATION

BUILD & TEST

(e.g. TravisCI)

Developer

Customer

v0.4

Master

Master

Master

PULL

CI

75% correlation

(90 days <)

75% correlation

75% correlation

75% correlation