We keep it simple, maximize productivity and reduce waste.
Development should be about:
- Small changes.
- Iterate quickly.
- Deploy often.
- Simple, well written and readable code.
- Doing things that move the needle.
- Perferring to ship 1 task than half-assing 2.
Working asynchronously also means you don’t need to wait for other people to assign you work. There will always be a backlog of work and if there isn’t you should use your better judgement and pick up whatever you think has most impact/benefit. If there isn’t any work planned you should bring it up with your manager, there should always be a plan.
As all work should be written down in issues, if you’re doing something out of your own volition and no one shared a spec (tech or product) with you, then create an issue for it before get going.
Open --> ToDo --> Doing --> Done --> Closed
Open
- Initial status of an issue, it’s unassigned
, possibly yet to be prioritized
and planned
. The issue creator should make sure that it gets the proper visibility, use the issue thread for it.ToDo
- Issue has been planned
, is now assigned
and has been prioritized
.Doing
- Assignee is working on the issue. There shouldn’t be many issues with the same assignee in Doing. Remember to keep it flowing, if there are many issues, it means no work is being finished. Always prefer to create a branch out of the issue for traceability purposes.Done
- Assignee has finished the task and there’s a Merge Request created and waiting to be merged. This keeps the kanban clean. The assignee is still responsible for the issue and should make sure it gets accepted and deployed.Closed
- The assignee’s task is deployed to production (and validated). When finishing a task provide a comment on what was done. There should be a link to the MR.
- Never let issues pile up and go stale.
- Don’t work on many things at the same time. Keep it simple, keep it focused.
- Clearly communicate if you need help from someone to move it along the board, use the issue thread for it.
- When assigning a task it should have one single owner (assignee). Others can be tagged and mentioned but the owner is responsible for pushing it forward. Owners can change.
- You never want to stop the flow, an issue that stays too long in one state (rather than Closed) means there’s something wrong with it.