Shape Up

Shape Up

Author

Ryan Singer

Year
2019
image

Review

Shape Up is an incredibly refreshing read. It’s opinionated, new and different. Ryan does a great job of describing a delivery system, that addresses some of the most common challenges in building and shipping software. Adopting the methodology lock-stock-and-barrel will be too much for most teams, but it has you wondering what could I borrow? Great read.

You Might Also Like:

image

Key Takeaways

The 20% that gave me 80% of the value.

  • Common pain points: Long projects, no time for strategic thinking, velocity falls over time
  • Shaping is up-front design work, that sets boundaries and reduces project risk before handing over to development teams

Part 1: Shaping

  • Shape at the right level of abstraction.
    • Too vague → Just right ← Too concrete
    • Wireframes are too concrete
    • Words are too abstract
  • Shaped work should be rough (room for the team, solved (thought through) and bounded (limited in scope).
  • Shaping defines what the feature does, how it works and where it fits into existing flows
    • Why does it matter? What would success look like? What customers are affected?
  • A two track process: shaping (done outside the team), building (done by the team)
  • Steps to shaping:
    1. Set boundaries
      • Start with the idea.
      • Set the appetite: How valuable is the idea?
        • How much time and attention does it deserve?
          • Small Batch (1-2 weeks)
          • Full Cycle (6 weeks)
      • Adopt Fixed time, variable scope
      • Watch out for grab-bags (refactors and redesigns are the worst offenders). Split these projects into smaller projects.
      • Your boundaries are in place when you have…
        • An Idea + an appetite + a narrow problem definition
    2. Find the elements
      • Move from words to elements of the software solution
        • What are the key components or interactions?
        • Where does it fit? How do you get to it?
        • Where goes it take you?
      • Try things at a high level (Breadboard)
        • Places: things you navigate to
        • Affordances: things a user can do
        • Connection lines: how affordances take the user from place to place
        • Elements are the output
      • Fat marker sketches make it impossible to add too much detail
      • Leaves room for designers
    3. Address risks and rabbit holes
      • Look for the pitfalls you can find up front and eliminate them before betting
      • Projects should have independent, well—understood parts that fit together in known ways
      • Walk through a use case in slow motion, every step. Look for holes in the concept, or edge cases that break the design or flow
      • Think about technical viability
      • Shapers prioritise quality and reduce risks. Keep elements that make the project worth doing? Can you cut off the big tail of risk?
      • Declare what you won’t do
      • Keep the clay wet → show them on a whiteboard
      • De-risked and ready to write up when…
        • Elements of the solution
        • Patches for rabbit holes
        • Declared areas that are out of bounds
    4. Write the pitch
      • Create a pitch, to present this as a potential bet.
      • Pitch Elements
        1. Problem: the raw idea, use case, or motivation
        2. Appetite: how much time we want to spend
        3. Solution: core elements, in an easy to understand form (sketches)
        4. Rabbit holes: things to call out to avoid problems
        5. No-gos: anything excluded from the concept
    5. Invite comments (to poke holes or contribute missing information)

Part 2: Betting

  • Make bets, not backlogs.
    • Before each 6 week cycle hold a betting table for stakeholders
    • Pitches are reviewed (all of which should be well-shaped, and had risks reduced)
    • Spread the responsibility for prioritising and tracking what to do across everyone
    • Important ideas come back
    • 6 week cycles everyone becomes available at the same time
      • Better than 2 week cycles, that are costly due to the planning overhead
    • 2 week cool downs between cycles: no scheduled work, everyone can meet and consider what to do next. Folks can work on what they want in the cool-down.
  • Small teams: 1 designer, 2 developers, 1 QA
  • The Betting table is a 2 hour meeting with the most senior doers (CTO, CEO)
    • Output of the call is a cycle plan.
    • It’s betting not planning. Bets have a payout, are a commitment, have capped downside
    • Uninterrupted time → when you make a bet you honour it
    • Bets or projects don’t get extended. If they don’t finish, it won’t happen. This stops runaway projects. Never carry scraps into next cycle
    • Bugs aren’t magically higher priority than everything else.
  • Three phases of work for building a new product:
    • R&D mode (led by senior members)
      • We don’t expect to ship anything at the end of the cycle
      • Learn what works, enough to define a structure, the form
      • We don’t commit to more than one cycle at a time
    • Production mode (formal cycles with shaping, betting and building phases)
      • It’s like working on an existing product
    • Cleanup mode:
      • All structure is thrown out the window.
      • Being near launch, everything gets real
      • There’s no shaping, but there is bug smashing
  • Questions to ask?
    • Does the problem matter?
    • Is the appetite right?
    • Are the right people available?
  • Post the kick-off message
    • A message goes out to the company at the end after the bets are made detailing what is being bet on for the next cycle, and who’s working on what

Part 3: Building

  • Handing over responsibility
    • Assign projects not tasks.
    • Done means deployed.
    • Get orientated. Spend the first few days as a team getting your head around problems.
    • Imagined vs discovered tasks. Teams discover tasks by doing real work. The way to figure out what needs to get done is by starting real work.
  • Get one piece done
    • Don’t create a master plan that’s got to come together at the last minute
    • Aim to make something tangible and demo-able early in the first week or so
    • Start in the middle (you don’t have to do sign up/login first
      • It should be core
      • It should be small
      • It should be novel
  • Map the scopes
    • Integrated project slices of value are called ‘scopes’.
    • Create a scope map (of all the different scopes/value slices) to divide the project into different territories
    • Scopes arise from interdependencies, which arise from doing real work. They can’t be defined upfront
    • The ‘scopes’ are right when…
      • you can see the whole project, and nothing important that worries you is hidden
      • conversations are now free flowing as you have a shared language for scopes
      • when new tasks come up, you know where to put them
    • Is your project a layer cake (balanced work Front-end/Back-end) or an Iceberg (more Back-end work)?
      • Question the icebergs, do you need the complexity?
    • Mark ‘nice to haves’ as such, so everyone is aware. Basecamp use ‘~’ to denote a nice to have task
  • Show progress
    • Shift the focus from what’s done or not done → to whats unknown and what’s solved
      • Once you’ve figured something out, you’re on the downhill when implementing
    • If something get’s stuck on the hill, what about the work is keeping it there? Help out.
    • It’s best to build your way up hill, not do it in your head
  • Sequence things right → choose the most important problems, with the most unknowns
    • Leave the least worrisome for last
  • Decide when to stop
    • Compare to the baseline, the current reality for customers.
    • Cycle limits motivate teams to limit scope
    • Scope grows like grass. Give teams the authority and responsibility to cut it down
    • Cutting scope isn’t lowering quality, it’s about asking what really matters
  • Move on
    • Let the storm pass. Everyone is focusing on the new thing and reacting to it. Avoid knee-jerk reactions. Remember why you made the change.
image

Deep Summary

Longer form notes, typically condensed, reworded and de-duplicated.

Introduction

  • Growing pains of software teams:
    • Projects last long
    • PMs cant find time to think strategically
    • Founders ask, why can’t we release features as quickly as before?
  • Grew BaseCamp with just 10 hours a week of programming time. The tight constraint meant they learnt how to use it well.
  • Found it hard to articulate what they were doing to new hires.
    • Created cycles
    • Formalised pitching and betting process
    • Shaping = up-front design work we did to set boundaries and reduce risks on projects before handing over to development

Part 1: Shaping

  • Shape at the right level of abstraction
  • Too vague → Just right ← Too concrete
    • Wireframes are too concrete → don’t leave enough room for designers / creativity
      • Over-specifying the design leads to estimation errors → as some things are harder than they seem
    • Words are too abstract.
      • When a project is defined as a few words, nobody knows what it means
      • Not enough information for team members to make trade-offs
      • Often grow out of control because there’s no boundary to define what’s out of scope
Level of fidelity they sketched their dot grid calendar to…
image
  • Properties of shaped work
    • It’s rough: everyone can tell it’s unfinished. Work that is too fine commits everyone to the wrong details. Leave room for judgement and trade-offs
    • It’s solved: it has been thought through. All the main elements of the solution are there, and they connect together. The overall solution is clear. Open questions have been removed to reduce risk.
    • It’s bounded: it indicates what not to do too. It tells the team where to stop.
  • Shaping is largely design work, it defines what the feature does, how it works and where it fits into existing flows
    • You need to be technically literate
    • It’s strategic → you have to be critical of the problem. Why does it matter? What would success look like? What customers are affected?
  • Two Tracks:
    • Shaping (kept private from building team, until confirmed)
    • Building
  • Steps to shaping:
    1. Set boundaries
    2. Rough out the elements
    3. Address risks and rabbit holes
    4. Write the pitch

1. Set Boundaries

  • Set boundaries on what you’re trying to do
  • Start with a raw idea ‘customers are asking for notifications’
  • Set the appetite: How valuable is the idea?
    • How much time and attention does it deserve?
      • Quick fix
      • Small batch (1-2 weeks)
      • Full Cycle (6 weeks)
  • Fixed time, variable scope is the key to shipping projects.
    • Apply this principle at each stage (shaping, building)
  • Good is relative. There’s no ‘best solution.’ Best is relative to constraints. Without a time limit, there’s always a better version. Good is judged relative to time and importance.
  • Don’t say yes or no on first contact with a new idea.
  • Narrow down the problem. Root cause problems, find the easier way. What could we build? → What’s really going wrong?
  • Watch out for grab-bags (refactors and redesigns are the worst offenders). Don’t do ‘2.0’ of anything. Split these projects into smaller projects.
  • Your boundaries are in place when you have…
    • Idea + appetite + narrow problem definition

2. Find the Elements

  • Getting from an idea in words to the elements of a software solution
  • Move at the right speed: have the right people in the room, don’t make wireframes too specific
  • Questions to answer:
    • Where in the system does the new thing fit?
    • How do you get to it?
    • What are the key components or interactions?
    • Where does it take you?
  • Breadboard (electrical engineering prototypes) →
    • Places: things you navigate to
    • Affordances: things a user can do
    • Connection lines: how affordances take the user from place to place
    • Example:
      image
  • Fat marker sketches make it impossible to add too much detail. Helps you avoid getting sucked into the weeds.
  • Elements are the output:
    • For Example the dot-calendar:
      • A 2-up monthly calendar grid
      • Dots for events, no spanned pills
      • Agenda-style list of events below that scrolls an event into view when you tap a dot
  • Leaves room for designers. It just sets the boundaries and rules of the game.
  • There are still significant unknowns to work through before this can be handed over to a team
  • You’ve added value to the raw idea, but haven’t spent so much time on it that you’re compelled to build it

3. Address risks and rabbit holes

  • We’re shaping work for a 6 week window
  • A single hole in the concept could blow out the piece of work
  • Look for the pitfalls you can find up front and eliminate them before betting on the project (then it becomes safe to bet on)
  • Rabbit holes, technical unknowns, unsolved design problems, or misunderstood dependencies.
  • Aim for a project with independent, well—understood parts that connect together in known ways
  • Did you miss anything? Did you make an technical assumptions that aren’t fair?
  • Walk through a use case in slow motion, every step.
  • Ask viability questions:
    • Does this require new technical work not done before?
    • Making assumptions about how parts fit together?
    • Assuming design solution exists we can’t come up with ourselves?
    • Is there a hard decision we should settle in advance so it doesn’t trip up the team?
  • Look for holes in the concept. Edge cases that break the design or flow.
  • Shapers prioritise quality and reduce risks. Can you keep all the elements that make the project worth doing? Can you cut off the big tail of risk?
  • Declare out of bounds: call out any cases you don’t want to support to keep the project within the appetite
  • Cut back → what can you remove whilst retaining the value of the feature
  • Present to technical experts → verify technical assumptions. Is this possible within the appetite? (E.g. 6 weeks)
    • Keep the clay wet → show them on a whiteboard
  • De-risked and ready to write up when…
    • Elements of the solution
    • Patches for rabbit holes
    • Declared areas that are out of bounds

4. Write the pitch

  • Until now the concept isn’t articulated well enough for somebody else to understand
  • Create a pitch, to present this as a potential bet.
  • Elements of a pitch:
    1. Problem: the raw idea, use case, or motivation
      • Present the problem and solution together
    2. Appetite: how much time we want to spend
    3. Solution: core elements, in an easy to understand form
      • Stay at high level, but add more concrete news
      • Help people set he dies whil not going too far into irrelevant details
      • Embedded sketches
        image
        Annotated fat market sketches:
        image
    4. Rabbit holes: things to call out to avoid problems
      • A few lines of text can address a rabbit hole
    5. No-gos: anything excluded from the concept
      • As above
  • Ready to present: post it to the betting table, or sell it live.
    • Invite comments (to poke holes or contribute missing information)

Part 2: Betting

  • Bets not backlogs
  • No backlogs → things just pile up there, we feel like we’re behind. You’ll waste time reviewing them.
  • BaseCamp instead before each 6 week cycle hold a betting table, where stakeholders decide what to do next
    • Pitches are looked at, and people can champion or revive previous pitches
    • Just well-shaped, reduced risk option
  • People can track pitches, bugs or requests independently without a central backlog
  • Spread the responsibility for prioritising and tracking what to do. Makes it a manageable task.
  • Important ideas have a way of coming back. Don’t overvalue ideas, ideas are cheap. The accumulate in huge piles.
  • Six week cycles make planning easier, as people all become available to work on something at the same time
  • 2 week cycles are costly due to the planning overhead.
  • 6 week cycles are long enough to finish something
  • After each 6 week cycle, there’s a 2 week cool-down. No scheduled work, everyone can meet and consider what to do next. Folks can work on what they want in the cool-down.
  • Small teams: 1 designer, 2 developers, 1 QA
  • Betting table
    • The Betting table is a 2 hour meeting: CEO, CTO, Senior Programmer, Product strategist
    • Knowledge of who’s available, what the priorities are, what kind of work we’ve done recently
    • Output of the call is a cycle plan.
    • It gives the C-suite hands on the steering wheel of the product
  • It’s betting not planning
    • Bet’s have a payout. The pitch defines a payout that makes the bet worth making
    • Bets are commitments. We commit to getting them done.
    • Bets are capped on the downside (max 6 weeks)
    • Uninterrupted time → when you make a bet you honour it
  • Bets or projects don’t get extended. If they don’t finish, it won’t happen
    • Stops runaway projects
    • Something went wrong in shaping, we need to re-shape and re-group
    • Provides motivation to the team and encourages ownership
  • Bugs aren’t magically higher priority than everything else. How severe are they? Many bugs can wait 6 weeks.
    • Use cool down or bring to the betting table or schedule a bug smash
  • Keep the slate clean, never carry scraps.
  • Place your bets
  • Three phases of work for building a new product:
    • R&D mode:
      • Be bet with time, not with a well-shaped pitch.
        • Time to refine the vision
      • Senior members (CEO, CTO) take it on
        • You can’t delegate what you don’t know yourself
        • Architectural decisions are really important
      • We don’t expect to ship anything at the end of the cycle
        • Spike don’t ship
        • Learn what works, enough to define a structure, the form
      • We don’t commit to more than one cycle at a time
    • Production mode:
      • After enough R&D cycles, the architectural decisions are settled.
      • The product has a structure that allows things to be added
      • Move to formal cycles with shaping, betting and building phases
      • It’s like working on an existing product
      • Only difference is that you’re pre-launch, can be more experimental
      • Reserve the right to cut features later on
    • Cleanup mode:
      • All structure is thrown out the window.
      • Being near launch, everything gets real
      • There’s no shaping, but there is bug smashing
      • There aren’t clear team boundaries, all hands to the pump
      • Keep discipline, and be clear what’s ‘must have’ and launch blocking
  • Questions to ask?
    • Does the problem matter?
      • Separate the problem and the solution. The solution doesn’t matter if the problem isn’t worth solving
      • We have to make choices, always more problems than time to solve
      • Have we understood the problem specifically enough? Can you narrow it to get 80% of the benefit with 20% of the change?
    • Is the appetite right?
      • Was the problem articulated well enough?
      • Understand the ‘no’s’ → sometimes the no to the time commitment is really a not to something else (solution, technology approach)
        • Does the no change if you reduce from 6 weeks to 2 weeks?
      • The shaper can choose to let it go
      • The shape can go back to the drawing board or do more research
    • Is the solution attractive?
      • Avoid doing design work or discussing the technical weeds. Do that when you’re building it
    • Sometimes its not the right time.
    • Are the right people available? It’s OK to wait for the right people, holidays can get in the way
    • Post the kick-off message
      • A message goes out to the company at the end after the bets are made detailing what is being bet on for the next cycle, and who’s working on what

Part 3: Building

  • Handing over responsibility
    • Assign projects not tasks. Trust the team to take on the entire project. Give as much freedom as you can (given the shape and cycle time limit)
    • Done means deployed. The proejct needs to be done within the time budgeted. That includes QA. Other teams handle help documentation, announcements etc.
    • Kick-off. Start with the pitch, give everyone the chance to ask questions.
    • Get orientated. Spend the first few days as a team getting your head around problems. Learn the codebase. The silence should break after a few days.
    • Imagined vs discovered tasks. Teams discover tasks by doing real work. The way to figure out what needs to get done is by starting real work.
  • Get one piece done
    • Don’t create a master plan that’s got to come together at the last minute
    • Aim to make something tangible and demo-able early in the first week or so
    • Connect the front-end to the back-end as soon as possible, find a value slice
    • Programmers don’t need to wait, the original shaping sketch gives them enough to go on
    • Simple designs with key components and affordances are passed as soon as possible
    • Code just enough to get to the next step
    • Start in the middle (you don’t have to do sign up/login first
      • It should be core
      • It should be small
      • It should be novel
  • Map the scopes
    • Organise by structure not person. Create lists based on the structure of the project, create lists of things that can be worked on and finished independently or each other
    • Integrated project slices of value are called ‘scopes’.
    • Create a scope map (of all the different scopes/value slices) to divide the project into different territories
    • Scopes arise from interdependencies, which arise from doing real work. They can’t be defined upfront
    • The ‘scopes’ are right when…
      • you can see the whole project, and nothing important that worries you is hidden
      • conversations are now free flowing as you have a shared language for scopes
      • when new tasks come up, you know where to put them
    • Scopes might need to be redrawn if…
      • It’s hard to say how done scope is
      • The name isn’t unique to the project (e.g. front-end)
      • It’s too big to finish soon
    • Is your project a layer cake (balanced work Front-end/Back-end) or an Iceberg (more Back-end work)
      • question the icebergs, do you need the complexity?
    • Mark ‘nice to haves’ as such, so everyone is aware. Basecamp use ‘~’ to denote a nice to have task
  • Show progress
    • Remember there’s a difference between imagined tasks and discovered tasks. To-do lists actually grow as work progresses
    • Estimates don’t show uncertainty.
    • Shift the focus from what’s done or not done → to whats unknown and what’s solved
      1. Diagram
        image
      2. Once you’ve figured something out, you’re on the downhill when implementing
      3. BaseCamp developed a tool to visualise this
    • If something get’s stuck on the hill, what about the work is keeping it there? Help out.
    • It’s best to build your way up hill, not do it in your head
  • Sequence things right → choose the most important problems, with the most unknowns
    • Leave the least worrisome for last
  • Decide when to stop
    • Compare to the baseline, the current reality for customers.
    • Cycle limits motivate trade-offs. Teams will actively limit scopes, because they have to ship
    • Scope grows like grass. Give teams the authority and responsibility to cut it down
    • Cutting scope isn’t lowering quality, it’s about asking what really matters
      • is this a must-have?
      • could we ship without it?
      • what happens if we don’t do this?
      • is this a new problem or a pre-existing one that customers already live with?
      • how likely is this case or condition to occur? what’s the impact if it does?
    • Only extend a project if…
      • outstanding tasks are must-haves
      • outstanding work must all be downhill
      • you can continue within the appetite for the project
  • Move on
    • Let the storm pass. Shipping can create more work. Everyone is focusing on the new thing and reacting to it. Avoid knee-jerk reactions. Remember why you made the change.
    • Remember the bet is over.
    • Feedback needs to be shaped

Recap

  • Shape work, don’t take on un-shaped work
  • Set appetites, not estimates
  • Design at the right level of abstraction
  • Concept with breadboards and fat marker sketches
  • Making bets with a capped downside
  • Honour bets with uninterrupted time
  • Choose longer cycles (6 weeks)
  • Have a cool-down period between cycles
  • Breaking projects apart into scopes
  • Downhill versus uphill work and communicating about unknowns
  • Scope hammering to separate must-haves from nice-to-haves