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
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
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
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”