visit
Also, when passing a ticket from one stage to another, it’s important to remove yourself from the ticket so everyone know that they can pick them up to work on them. It is also ok to rollback a ticket to an earlier stage if it is not ready, e.g., from
Acceptance
to To Do
. It is better to do that than to release a faulty product and raise bug tickets afterwards.The whole process should be thought in a way that the tickets are independent from the person that wrote them or have worked on that particular task in the past. That’s where comes our next hint.Context
A brief description of what the feature or problem is. Telling how it worked before and how is supposed to work is a good thing. Also, include any reference material that is required for understanding the whole picture. It is not necessary to copy the whole scoping document here (if you have one), but also just linking to the scoping document without explaining anything is not a good practice. Ideally the ticket is self contained and the reference material is just for further clarification.To Do
A list of items to be done in the ticket. Keep them small and self contained. If you have more than 4 items to be done in the same ticket it is a strong signal it must be broken down into smaller tasks.Not To Do
An optional section to make clear what should not be done in the ticket. Maybe because it is reserved for future work, like predicted in a new ticket, or because it was not agreed with the stakeholders yet. Not to do is a section that has the purpose to limit the timebox for a ticket delivery so we can be really agile in delivering changes, making sure we don’t merge future work in current work by accident, like: “oh, I was in the mood and decided to do everything in one go”… then suddenly you have a mega PR to review that will take a lot of effort from your team. Please use this section wisely.Acceptance Criteria
Also known as Definition of
Done
, ideally they would be a list that follow closely the To Do
list above, to make sure every required was implemented correctly. It is not so useful to explain here how to test, but it is really important to tell what to test.Both happy and sad paths. Ideally anyone from the team should be able to test it, even non developers like the Product Manager. At ThoughtWorks both the Product Manager or Business Analyst would hold a acceptance meeting for every story that was in Acceptance, being driven by a developer following the acceptance instructions. You don’t need to go that far to have an official ceremony for acceptance, but please make sure the criteria are well written and reproducible by anyone with minimal knowledge.This whole ticket template thing also have a fancy name: definition of ready. That means that the story is ready to be worked on once it has all those characteristics well documented.
Having all clearly stated will also have an idea of the amount of work to be done and if the ticket needs to be broken down in smaller pieces, as we will see in the next session.Here is a small gist with the latest version of my ticket template:Those would fit nicely in a
To Do
list on the ticket template, but if you list everything you need to do in a single ticket you will have a bloated ticket that will take forever to finish.It is also hard to track the speed of your work, which would delay that small gratification we all have when a piece of work is delivered. Lastly, you can make really hard for your team to review the work after is done.So whether you use a score point system or just look at your
To Do
section and it has too many items, make sure you can split them into smaller tickets as soon as possible. It’s ok to have tickets with only one To Do
, those will be one-pointers and probably you and your team will be able to deliver them in parallel instead of serialising all the work.If it was not you that has written that ticket, it may be useful to call for a refinement meeting (15 to 30 minutes) with the key stakeholders or developers to see what kind of work can be broken down into smaller pieces.That investment time will pay off with faster review and delivery times.One of the outputs of the scoping phase are the initial tickets, that can still be a bit rough and bloated (like, a lot of 5-pointers with a lot of
To Do
s) and hence come the importance of having refining sessions afterwards, usually during the kickstart of a new project or even the proper ticket.Pairing during refinement is also a very good thing, as having different views over the same problem often help seeing where the line can be drawn in a safe way.It is also common to leave the scoping phase with several questions. For those, Spike tickets (as opposite to Story tickets) should be created. Spike tickets are the ones that hold one or more questions to be answered (ideally one). Most of them are questions about technical implementation (e.g. different alternatives), but some spike tickets may be related to some business uncertainty.From my experience, spike tickets should be time constrained (usually 2 days of work) and shall produce answers to the proposed questions followed up by story tickets to implement the correct path.Sometimes the conclusion of a spike ticket is that something must not be done, and that is ok as well. Please beware: a spike ticket without a question is not a spike ticket! The ticket should accommodate all the questions that must be answered and the acceptance criteria should be adapted accordingly.
As spike tickets are closely tied with uncertainty, we should account for that uncertainty when planning our sprints / quarters considering that at least one 3-pointer ticket may be created for each spike ticket.Finally, resist the temptation of implementing the spike ticket during the spike process. Separating spike from story tickets has many benefits in terms of tracking the work later on. Of course, for very small changes exceptions may apply, but I prefer to be purist on that one.“thinking through and recording the best practices ahead of time in a ‘playbook’ produces roughly a 3x improvement in MTTR”.MTTR is the Mean Time to Recovery (from failure), which means the average time your team takes to take your system from an unhealthy state to a healthy state again.It is also important to observe the number of tickets that indicate manual tasks (toil) that can be added to a runbook because they later on may be used as a sign for stuff that needs to be fixed or automated.Even if you don’t have a SRE dedicated to your team, having the clear view of those issues should help prioritising work during investment work as opposite of project work.Every team should aim to achieve a healthy balance between investment and project work, as this is what makes team throughput scale over time beyond adding new developers.