- Re-factoring: I am aware that particular section of code needs re-factoring, as it was just built as a prototype. But it will have to wait, as the feature development takes priority over re-factoring.
- 3rd Party dependency: I know we should integrate with these newly released 3rd party libraries as it contains the fixes we need. But based on prior experiences it could take up to a week. It would be better if we do it in the next iteration.
- Tests: I wanted to write end to end automated test case for this feature, but if I develop that, I can’t test the other features under development. I will plan for automated tests in next iteration.
- Defects: We are done with our stories, but we have 10 open defects that we plan to target first thing in next iteration.
The above “buts” will reduce the team’s velocity and add to technical debt. It will hinder teams ability to self organize and move them from being truly agile. If above reasons are ignored, for the first few iterations the teams might show good results and get away by breaking scrum principles. However in the long run this is a lose-lose proposal. Development of new features will take longer as development has cut corners for re-factoring effort. Development team will also spend considerable amount of time fixing defects that were missed due to lack of unit tests. Test team will spend more time running regression tests and verifying defects rather than doing exploratory testing and testing new features. The further the team pushes integration with 3rd party library, the more risk it adds to the overall release due to last minute surprises.