I’ve been working with agile and Scrum for some time now and much as in some ways I like it I also feel there are issues with the process, so thought I’d put them here as a discussion point.
Pros |
Cons |
Quick feedback loop with customer/product owner | Requirements are only as good as the backlog |
Changes can be made with less overhead | Stifles innovation and creativity |
Functionality only delivered when required | People are not interchangeable resources |
Pointing stories and using velocity of team is more effective than traditional estimating | Overall Architecture and UX are better being thought about up front |
Technical debt can be regularly tackled | Requires highly skilled and disciplined team members |
CI builds and automated testing should help prevent bugs | Regular interaction and demos with the customer or product owner is essential |
Planning sessions and refinement mean the whole team understand the problem domain | Lots of time spent in meetings |
Pairing is a good way to learn new skills and prevent errors | |
With a decent backlog, and pointed stories it should be possible to pin point realistic delivery dates for features | |
Well defined stories should mean less time spent coding the wrong thing |
Agile development is still preferable to many other processes. In the past I have seen development done in a number of ways that didn’t work, Chaos Driven (“Everything is high priority and needs doing yesterday”), Loudest Voice Driven (“I’m the boss and I want x now!”) and Victorian Waterfall (“You can’t leave until it’s all done”). Agile or Scrum is preferable to all of these.
That said I feel there must be a better way to tap into peoples motivation and inspire them in ways that Scrum seems to restrict. I’d like a process where the customer interaction and quick feedback loop could still exist, along with quality testing, but with more focus on the teams responsibility to push the envelope and develop fantastic solutions to problems.