Growth/Team/Norms

This page is intended to document the Growth Team's norms and ceremonies. Team ceremonies for Growth is defined as a series of acts and processes performed regularly with the intention of creating an environment that promotes iterative improvement, innovation and productivity.

On this team, process is not intended to become performative, rather it is intended to provide the needed structure to:


 * Improve Iteratively; Learn and Adjust
 * Experiment
 * Fail Fast
 * Reflect
 * Collaborate
 * Share Knowledge, Wins & Lessons
 * With Each Other
 * Our Communities
 * The Foundation
 * Set and Meet Goals
 * Adding Value/Priorities > Scope
 * Wikimedia Foundation Annual Plan
 * Short and Long Term

Team ceremonies can be altered if it is collectively determined after trial they are not effective as is. Plans and goals are set as a baseline and something to strive towards. Plans and goals if not met should not result in condemnation or negative tones. Not meeting plans and goals should be viewed as an opportunity to learn what needs to be adjusted, rather it is process, priorities, scope or expectations.

Standup & Team Discussions
Traditionally, Scrum-style standups are at the start of the workday, and are meant to


 * 1) Serve as the first line of defense against wasting time. Specifically, this is the tightest feedback loop a team has as a group.
 * 2) Motivate the team through shared commitment.

This is generally accomplished through 3 classic questions:


 * What did you work on yesterday?
 * What will you work on today?
 * What is blocking you?

The Growth team, like many teams at WMF, uses a modified version of this approach, due mostly to the fact that the team is widely distributed across the world (and thus each person is on a different schedule). Synchronous time has a different meaning (e.g. the start of one day may be the end of another, even if there is overlap), and is precious (i.e. should only be used when necessary). The team modifies their standup as follows:


 * Synchronous (video) standups occur every Monday and Wednesday, and every other Tuesday. The team may also standup attached to another meeting.
 * Typically, sync standups are 15 minutes and cover blockers.
 * Standups are generally an opportunity to share progress on work, raise tasks that could potentially impact others, or to escalate blockers that impede team productivity.
 * Topics that need to be explored in depth are held until discussion times on Tuesdays or Wednesdays, or ad-hoc, as needed.

Often, the team will cope with wide geographical distribution by assigning "homework," to mitigate the need for synchronous meetings. This will often take the form of a pre-recorded video or slide deck, which members of the team will watch ahead of a meeting to discuss it. The team agreed (at their retro on 2020-12-14) that the minimum time to get homework ahead of such a meeting is 2 days, not including the day the video was sent and the day the video will be discussed. The team refers to this as the "2-day Sandwich Norm."
 * Asynchronous (email/chat) standups occur every weekday.
 * GrowthStandupBot 9000 is a program run by Google Apps Script to automate daily emails to the team list.
 * The bot asks focuses on the current day, and is flexible depending on whom is responding. It asks for either what is planned for that day, or what was planned and how that went. Blockers are also appropriate to share.
 * The purpose of the thread is to
 * Notify other team members of your participation, so that they will be prompted to do so, too (vs adding to a document or etherpad and checking throughout the day).
 * Centralize the team's daily check-in on work, to help adjust priorities, and help one another, as needed.
 * Hold one another accountable for commitments.
 * This can also include sharing non-Growth-team work. For instance, to let the team know why you might not (or have not) engaged as much as expected.

Board Triage Meetings
Official Board Triage Meetings are bi-weekly meetings where the team goes through the Needs Discussion/Analysis column of our Phabricator Board to determine:


 * If a task should be prioritized
 * The urgency in which a task should be prioritize
 * If the task is within scope for our team

Based on the team's decision of prioritization and scope, we will leave a comment with our decision and move it into the proper column.

Tickets arrive to the Needs Discussion/Analysis column from the Inbox. Anyone on the team can pull tickets into the Needs Discussion column or Triage but Future column on a rolling basis. The team's TPgM also schedules ad-hoc triage meetings with QA and at least one Engineer.

Sprints:
Our team sprints are two working weeks and begin with Planning Meetings and end with Retrospectives. Once a sprint starts it is not advised that a Product Manager requests changes to what is being produced. It is the job of the Technical Program Manager to work with the team to adjust and re-prioritize tasks as necessary within the sprint to meet the criteria set during planning. At the end of each sprint, the entire team should discuss what was accomplished as it compares to the criteria agreed upon with the Product Manager and make necessary process adjustments.

Planning Meetings:
Planning Meetings are bi-weekly meetings attended by the team at the start of a sprint. During the planning meeting, the team identifies and prioritizes tasks that are to be completed for the two-week sprint. Tasks that will be worked on in the current sprint are to be represented on the Current Sprint board.

Grooming Meetings:
Grooming Meetings are bi-weekly meetings attended by the team at the halfway point of each sprint. During grooming, the team reevaluates the work they have committed to and determines if more or less work should be taken on or if tasks should be reprioritized. If there is additional time in the meeting, the team will look at the Backlog Board and pull tickets into Upcoming as indicators it should be pulled into the next Sprint.

Retrospective Meetings:
Retrospective Meetings (retros) are bi-weekly meetings attended by the team at the end of each sprint. During Retrospectives, the team revisits action items from the last retrospective and reflects on the two-week sprint by collectively answering the following:


 * Did we meet our acceptance criteria?
 * What have we accomplished?
 * What worked?
 * What could we improve next time?
 * What was confusing?

Action items will be captured during the meeting and due dates and action owners will be assigned.

Google Calendar:
New members of the team will be added to the Growth team calendar. If a team member will be out of the office for four or more hours during a working day, they are to share it on the team calendar at the earliest indicator that they may be out. This practice will help the team manage expectations when estimating what work can get accomplished during planning. Team ceremonies will also be represented on the Google Calendar.

Google Hangout:
The team has three google hangouts:


 * Growth (Social): Instant message members of the Growth team with non-work related items
 * Growth: Instant Message members of the Growth team about work related items
 * Humans of the Web: Instant message members of the Growth, Editing and Readers Web team

Gerrit:
The Growth team uses Gerrit, a code collaboration tool, for peer code review.

Phabricator:
Phabricator is the organization’s task/issue tracking tool that houses the Growth team’s user stories, tasks, progress and prioritization of work. Tickets at the top of the Ready for Development column in the Current Sprint Milestone are considered the highest priority and next up in the queue to work on.

Translations
Our software contains hundreds of text strings. We rely on volunteers and Product Ambassadors to translate these texts into various languages, and want to reduce the burden of translation as much as possible when adding new texts. In order to do so, we will:


 * 1) Use a prefix for draft message texts. For example, if the text is not finalized by product/design, engineers should use  This has two benefits:
 * 2) Visual reminder to product, design and engineering that we need to finalize the message.
 * 3) Longer message text, to allow us to better design for languages that are more verbose than English.
 * 4) Use a no-translate template in QQQ.json. Draft messages (those prefixed with "DRAFT:") should have the "notranslate" template at the end of the qqq.json message.
 * 5) Create a "finalize messages and qqq.json" task for an epic. For a given epic of work, there should be a task to finalize messages. In this task, we will make a patch to finalize the copy for en.json (removing the "DRAFT:" prefix) and the qqq.json (removing the "notranslate" template).
 * 6) Allow 7 days for translation. Once the text strings are finalized in step 3, we should allow for at least 7 days before enabling the feature for wide use. That allows ambassadors and volunteers time to translate the text. Examples:
 * 7) If the messages are finalized on Tuesday, after the branch cut, then the feature using these messages should not be enabled for broad use until the following Thursday, at the earliest.
 * 8) If the messages are finalized on a Friday, the messages should not be enabled for broad use until 13 days later, on Thursday (group2 deployment) at the earliest. That's because the translators would only have Saturday/Sunday/Monday to get translations done in time for the next week's train.