About Pivotal Labs “Transform the way the world builds software” ● Founded in 1989 - knowledge leaders in agile ● Startups and enterprises co-innovate with us ← Consulting Biz ● Pivotal Tracker (top project management tool) ← SaaS Product ● Now 8 offices, 500+ Pivots ● 100% TDD + Pair Programming + XP Agile
● Clear roles ● Consistently applied process ● Small user stories ● Pairing + TDD + CI ● YAGNI!
Who’s who on a Pivotal Project Anchor Designer Client Liaison Product Manager Client PMs and Engineers are Pivots encouraged to join the team
Writes user stories, owns the backlog & priorities, accepts delivered stories. Defines guardrails. Supplies UX vision, assets, and research Responsible for technical execution; process Deliver stories + tests
Team characteristics ● Co-located (or pairing remotely) ● Autonomous ● No politics / assume good intentions Everyone shows up on time, and is on the same (general) schedule.
Projects When starting a new project, we always begin with an inception - we let it take all day. 1. Building a brand new product offering / MVP 2. Major Feature / Next Phase 3. Plumbing / Infrastructure
Typical Inception Agenda 1. Overview from main stakeholder / Product Manager 2. Goals & Success Metrics 3. Risks / Risk Mitigation 4. MVP Workflows / Epics 5. User Story Scoping 6. Next Steps
Other Meetings Have them when you need them. Limit full-team meetings to: ● Daily Stand-up ● Weekly IPM (iteration planning meeting) ● Weekly Retro
A Typical IPM 1. PM reviews unestimated user stories, and answers any questions related to them 2. For each story, an engineer volunteers to describe how they might implement the story ○ YAGNI! 3. The team estimates the story with story points ● Goal is to always have enough stories estimated to take the team through the next iteration (one week) 4. Engineers prioritize chores - PM (mostly) deals with it
What Agile Means To Us
Agile → Flexibility & Predictability ● Iteration: A unit of time to measure velocity ● Velocity: Total story points delivered in an iteration. Usually use average of past 3. ● Volatility: Measures predictability (std deviation / mean velocity) * 100 ● YAGNI!
Building software is a process of continuous iteration User Feedback / Business Needs Add Stories Deliver Test Release to Backlog MAY happen periodically. Happens all the time The only part of the process that may not be continuous. Pivotal Labs flavor of Agile emphasizes continuous work and delivery, which is different from sprint-driven / traditional “scrum”
Releases ● Types: ○ Scope-based release ○ Date-based release ○ Scope & date-based release (does not exist!) PM plans small, frequent releases by identifying them in the backlog, but the team can (generally) release any time. ● YAGNI!
As a PM, I want a guide for writing great user stories, So that my team will love me.
A Good User Story Title: Sales Rep should be able to download a Proposal as a PDF Description: As a sales rep, I want to be able to download a PDF for a proposal, so that I can send it to a prospect. Acceptance Criteria: Given I visit the proposal summary page When I click the “PDF Download” button Then A PDF file is downloaded to my computer Resources: Example PDF, showing the desired format and all fields to be included; A mockup showing the PDF Download button
Checklist - Is this a great user story? ❏ Is the persona or user type clearly identified? i.e. the Sales Rep ❏ Does the story have a clear beginning and end? i.e. Sales Rep starts on the proposal summary screen and ends with a downloaded PDF ❏ Does the acceptance criteria satisfy the persona’s goals? i.e. I want to… so that I can email it to a prospect ❏ Are resources attached to describe all (non-obvious) details important to the business and the user? i.e. an example PDF to show the specific format and specific set of fields to be included ❏ Does the story represent the smallest amount of verifiable functionality that provides incremental value?
CI / TDD - your key (silent) partner ● TDD - Red, Green, Refactor ○ Creates a bias towards more tests than you would ever imagine you need ● CI always run on push - fixing broken builds takes precedence over everything else ● Fewer bugs, ability to release without regression, → velocity, predictability