We are small team of 4 developers who manage 2 large websites + 4-5 small websites + we have a channel for customizations / development service (one time service).
With all websites on support we work by hourly rates. With customizations (we moved them into separate project) we make estimations and sell them by fixed price.
We have different tasks from small (like moving a button, changing color) to large (2-8 days' length, like developing a new extension with some complex logic).
On support we have very different loads from time to time. Some days we have only a few tasks, other days they can add 1-2 big tasks and 20-50 small and mid-size tasks as well.
Currently we create such task types:
- Fast Task - very small tasks can be done without confirming from client, like <= 1-2h
- Task - usual task > 1-2h
- Bug - We know how to represent it at least. Sometimes we know how to fix, but sometimes we can't estimate it (need to research, research taking for example 2h and after that 5min to fix it)
- Problem - something we even can't reproduce or we don't know how to deal with. Can't be estimated and planned.
- Epic - used to decompose big tasks if possible. Sometimes used just to group a lot of tasks by one responsible manager from client side, adding new tasks related to one big story. As an example, UI/UX improvements with AB testing for a long time.
We make estimation on all tasks where possible.
Also we always have some tasks that can't be closed for a long time even if they are completed from our side. Client developers have no time / didn't finish code on their side (CRM, prepared products etc.) - we need to wait on such tasks for a long time and all those tasks are open in the list to not forget about them; they can be in status "Customer Testing" for example, but still in the list.
At this moment we have about 200 opened tickets/issues.
Very often, the client is asking for something ASAP and most likely they would ask this at the same time as another client or ask for a for few tasks at the same time :)
Clients sometimes ask us when some future task would be finished.
Which software can we use to deal with this and how do we need configure it for the best way to handle all of this?
I mean, how we can plan and get real deadlines in such chaos?
Also need to say - currently we use JIRA and I tried to create short sprints like 1 week, put there work for 1 week and in that case I can plan for example for 2-3 weeks ahead. But this doesn't work for the following reasons:
- Sometimes our estimation is very different from reality - we are working on this + we plan a sprint for just 4 days (1 day is for such mistakes and bugfixing)/
- Some tasks are finished on our side, but not tested or not prepared by the client and by the end of the sprint we need to move this task to the next sprint over and over again.
- JIRA allows to plan a sprint only by Original Estimate, but such tasks as in point 1 already are almost done but not closed. If we close them and later in 3 weeks when the customer would test it we will create another tasks - then the total time by task would be separated and we can't see how long it took. If we close the task - it is not merged yet to master - we can lose it at all and need to waste time to find the task and branch for it (we use branch names by task)
- Some tasks can't even be estimated as I wrote before
- What if a task is already on production, but after 1-2 weeks we found a bug in it? Reopen would have Original Estimate, Subtasks can't be included to sprint.
I thought about EasyRedmine with their resource planning, but not sure if this can help to handle all of this.
So please, any ideas or links where to find how I can manage all of this and how to make this processes better? We are ready to change the whole process if needed.