Product manager and engineers decide together when a feature/project is ready to be launched or when scope needs to be cut or changed.
In almost every Scrum team I've worked with, they get close to the end of the iteration and start doing bad things - just to fit their interpretation of Scrum.
At the end of the iteration, they have a unfinished tasks and one of two things happens.
The ScrumMaster/Product Owner/Manager starts berating them for "not being committed to completing tasks within the scrum" (regardless of the fact the task will take as long as it takes, and same SM/PO/Manager has been ignoring the problems mentioned in the daily stand-up).
Or, they mark that task as "complete", but make a new story for the remaining testing/bug fix/additional requirements work. They eventually have to deal with the fact their burndown chart is almost flat, since they're creating a half point of work for every point they close.
They also have people who complete their tasks early, but don't want to bring in another story, because that's "a violation of Scrum". Or they're worried about not being able to complete it by the end of the iteration and going through the previously-mentioned problem.
And no amount of bringing this up in retrospectives will change anything. In the scientific method, if your hypothesis fails in reality, you reject the hypothesis and search for another. In IT project management, when your process fails in reality, most people apparently prefer to reject reality.
Just admit you're doing Kanban and stop causing the problems created by arbitrary deadlines created by your iterations.
Redefining "complete" or letting a story roll over, e.g. the estimate for finishing it was wrong, seems to indicate something doesn't work as it should.
Breaking down a project into milestones sounds like a great idea, i totally agree that project management could use an alternative.
Besides undercommitting for the sprint, I've seen a lot of point inflation. Developers start padding their story point estimates to allow for extra time.
The worst case I ever saw was a team of five developers breaking down a feature request into very small stories with total points that would require the whole team's workload for two sprints. I completed all those stories by myself in three days. I'm good, but not that good. I suspect the team was so tired/afraid of being admonished by the Product Owner, they just kept padding and padding their estimates.
Of course, no one bothered to look at the cause of the problem behind the developers massively over-estimating required effort. "The Process" is always right, and the people are always wrong. Isn't that the first principle of the Agile Manifesto (sarcasm intended)?
The moment estimates are no longer without consequences you get this kind of behavior. I've done it too, in a place where I personally had to be present in a call with the customer to explain why I went 2 hours over the (someone else's) estimate. Your behavior changes after such a call.
The main point I was trying to get across is that team morale appears to be very important for the velocity. You don't get high morale by stuffing too much work into a sprint or making any single story important.
My main objection with Scrum is that people tend to take the rituals as gospel. Which is why I mentioned Agile rather than Scrum.
My team tried ad hoc meetings. We wound up not having the meetings. We now just stick to the sprint schedule, at the behest of our manager.
This isn't a post about scrum vs kanban. It's primarily about the value of using a specific definition of milestone to encourage incremental delivery. And to highlight some of the benefits of delivering in this way.
If you estimated the lowest on multiple things - you got the one where you deviated the most.
If you overestimate everything - and you never finish things close to the mean estimate - that's a sign you're a low performer...
This is but a different kind of a rat-race?
Is that something that should've been caught in integration tests? Why did it pass review then?
As long as it's not a pattern, it's not a problem.
If something super severe happens - that's an organization-wide problem...
It's very hard to find axiomatic statements like those, that actually work in the possible multitude of contexts.
Which assumptions are behind that statement?
Does the team have uniform experience working in a single product? That statement feels more applicable here.
Or are there multiple work streams that aren't even touched by a few members and everyone is involved in estimations for everything? That statement feels less applicable here, and trying to enforce it could lead to experts in one workstream to be considered low performers, which motivates a consulting style lowest bidder environment, probably ending in overworked people and low quality code reaching prod.
This makes it easy to uncover simpler solutions (if everyone had a higher estimate) or pitfalls (if everyone had a lower estimate).
So a slightly more flexible sprint? I personally hate sprints - they tend to be inflexible and sometimes force you to make the wrong compromises. They are typically filled with many disparate tasks that often require you to context switch back and forth repeatedly. If you under estimate the time some tasks take, the numbers paint you as a weak performer. Those who game the system by over estimating every task are viewed as super achievers, even if their actual value contribution is far lower. I think if you take away the metrics aspect of sprints, it actually becomes more useful.