Whether you’re assigning complexity points to a story or scoping a project in terms of iterations, here are factors to consider when estimating the complexity of a task:
Requirements
- Stability of requirements
- Turnaround time for requirements questions
- User types: external users, internal users, support, maintenance development
- Dependencies on other developers/teams’ work being delivered
Architecture
- Third-party technology integration
- Developer’s familiarity with technologies
- Stability of technologies
- Dependency upgrades
- Performance and throughput needs
The Code
- Testing needs: automated, manual, QA team coordination, user acceptance approach
- Data persistence
- Data pushes or synchronization
- Monetization: payment processing, advertising integration
- Search reliability
- Robustness of validation needed
- Robustness of error handling needed
- User interface: functionality, design
- API accessibility
- User accounts: third-party integration, locking, resetting, customer support
- Security: TLS, authorization, exploit protection, compliance
- Secondary behaviors: caching, logging, auditing, notifications, analytics
Delivery
- Infrastructure setup
- Data import or migration
- Complexity of go-live
- Localization