Hi,
I have two related question regarding Scrum.
Our company is trying to implement it and sure we are jumping over hoops.
Both question are about "done means Done!"
1) It's really easy to define "Done" for tasks which are/have - clear test acceptance criterias - completely standalone - tested at the end by testers
What should be done with tasks like: - architecture design - refactoring - some utility classes development
The main issue with it, that it's almost completely internal entity and there is no way to check/test it from outside.
As example feature implementation is kind of binary - it's done (and passes all test cases) or it's not done (don't pass some test cases).
The best thing which comes to my head is to ask another developer to review that task. However, it's any way doesn't provide a clear way to determine is it completely done or not.
So, the question is how do you define "Done" for such internal tasks?
2) Debug/bugfix task
I know that agile methodology doesn't recommend to have big tasks. At least if task is big, it should be divided on smaller tasks.
Let say we have some quite large problem - some big module redesign (to replace new outdate architecture with new one). Sure, this task is divided on dozens of small tasks. However, I know that at the end we will have quite long session of debug/fix.
I know that's usually the problem of waterfall model. However, I think it's hard to get rid of it (especially for quite big changes).
Should I allocate special task for debug/fix/system integrations and etc?
In the case, if I do so, usually this task is just huge comparing to everything else and it's kind of hard to divide it on smaller tasks.
I don't like this way, because of this huge monolith task.
There is another way. I can create smaller tasks (associated with bugs), put them in backlog, prioritize and add them to iterations at the end of activity, when I will know what are the bugs.
I don't like this way, because in such case the whole estimation will became fake. We estimate the task, mark it ask complete at any time. And we will open the new tasks for bugs with new estimates. So, we will end up with actual time = estimate time, which is definitely not good.
How do you solve this problem?
Regards, Victor