I've shared this with a couple of people and gathered some feedback
on it. I'd love to get feedback from the larger group and then
start to move forward with the change. So if you could review it
and respond with any additional thoughts or questions I would
appreciate it.
Some of the feedback has been incorporated below. Other outstanding
questions include:
- Do we need the architecture list or can we combine it with the
dev list?
- Where should specs live? (Google Docs, Google Code wiki,
Trello card)? (My vote is Google Doc)
- Should we use Google Code Issues or are the boards enough?
- Who will write the specs?
- Must the review be done by a different org.?
This process is heavily influenced by the process at UserVoice:
http://www.uservoice.com/blog/founders/trello-google-docs-product-management/
The goal is a simple process with a regular cadence that is
transparent to developers, the public and project stakeholders. It
is meant to provide an organizing structure for the work, but not
manage developers work. Additionally it is meant to show what is
being worked on, what is coming up in the queue and approximately
when it will be completed. It is not intended to provide accurate
release dates for features or produce development velocities.
Cards
A card represents a unit of work. It could range in size from a
large feature such as OSGi, technical debt or refactoring work or a
simple bug fix. Cards should be labeled so at a glance their type
(feature, refactor, bug) can known. Feature cards should contain a
link to a spec, bug cards should contain a link to the bug on google
code.
Card Templates
Feature
Short description
Link to Spec
Link to or name of code branch
Link to Code Review (Gerrit or similar hosted tool)
Refactoring
Description of current code
Explanation of issue
Description of refactoring/architecture change
Link to or name of code branch
Link to Code Review
Bug
Link to google issue
Steps to reproduce
Description of expected outcome
Description of actual outcome
Link to or name of code branch
Link to Code Review
Boards:
Inbox
Ideas
- An idea should at a minimum be a 1 to 2 sentence
description of a feature or enhancement.
Modules
- A card represents a module that is being submitted for
inclusion into the platform
- The card should contain a pointer to the source location,
a link to the spec for the module and a discussion of any
non-generic code within the module
Roadmap
- This has all the major projects for each quarter looking
roughly 3 quarters ahead. These big projects are moved to the
Planning board once that quarter begins.
Bugs
Inbox
- unvetted reported bugs. Bugs can be entered directly on
this list, or on the google code issues. If a bug originated on
google code the card should contain a link to it.
Needs input
- We’ve had issues reproducing the issue and the original
reporter needs to provide more info.
Accepted
- Yes, this is almost most certainly a bug.
Planning
Next Up
- This is a roughly prioritized list of the next projects we
want to spec out for development
Spec
- This means “someone needs to write a spec”. The card at
this point is usually just a rough idea.
- Specs should be written in a publicly accesible location
and linked to from the card. (Google docs)
Ready
- We have spec that’s been reviewed by a project stakeholder
or the dev team.
- We may have a wireframe or other needed artifacts.
- The card is now ready to be reviewed in a planning meeting
and either moved to the Current Development board or sent back to
Spec for refinment.
Current Development
Next Up
- Prioritized list of all cards vetted and ready for design
& development.
- It’s worth noting that as a engineer or designer you’re
not required to take the top card off the stack but rather the top
card you feel most apt to handle.
In Progress
- These are the cards that are under active design or
development.
- Once you take a card you “put your face on it” (assign it
to yourself). Dev etiquette is that you should never have your face
on more than 2 cards at a time: 1 major project and 1 minor.
- All development should be done on a branch
Review Queue
- These are the cards that have development (included any
local team QA) complete and are waiting on a code review and later
merge to master
- Review should be done by a different organization from the
developing organization
- Review should check both code style and quality as well as
adherence to the spec
- Additionally Review should verify any dependent
documentation has been updated.
- Merge to master should be done by the reviewer once
approved.
- If the review is not approved notes should be added to the
card and it should be moved back to In Progress
Release #
- These cards have been merged from a feature branch to
master and accepted in a review
- Once a platform release is created a new Release list
should be created for the next release
Meetings & Regular Communication:
In general I'd like as few meetings as possible. I'd also love as
much asynchronous communication as possible (email, irc, etc.)
Monday Summary Mail
What was completed last week with avatars/names or who completed it,
etc.
Tech Call (30 - 60 mins)
This is an as needed call when face to face agreement or discussion
is needed. Probably won’t have it or won’t have it often.
Inbox Review Meeting (30 mins)
Mandatory Attendees: Rob, John
Optional Attendees: anyone who wants to attend or present an idea
from the Inbox
If you submitted a card to Inbox board, in either the Inbox or
Module column, you are expected to attend this meeting and introduce
the story behind the card. The goal is to help the rest of the team
understand the associated use cases and pain points.
The key to keeping this meeting focused: solutions are not
discussed, only problems.
Product Planning Meeting (1 hr)
Attendees: Rob, John, Vivek, Sanchit, Bruce, Jakob
The goal of this meeting is to review all cards from the Planning
and Engineering boards ready to move to the “Next Up” column on the
Current Development board. For each card we move we’ll make sure
there are no outstanding questions or concerns and we may discuss
what the next step is (ex: do we need to build a prototype first?).
Once all the “ready” cards are moved to Next Up we’ll re-sort the
entire Next Up queue according to priority (yes, even cards that
were at the top of the list last week may now be moved to the
bottom).
We’ll also assign a level of effort estimate to each card. We
measure the effort in terms of easy (1 star), medium (2 stars), hard
(3 stars). This estimate is based on previous experience (as a
company, not individuals): have we done anything similar before, how
familiar are we with this domain, do we have any in-house experts,
etc. We’ll use the cards to give engineers a sense of how much work
is behind this card and also we use it as a signal to the rest of
the team how big of a deal a card is (during the product meeting)
and to celebrate progress.
Finally we’ll review all the bug cards. If a card doesn’t have
enough info or if it’s going to take significant development time
(more than a few hours) we won’t move it to “Next Up”. All cards we
do move to “Next Up” go to the top of the queue before everything
else. Above all else we want to make sure we’re always fixing what’s
broken first.
Standup (10 mins)
Teams are free to host their own stand ups, but no MOTECH wide
standup will be held. Teams should get in the habit of sharing any
interesting information, blocking issues or questions that come up
on the mailing list.