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