I get your point & generally I agree with it. In the ideal Scrum with ideal team the velocity can be predicted very well. And we have some examples of such teams.
However, when you are working closely with the client that has limited experience in Scrum/IT/Software Development, you’ve got more risks that is difficult to manage using Scrum.
Long story short: my point is that when you run your own product, when you have experienced team or at least the team that wants to learn how to work with Scrum, it would work and you would be even able to predict the releases.
In the real life you always has to manage the different risks:
— limited access of Product Owner to the team;
— not experienced persons (and they don’t want to learn);
— the business that pushes the specific dates;
— limited resources in the team (e.g. you need 1 backend, 3 frontend but you have 2 backend and 1 frontend :) );
— difficult communication channels.
And sometimes it is very difficult to manage these risks using Scrum because of the cons
I really prefer Scrum/Agile methodologies but I’m not idealist. I would say that the solution should be between due to circumstances.
