June 11, 2011
by nitinbhide
Component is a very useful feature in BootStrapToday tickets. It can help you automate some common workflow tasks. However, many teams have doubts/questions about how to use components effectively. In this post, I am going to take an example of small development team, (6 developers, 3 QA and a project manager) and explain how to use components.
Let’s assume that this small development team is ‘BootStrapToday development team’. BootStrapToday has many features, account, projects, tickets, wiki, wall , timesheet, milestone, etc etc. Obviously all developers are not going to work on all features. Typically, one developer (let’s call him ‘Nitin’) will look after tickets, milestones, other developer will look after account, project, users, roles & permissions etc (let’s call him Vishwajeet), some other developer will work on Wall, Timesheet ,etc (let’s call him Anand). At the same time, while all QA engineers are not going to test every feature. Usually, one QA engineer will work with two developers and test features/bug fixes implemented by them. Let’s assume one QA engineer looks after tickets, milestone, wall, timesheet etc (lets call him Ajit). Other QA engineer account, project, users, role & permission etc (let’s call her Vaishali).
In a typical day, Ajit is testing milestone and discovers a bug that milestone due date is not getting updated correctly. He will open a Bug ticket and assign it to Nitin. Nitin will get a notification mail that a bug is assigned to him. He will work on the bug and fix it. Nitin will then change the status of the ticket to ‘resolved’ and assign the ticket to Ajit for testing. Ajit will then test and confirm that bug is fixed and he will resolve this ticket.
However, this typical workflow has some shortcomings.
- What if Ajit reports a bug forgets to ‘assign’ it to appropriate developer? Suppose a new QA engineer has joined and he is not sure which developer is working on which feature groups ?
- What if Nitin changed the bug status but forgot to assign it to Ajit for testing. In this case, Ajit is not aware that the bug is fixed and hence it may not get tested on time !!
- What if project manager wants to know how many bugs were reported for Ticket, for Wall, for role & permissions etc. ? Or he needs some charts for bug distribution by feature groups (components)? There is no quick way to filter tickets by feature groups.
Component feature of BootStrapToday (or Feature Group) addresses these shortcomings. Now let’s consider a new workflow using the ‘Component’. First Anand (the project manager) has to configure some project settings.
- Project Manager (Anand) creates a new project called ‘BootStrapToday’.
- He then adds users Nitin, Vishwajeet, Vaishali and Ajit. Nitin, Vishwajeet and Anand are assigned ‘developer’ role. Vaishali and Ajit are assigned QA engineer role.
- Anand then goes to Project Settings page and start creating various components (or feature groups or modules). The team has decided to implement account, project and Tickets and milestone first. So Anand creates 4 components ‘account’, ’project’ and ‘Ticket’ and ‘milestone’.
- Each component has an ‘implementation owner‘ and ‘verification owner’. ‘Implementation owner’ is the person responsible for implementing or executing the feature and also responsible for any bugs reported. If there is a team of 4 developers working on feature, then the team lead will be implementation owner. Similarly ‘Verification owner’ is the person responsible for checking and verifying that implementation is correct/as per spec. If there is QA team working on one feature group. Then the QA team lead will be ‘verification owner’.
- Anand decides that Vishwajeet will implement and maintain Account and Project while Nitin will implement Tickets and Milestones. Hence he assigns Nitin as ‘implementation owner’ for Ticket & milestone and similarly Vishwajeet for Account and Project.
- Anand then decides that Vaishali will responsible for testing Account and Project and Ajit will be responsible for testing Ticket and milestones. Hence he assigns Vaishali as ‘verification’ owner for Account and Project and assigns Ajit as ‘verification owner’ of Ticket and milestone.
Now team starts the development. And Vaishali reports a crash bug during project creation.
- She adds the bug, set the priority to ‘blocker’ and then set the component to ‘Account’. And then submits the ticket. On server, the BootStrapToday will check that the ticket is not assigned to anyone, however ticket has a component and Nitin is the Implementation owner. BootStrapToday server will then automatically assign the ticket to ‘Nitin’.
- Nitin logs in and see the ‘Newly assigned’ ticket in ‘Needs your attention’ section on the user dashboard. He sees that its blocker crash bug. He immediately starts working on it.
- To track the time spent on fixing this bug, Nitin starts the timer on the bug. Since the bug is in ‘open’ state the moment timer is started on the bug, the bug status changes to ‘in progress’. This way Anand (project manager) knows the Nitin has started the work on the crash.
- Nitin fixes the crash and commits the code changes. Nitin then changes the status of bug to ‘resolved’ and submits the new status. The BootStrapToday server will see the Ticket is assigned to Nitin and Nitin has resolved it, the server will then look at the ‘verification owner’ of ‘account component’ and assign the ticket to verification owner. This ticket is now assigned to Vaishali for testing/verification.
The new workflow is now easier. If tomorrow Vishwajeet becomes the implementation owner for ‘Account’ then Anand just has to change the project settings. New tickets for ‘Account’ component will now be automatically get assigned to Vishwajeet.
Anand can easily filter tickets by component and see how many are open and reschedule them, change the priority etc using Quick Edit.
Hope this will convince you to define some components in your projects. 🙂