A huge advantage of Agile is that it spots problems very quickly! Commitment matters on a Sprint. One cannot continuously tack on story points, rather it is more efficient to remove the two least important stories from this Sprint, and bring the more important ones in. This forces the team to look at priorities. Whatever one is getting done, one gets done, and that’s it!
The Minimum Viable Product (MVP) + Stretch Goals should be accounted for, in the plan. If the MVP starts slipping, only then would the stretch goals not be considered. One needs to be able to quickly recognize that one has issues to research, or some part of the system is not getting completed. Then prioritize what needs to get done. This requires discipline.
Imagine baking a cake, with the foundation, the middle layer, and the icing. The Waterfall methodology will call for stacking one layer on top of the other. One would need to start with the base, frame up the middle and then layer the whipped cream and icing on top! But one can’t set the icing until the foundation and middle is done. Agile on the other hand can be analogized to creating thin slivers of the cake, comprising of the base, middle layer and the whipped cream and icing on top! With Agile, the customer may not get everything, but everything that she gets is from end to end. So there aren’t any nasty surprises that when the cake is done, the icing will be dripping off!
Disparate teams don’t work. For instance, the UI Team, Framework/Platform Team, and the Services team need to build together. If there is such a team, one begins getting cadence. The project starts humming smoothly and settles down with a certain velocity, as a self-organizing and self-governing group. Note that not every Scrum team works at the same speed. Another pitfall in this equation is the constant chopping and churning. Every time a reorganization or restructuring occurs, the team composition changes and this velocity gets thrown out the window!
Teams cannot be switched around just because certain individuals are rock stars! One cannot afford to disturb the dynamics of the team. Management loves the term ‘fungible’ – for instance I take this Dev resource and put her/him in a different team that is not performing so well. This never works! For instance, one can’t displace a Database person and put her/him into UI or Machine Learning. Unfortunately, Management tends to rotate resources into different specializations and categories, but not in topics – such as interfaces, data ingestion or data analytics.
In a nutshell, Agile is very effective if and only if implemented properly within the organization with a top-down approach – Management buy-in, effective Product Owners, and good self-governing & self-organizing teams, backlog grooming, a dedicated Scrum Master and plenty of training!