$30 off During Our Annual Pro Sale. View Details »

Release Strategies

Release Strategies

Samuel E. Giddins

July 15, 2017
Tweet

More Decks by Samuel E. Giddins

Other Decks in Technology

Transcript

  1. Release Strategies
    Samuel Giddins
    1 Release Strategies, @segiddins, Mobile Optimized 2017

    View Slide

  2. Things I've Released
    2 Release Strategies, @segiddins, Mobile Optimized 2017

    View Slide

  3. Things I've Released
    • CocoaPods
    • Bundler
    • Realm Cocoa
    • Tumblr.app
    3 Release Strategies, @segiddins, Mobile Optimized 2017

    View Slide

  4. Why talk about releasing software?
    4 Release Strategies, @segiddins, Mobile Optimized 2017

    View Slide

  5. Why talk about releasing software?
    • We all do it
    • It's on the border between
    technical & non-technical skills
    • We don't talk about it very often
    • It's something I've gotten wrong
    countless times
    5 Release Strategies, @segiddins, Mobile Optimized 2017

    View Slide

  6. Why do we release software?
    6 Release Strategies, @segiddins, Mobile Optimized 2017

    View Slide

  7. Why !?
    • A convenient name for the software
    at one point in time
    • A convenient time to market
    • A concrete end point for the
    current work in progress
    • A chance to get the most recent work
    onto our users' devices
    7 Release Strategies, @segiddins, Mobile Optimized 2017

    View Slide

  8. Why !?
    A convenient name for the software
    at one point in time
    • semver
    • "Are you using 2.5.1?
    Please update to 2.6.0, it fixes that bug"
    8 Release Strategies, @segiddins, Mobile Optimized 2017

    View Slide

  9. Why !?
    A convenient time to market
    • "Update now to version 2.0 !"
    • "Only $5 for all these great new features!"
    • "Please remember my app exists
    and buy it if you like it ""
    9 Release Strategies, @segiddins, Mobile Optimized 2017

    View Slide

  10. Why !?
    A concrete end point for the
    current work in progress
    • We want to ship this refactor,
    fix the bad crash,
    and add the improved signup screen
    by the end of the month
    • After this release, I'm going to take a !
    10 Release Strategies, @segiddins, Mobile Optimized 2017

    View Slide

  11. Why !?
    A chance to get the most recent work
    onto our users' devices
    • New ways to make money
    • Fixing bugs so users are happy again
    • Stay in sync with what other teams are doing
    11 Release Strategies, @segiddins, Mobile Optimized 2017

    View Slide

  12. Why !?
    These are the business reasons for doing software releases.
    They guide the choices we make around release schedules,
    the tools and processes we employ,
    and how we evaluate our success as engineers.
    12 Release Strategies, @segiddins, Mobile Optimized 2017

    View Slide

  13. Release Strategies
    13 Release Strategies, @segiddins, Mobile Optimized 2017

    View Slide

  14. (Popular) Release Strategies
    14 Release Strategies, @segiddins, Mobile Optimized 2017

    View Slide

  15. Popular Release Strategies
    • Never
    • When the boss feels like it
    • When amount of work has been done
    • Every years / months / weeks
    • Continuously
    15 Release Strategies, @segiddins, Mobile Optimized 2017

    View Slide

  16. Release Strategies
    Never
    ResearchKit has the best release date ever.
    ! vs. "# - Fight! (@NeoNacho) April 12, 2015
    16 Release Strategies, @segiddins, Mobile Optimized 2017

    View Slide

  17. Release Strategies
    Never
    • Software you don't release
    is software you don't have to support
    • No extra work required!
    • But you can never announce it,
    never be paid for it,
    and never call it "done"
    17 Release Strategies, @segiddins, Mobile Optimized 2017

    View Slide

  18. Release Strategies
    When the boss feels like it
    • No predictability
    • No pressure to do a release
    if you don't want to
    • In general: ¯\_(ϑ)_/¯
    18 Release Strategies, @segiddins, Mobile Optimized 2017

    View Slide

  19. Release Strategies
    When amount of work has been done
    • Every release contains the right amount of changes
    • Enough to market / be proud of / warrant the effort
    • Not too much
    • Users can trust that upgrading is worthwhile
    • On a small / mature product,
    the gap between releases can get large
    19 Release Strategies, @segiddins, Mobile Optimized 2017

    View Slide

  20. Release Strategies
    Every years / months / weeks
    We bring you an update to the app store every 2 weeks to improve
    your experience using app. Please leave a review.
    Every major iOS app for the past 2 years
    20 Release Strategies, @segiddins, Mobile Optimized 2017

    View Slide

  21. Release Strategies
    Every years / months / weeks
    Thanks for using clothes, Brian! To make clothing better for you, clothes are
    released every two weeks.
    Every update of clothes includes improvements for style and comfort.
    As new clothes become available we will be highlighting those for you in your
    closet.
    @luisobo
    21 Release Strategies, @segiddins, Mobile Optimized 2017

    View Slide

  22. Release Strategies
    Every years / months / weeks
    • Predictable timelines
    • A regular and comfortable cadence for engineers
    • Practice doing releases
    • The amount of changes in each release might vary
    • Requires tooling to handle in-progress work
    22 Release Strategies, @segiddins, Mobile Optimized 2017

    View Slide

  23. Release Strategies
    Continuous Delivery
    • The new popular thing for web
    • The product the user sees is
    the same as what the developer is working on
    • A single release becomes a non-event
    • Revert problematic changes before new work
    builds upon them
    23 Release Strategies, @segiddins, Mobile Optimized 2017

    View Slide

  24. Release Strategies
    Continuous Delivery
    • How do you report a bug without a version?
    • All changes have to be 100% self-contained
    24 Release Strategies, @segiddins, Mobile Optimized 2017

    View Slide

  25. Release Strategies
    How to choose?
    • Respect the user. Always.
    • How much developer time do you have
    to devote to release engineering?
    • How fast is the rest of your company moving?
    25 Release Strategies, @segiddins, Mobile Optimized 2017

    View Slide

  26. Release Metadata
    26 Release Strategies, @segiddins, Mobile Optimized 2017

    View Slide

  27. Release Metadata
    The things we prepare alongside
    the code
    27 Release Strategies, @segiddins, Mobile Optimized 2017

    View Slide

  28. Release Metadata
    • Release Notes
    • App Description
    • Translations
    • Screenshots
    • Marketing Videos
    • Version number
    28 Release Strategies, @segiddins, Mobile Optimized 2017

    View Slide

  29. Tools For Software Releases
    29 Release Strategies, @segiddins, Mobile Optimized 2017

    View Slide

  30. ! For Software Releases
    • Package Manager / App Store
    • Fastlane
    • CI Services
    • CircleCI / Travis / buddybuild / Jenkins / etc.
    • QA Team
    • make / bash
    • ⌨
    30 Release Strategies, @segiddins, Mobile Optimized 2017

    View Slide

  31. ! For Software Releases
    Steps for a successful release:
    • Determine what it is you're releasing
    • Pick a version number
    1. If you do that sort of thing
    • Decide who will get the release
    1. Is it a staged rollout?
    2. Do users need to download a new app?
    Buy something new?
    3. What is it compatible with?
    31 Release Strategies, @segiddins, Mobile Optimized 2017

    View Slide

  32. ! For Software Releases
    Steps for a successful release:
    • Decide how you're announcing the release
    1. Does it get special press / marketing?
    2. What changes do you want users to focus on?
    • Pick a date
    1. Are there things that need to be done
    by that date?
    2. Under what circumstances will the date change?
    32 Release Strategies, @segiddins, Mobile Optimized 2017

    View Slide

  33. ! For Software Releases
    Steps for a successful release:
    • Settle upon a success metric
    • Warn all stakeholders that a release is happening
    • Remember to release
    33 Release Strategies, @segiddins, Mobile Optimized 2017

    View Slide

  34. Handling A Bad Release
    34 Release Strategies, @segiddins, Mobile Optimized 2017

    View Slide

  35. Handling A Bad Release
    CocoaPods Story Time!
    35 Release Strategies, @segiddins, Mobile Optimized 2017

    View Slide

  36. Handling A Bad Release
    • Communicate that something went wrong
    • Explain what happened, and why
    • Come up with a plan to avoid it happening again
    • Implement & automate that plan
    36 Release Strategies, @segiddins, Mobile Optimized 2017

    View Slide

  37. Handling A Bad Release
    • Never make the same mistake twice
    37 Release Strategies, @segiddins, Mobile Optimized 2017

    View Slide

  38. Modern Releases
    • Use tooling to automate error-prone processes
    • Happen on a predictable schedule
    • Minimize disruption to the user's workflow
    38 Release Strategies, @segiddins, Mobile Optimized 2017

    View Slide

  39. Modern Releases
    • Demand perfection
    39 Release Strategies, @segiddins, Mobile Optimized 2017

    View Slide

  40. @segiddins
    40 Release Strategies, @segiddins, Mobile Optimized 2017

    View Slide