visited a customer pharmacy and brought back their feedback. We deployed the new version to production the very same day. The customer was surprised and delighted. Photo by Elisabeth Arnold on Unsplash
A web service for patients and pharmacists. • Uncertainties in requirements: • Built on several hypotheses. • Technological uncertainties: • Adoption of new and unfamiliar technologies.
A web service for patients and pharmacists. • Uncertainties in requirements: • Built on several hypotheses. • Technological uncertainties: • Adoption of new and unfamiliar technologies. • Unknown unknowns: • Things we weren't even aware of.
In the Complex domain, we don’t know the right answer until we act. Image from https://thecynefin.co/about-us/about-cynefin-framework/ (Accessed on 2024-07-01)
Estimates? • Estimates are just guesswork in the Complex domain. • Our dedication remains the same with our without estimates. • Estimates obscure the Product Goal.
Small Items We use small items. • Keep the Backlog items as small as possible. • Finish each item in one or two days. • Pick up five to ten items for one Sprint. This enables us to start Sprint without estimates.
with Product Backlog? As a user, I can search items by the name in the search page. As a user, I can search items by the price in the search page. As a user, I can check item details in the item page. As a user, I can add items to a cart in the item page. As a user, I can check items in the cart in the cart page. … As a user, I can search items by the category in the search page An example backlog for an EC service
by the name in the search page. As a user, I can search items by the price in the search page. As a user, I can check item details in the item page. As a user, I can add items to a cart in the item page. As a user, I can check items in the cart in the cart page. … As a user, I can search items by the category in the search page Part 2: Slice Map Had These Thoughts with Product Backlog? When will the purchase feature be completed?
by the name in the search page. As a user, I can search items by the price in the search page. As a user, I can check item details in the item page. As a user, I can add items to a cart in the item page. As a user, I can check items in the cart in the cart page. … As a user, I can search items by the category in the search page Part 2: Slice Map Had These Thoughts with Product Backlog? How are the items connected? When will the purchase feature be completed?
by the name in the search page. As a user, I can search items by the price in the search page. As a user, I can check item details in the item page. As a user, I can add items to a cart in the item page. As a user, I can check items in the cart in the cart page. … As a user, I can search items by the category in the search page Part 2: Slice Map Had These Thoughts with Product Backlog? How are the items connected? When will the purchase feature be completed? Why are there so many oversights?
by the name in the search page. As a user, I can search items by the price in the search page. As a user, I can check item details in the item page. As a user, I can add items to a cart in the item page. As a user, I can check items in the cart in the cart page. … As a user, I can search items by the category in the search page Part 2: Slice Map Issues with Backlog-based Planning • Lack of overall view • Unclear connections between items • Hard to identify oversights (´ɾωɾʆ)
Put Items on the Map Importance of Nice-to-Have and Future Items • Prevents concerns about missing features • Influences system architecture and development
Draw Lines No, we didn't choose that approach • Our starting point is the trust that everyone is already doing their best. • Increasing speed wasn't an option for us. • The variables we can adjust are the plan and the scope.
Lack of overall view • → Shared overall view • Unclear connections between items • → Described as Slices • Hard to identify oversights • → All the items are on the map. We should keep updating the Slice Map!
Backlog Pick items from the top area of the Slice Map and put them into the Backlog. Product Backlog is • not for planning • the result of the planning Slice Map is • for clear focus on the Product Goal • for shared understanding
Trunk-based Development Our team handles both development and operations. • Before launch: • Deploy our applications to production anytime • Quickly fix issues since there are no users
Trunk-based Development Our team handles both development and operations. • Before launch: • Deploy our applications to production anytime • Quickly fix issues since there are no users • Post-launch with real users: • Must deploy new features without disrupting their experience • Want to add features quickly and verify many hypotheses
branching model primarily utilizing the main branch • Enables quick and frequent deployments • Smaller changes, less negative impact Image from https://trunkbaseddevelopment.com/ (Accessed on 2024-06-30)
Feature Flags Usage Feature flags are useful but have pitfalls. We follow team guidelines for using them. 1. Minimize Usage • Use feature flags only for temporarily hiding features during development. • Avoid permanent feature differences for users.
Feature Flags Usage Feature flags are useful but have pitfalls. We follow team guidelines for using them. 1. Minimize Usage • Use feature flags only for temporarily hiding features during development. • Avoid permanent feature differences for users. 2. Clean Up • Remove flag-related code promptly after use.
Feature Flags Usage Feature flags are useful but have pitfalls. We follow team guidelines for using them. 1. Minimize Usage • Use feature flags only for temporarily hiding features during development. • Avoid permanent feature differences for users. 2. Clean Up • Remove flag-related code promptly after use. 3. Handle Unavailability • Ensure apps handle missing flags due to network issues.
We deploy to production almost daily: • In the past, we deployed to production 25 times a month. • On our busiest day, we deployed 4 times in a single day.
Daily Planning • Our project moves quickly • Daily Scrum = Daily Planning • Discuss what we learned yesterday • Assess if today's tasks are still relevant to Product Goal • Focus on the Product Goal • Adapt to new information • Example: Pivot based on new hypothesis discovered by PM during a pharmacy visit • Ensures work on the most valuable tasks
15-minute Daily Refinement after Daily Scrum • Focus on future sprints and long-term product vision • PM handles most preparation • Technical input often needed • Structured opportunity for PM to consult with the team • Weekly longer sessions for in-depth discussions
Practice Mob Programming remotely • Four developers in a Slack Huddle • Focus on one feature at a time • Benefits of Mob Programming and automated deployment • PM or manager can experience the deployment process • Guided through a Good First Issue • Deployed to production within a few hours
• Focus on pair-centered Mob Programming • Initially used for onboarding new members • Realized need for more time on system improvements • Current approach: • New members handle feature development • Original members focus on system improvements • Morning discussions on new features • Split into pairs for development and improvements • Ensures continuous progress on both fronts