Ticket Based Engineering
All work should be tracked by work items and made visible throughout the software delivery process. By integrating all changes back to work items, built-in audit history of code changes are automatically retained.
Principals of Ticket-Based Engineering (TBE)¶
Work Items is the unit of work that describes the tasks that should be completed (tickets, issues, task, subtask, cards, etc.)
- No ticket, no commit. If the work item doesn't exist, the solution doesn't exist. All commits should be support the value and directive from the prioritized work items.
- Tickets and source code are integrated. Branches can be created from work items, and commits can be tied to work items. This allows seamless flow across JIRA from issue tracking to source code.
- Visibility across delivery lifecycle. Automated integrations show updates from code changes to build status related to individual work items.
- Easy to work with distributed teams. Stay aligned and focused with automated status updates for work items, promoting visibility and asynchronous working.
- Automated audit trail. When work is completed, metadata and commit history lives on with the work item, providing a long-lived history and built-in audit trail.
How to Implement TBE¶
1. Linking branch / PR to commits. If your team uses branches and pull requests, links can also be added at the branch-level. From the Jira ticket, a branch can be created under the Development section. Choose the appropriate source code repository, set the branch type, and update branch name as needed.
2. Linking commits to tickets. When developers include the Jira ticket in their commit message, Bitbucket and Jira will automatically create a link. This is always a recommended approach to TBE, but particularly if the team practices trunk-based development with no branches.
Development Workflow (Branching)¶
- Pick up a work item
- Move it to In Progress
- Create a branch directly from the work item
- Checkout the branch locally
- Commit code changes
- Push code changes to the remote branch
- Submit a Pull Request
- Wait for build validation and code reviewers
- Complete the PR and merge the branch
- Get PO approval to move work item to Done
- Delete local copy of branch
Tools Integration¶
A wholly integrated toolset provides visibility and flow of the work in progress for a delivery team. From chat, to ticket tracking, to build pipelines, all tools should work together to provide feedback, audit, and communication on the work item.
How do the various tools support visibility and tracing across work items? What are the responsibilities and capabilities of chat, issue tracking, build pipelines, local tooling?