Slide 1

Slide 1 text

How We Structure Our Work At Mercari Microservices Platform Team

Slide 2

Slide 2 text

Taichi Nakashima @deeeet / @tcnksm

Slide 3

Slide 3 text

Project Management at Platform Team? How we decide, plan, execute, control, ship and close the work of a team. Nothing is different from project managements in general

Slide 4

Slide 4 text

Why Project Management? “Maximize team outputs” ● = Increase developer(*) productivity ● = Deliver better product to Mercari customers faster (*) Our “direct customer” is internal developer

Slide 5

Slide 5 text

Important Factor We continuously improve our project management by team ● It’s not something to be forced by someone ● It’s the most important “How” you need: team thinks its outputs

Slide 6

Slide 6 text

History How we evolve our product management? What kind of problem we faced before?

Slide 7

Slide 7 text

Team growth 9 Members

Slide 8

Slide 8 text

Team growth No Project Management Agile 6 Week Release Cycle

Slide 9

Slide 9 text

No Project Management We only have single quarter milestone ● We just take a task we want from a large list ● We depend on each members task management

Slide 10

Slide 10 text

No Project Management ● Good? ○ We just do things ● Bad ○ We are not a team. Just individual ○ Individual task progress is invisible… ○ Too many things are listed on milestones and distracted ○ Load of support is increased

Slide 11

Slide 11 text

Leanings From No Project Management There is a limit to individual can build. Individual can build only small fractions of features or small tools, not large and complex system like platform. To work on ambitious project, we need teamwork

Slide 12

Slide 12 text

(Lightweight) Agile We have 2 week Sprints, Kanban board, scrum master ● We formalize how to structure our work ● We have Epics and divide it into actionable tasks before sprint ● We estimate & record our tasks and calculate velocity ● We balance reactive and proactive task (50% for each) (*) (*) We learn this from Google SRE practice: “At least 50% of each SRE’s time should be spent on engineering project work that will either reduce future toil or add service features”

Slide 13

Slide 13 text

No content

Slide 14

Slide 14 text

No content

Slide 15

Slide 15 text

No content

Slide 16

Slide 16 text

(Lightweight) Agile ● Good ○ (Finally) We feel we become a team ○ We can visualize our tasks and its progress ○ We can balance proactive vs. reactive ● Bad ○ We focus on velocity, not “shipping” ○ Sprint (=2week) is not suited for platform projects ○ No one can estimate task (and estimation become cost)

Slide 17

Slide 17 text

https://m.signalvnoise.com/running-in-circles/ Ideal Spec is fixed and correctly estimated. It’s liner labor

Slide 18

Slide 18 text

https://m.signalvnoise.com/running-in-circles/ Reality

Slide 19

Slide 19 text

Leanings From (Lightweight) Agile Agile™ is not always answer. We should focus on “shipping”, not velocity. We should embrace “unknowns”

Slide 20

Slide 20 text

6 Week Release Cycle What is it? How does it work at Platform Team?

Slide 21

Slide 21 text

https://m.signalvnoise.com/how-we-structure-our-work-and-teams-at-basecamp/

Slide 22

Slide 22 text

No content

Slide 23

Slide 23 text

6 Week Release Cycle ● We work in 6 week release cycle ● We have big Ecpic and small Epic ● We have 1-2 big Epics and 2-3 small Epics (*) ● We assign one subteam (release team) to each Big Epic ● We assign one subteam (release team) to all Small Epics ● We assign 2-3 engineers to one subteam ● We have 1 week buffer between cycles (*) Depends on the team size or situation

Slide 24

Slide 24 text

6 week release cycle Release team Big Epic Release team Small Epics We can release some version of any feature in 6 week Take up the full six weeks to get done Take anywhere from a day to two weeks to complete Team is 2 or 3 (no more than this). Complexity begins to increase exponentially beyond that

Slide 25

Slide 25 text

Principles ● Dedicated resource allocation ● Fixed budget and flexible scope

Slide 26

Slide 26 text

Dedicated Resource Allocation We can’t make progress if people constantly pull at their attention (e.g., bug reports or new feature requests) ● Release team must only focus on the Epic ● Release team must be protected from others by EM and TL (only management layer can do this!) + On-support Team

Slide 27

Slide 27 text

Fixed Budget and Flexible Scope Ship features with fixed budget and flexible scope ● Fixed budget: 6 week + 2-3 members ● Flexible scope: redefine scope while working

Slide 28

Slide 28 text

https://m.signalvnoise.com/running-in-circles/ We start project with a core problem and some version of the solution Release team redefine scope based on fixed budget (time and members) Release team ships some version of the solution

Slide 29

Slide 29 text

Principles ● Dedicated resource allocation ● Fixed budget and flexible scope

Slide 30

Slide 30 text

Dedicated On Support Team On Support Team helps developers to use platform and platform release subteams to focus on its delivery ● Responds all developers requests (issues & PRs) ● Handles all urgent tasks (critical bug fixes or security incidents) ● Works on technical debts when free time

Slide 31

Slide 31 text

Evolution of On Support Team ● 1 engineer & daily rotation ● 1 engineer & weekly rotation ● 2 engineer team & cycle rotation <- Best for now!

Slide 32

Slide 32 text

Outcomes From 6 Week Release Cycle Now we can focus on “shipping”. Our output is highest ever

Slide 33

Slide 33 text

Next Steps What’s next? What can we improve?

Slide 34

Slide 34 text

Next steps ● Issue-driven -> Vision-driven ○ e.g., long term roadmap ● Better Epic prioritization ○ e.g., developer survey, KPI based

Slide 35

Slide 35 text

Conclusion What’s the takeaways?

Slide 36

Slide 36 text

Conclusion Improving project management is never ending effort. Continuous improvement by team is most important “How”