Agile Pitfalls

Many of the great Agile converts from Waterfall proclaim that Agile is the Way Forward.  It solves all the problems of Waterfall!  No more late deliveries!  No more crunch time to shoehorn in last minute scope creep features!  No more grumpy developers!  Why, we will iterate to our answers!  We have found the Way and the Light and it is Good.

But Agile, like any other software engineering project management methodology needs a plan.  It still requires a set of clearly defined requirements (in SCRUM called Acceptance Criteria on each Story) with an overarching marching plan to get from here to there.  Otherwise, Agile descends into what is called headless SCRUM teams --- SCRUM teams who perform all of the  duties and ceremony of SCRUM complete with stories and SCRUM Masters and backlogs and moving blue cards on a board on tasks to show progress and doneness  but never produces anything.  The team needs to iterate toward a goal and not just iterate to go find themselves.

So before anything even starts the product owners (team owners) still need to decide on an overall shape to the thing, some core requirements of what it fundamentally does and what is delivered to the customer, a roadmap, a schedule, and an actual working plan before the team runs off to prototype and deliver all the things.  Otherwise, the team will produce a thing but that thing will unlikely to be, in this case, a working convention registration system.  

Sadly, despite many blog and LinkedIn posts to the contrary, even with Agile, we don't get rid of the requirements phase and the guiding hand of the architect. Instead, though, we don't start with 100 pages of requirements and fully fleshed out things simply handed to teams and tell them to go off and be little do-bees.  We're more informal.  We work in smaller, more manageable chunks with less upfront vision and more hands-on guidance.  We trade off certainty for flexibility.  But we still need requirements and we still need a plan because Agile might iterate lots but it still needs to deliver a product to the customer.