A new software project starts in your company. Budget has been approved and a (soft) deadline set.
Hey.. You are lucky this time! One of the managers "knows" about agile, he has read a book about Scrum. So we are going to do Agile this time! :)
The project manager gets renamed to product owner and starts writing stories for the whole project and adds them to the backlog.
Yes. All of them! She already knows what we need for the whole project.
We will work in iterations. 2 weeks. Let's call them sprints! :)
We will estimate the stories. We will check how many stories we are able to finish per sprint and based on that and the estimation we will know how many we will be able to do in the next sprint.
Let's call this thing velocity. The velocity tells us how many stories we are able to get done per sprint based in the estimates.
Heyyy!! And look at that! If we have EVERYTHING we need in the backlog, and EVERYTHING estimated.. we can find out when we will finish the project and be able to deploy our code to production!!
OMG! We are sooo Agile! :-)
Does this sound familiar??
The story I just told you it's real. And I have seen it many times. And no, sorry to disappoint you, but that's NOT agile, it's iterative waterfall. It's the same as doing waterfall but iteratively. All the requirements are set up front as user stories in the backlog and then work is done through sprints. This plan is rigid and bound to fail. Isn't the goal of Agile to embrace change?
I have met so many people who think they work in an agile environment. Who think they are doing scrum because they work in iterations and know all those buzzwords: sprint, stand up, retrospective, velocity, etc. These people are just following the book but miss the whole picture. Following the practices because that's how it has to be done.
Forget the practices and look deeper into what they mean. Which are the values? Why they exists? Why should I follow them? Should I follow them?
Is this what we do really agile?