Doing agile the traditional way

[tweetmeme source=”activelylazy” only_single=false]

Doing agile is easy. If you’re working on a greenfield project, with no history and no existing standards and processes to follow. The rest of us get to work on brownfield projects, with company standards that are the antithesis of agile, and people and processes wedded to a past long out of date. Oh you can do agile in this environment, but its hard – because you have to overcome the constraints that meant you weren’t agile in the first place.

Any organisation hoping to “go agile” needs to overcome its constraints. The scrum team hits issues stopping them being properly agile – normally artefacts of the old way of doing things – they raise these to the scrum master and management hoping to remove them and reach the agile nirvana on the other side. Management diligently discuss these constraints, the easiest are quickly removed – simple things like better tools, whiteboards everywhere; but some take a bit longer to remove.

Before too long, you run into company culture: these are the constraints that just won’t go away. Not all constraints are created equal, though – the hardest to remove are often the most vital; the things that stop the company being properly agile. So let’s look at some of the activities and typical constraints a team can encounter.

User Story Workshops

If you’re doing agile, you’ve gotta have user stories. If you have user stories, you’re bound to have something like a user story workshop – where all the stakeholders (or just the dev team, if you’re kidding yourself) get together to agree the basic details of the work that needs to be done.

The easiest trap in the world to fall into is to try and perfect the user stories. Before you know it you’re stuck in analysis paralysis, reviewing and re-reviewing the user stories until everyone is totally happy with them. Every time you discuss them, someone thinks of a new edge case, a new detail to think about – so you add more acceptance criteria, more user stories, more spikes.

Eventually you’ll get moving again, but now you’ve generated a mountain of collateral with the illusion of accuracy. User stories should be a place holder for a discussion, if you waste time generating that detail up front you might skip the conversation later thinking you’ve captured everything already and miss the really critical details.


The worst thing is when it comes to producing estimates. The start of a new project or a team is a difficult time: you’ve got no history to base your estimates on, but management need to know how long you’ll take. With the best of intentions, scrum masters and team leads are often given incentives – a bonus, for example – to produce accurate estimates; there’s only two ways to play this: 1. pad estimates mercilessly and know you’ll fill that “spare” time easily; 2. spend more time analysing the problem, as though exhaustive analysis can predict the future. Neither of these outcomes are what the business really wants and certainly can’t be described as “agile”.


There’s a great conflict between the need for overall architecture and design; and the agile mentality to JFDI – to not spend time producing artefacts that don’t themselves add value. However, you can’t coordinate large development activities without some guiding architecture, some vague notion of where you’re heading.

But the logical conclusion of this train of thought is that you need some architectural design – so lets write a document describing our ideas and get together to discuss it. Luckily this provides a great forum for all the various stakeholders across the business that don’t grok code to have their say: “we need an EDA“; “I know yours is a small change, but first you must solve some arbitrarily vast problem overnight”; “I’m a potential user of this app and I think it should be green“.

This process is great at producing perfect design documents. Unfortunately in the real world, where requirements change faster than designs can be written, its a completely wasted effort. But it gives everyone a forum for airing their views and since they don’t trust the development team to meet their requirements any other way, any change to the process is resisted.

The scrum team naturally raise the design review process as a constraint, but once its clear it can’t be removed, they start to adapt to it. Because the design can fundamentally change on the basis of one person’s view right up to the last minute (hey! Cassandra sounds cool, let’s use that!); the dev team change their process: “sprints can’t start until the design is signed off”. And because the design can fundamentally change the amount of work to be done, the user stories are never “final” until the design is signed off and the business can’t get an estimate until the design has been agreed.


If you’re lucky, the one part of the project that feels vaguely scrum-y is the development sprint. The team are relatively free of dependencies on others; they can self-organise around getting the work done; things are tested as they go; the Definition of Done is completed before the next story is started. The team are rightly proud of “being agile”.

Manual Testing

And then the constraints emerge again. If you’re working on a legacy code base, without a decent suite of automated tests, you probably rely on manual testers clicking through your product to some written test script. A grotesque misuse of human beings if ever there was one, but the cost of investing in automation “this time” is outweighed by how quickly the testers can whip through a script now they’ve done it a million times.

Then worst of all possible worlds, because regression testing the application isn’t a case of clicking a button (but clicking thousands of buttons, one by one in a very specific order) you have to have a “final QA run”. A chance, once development has stopped, for QA to assure the product meets the required quality goals. If your reliance on manual QA is large, this can be a time-consuming exercise. And then, what happens if QA find a bug? Its fixed, and you start the whole process all over again… like some gruesome nightmare you can’t wake up from!

The Result

With these constraints at every step of the process, we’re not working how we’d like to. Now either we can view them as a hindrances to working the way we want to; or we can view them as forcing a new process on us, that we’re not in control of. What we’ve managed to do is invent a new development methodology:

  • First we carefully gather requirements and discuss ad nauseum
  • Then we carefully design a solution that meets these (annoyingly changing) requirements
  • Then we write code to meet the design (and ignore that the design changes along the way)
  • Finally we test that the code we wrote actually does what we wanted it to (even though that’s changed since we started)

What have we invented? Waterfall. We’ve rediscovered waterfall. Well done! For all your effort and initiatives, you’ve managed to invent a software development methodology discredited decades ago.

But we’ve tarted it up with stand ups, user stories, a burn down chart and some poor schmuck that gets called the scum master – but really, all we’ve done is put some window dressing on our old process and given it a fancy dan name.

If the ultimate goal of introducing agile to your company is to make the business more efficient but you’re still drowning in constraints – then that means the goal of introducing agile has failed: you’ve still got the same constraints, and you’re still doing waterfall – no matter what you call it: a rose by any other name still smells of shit.

2 thoughts on “Doing agile the traditional way

  1. Well, not that actively lazy! I’ve seen people get really excited because to them Agile meant the business talked to the developers! Good plan. But I don’t think Agile/Scrum etc is really solving the primary problem. I mean good developers write good code. That’s what they are trained to do. Any method will work with a well motivated team. Isn’t the problem developers building the ‘wrong’ thing? Sounds silly (how can they do that?), but it’s still about pretty rubbish requirements isn’t it? Did that go away when I wasn’t watching? This whole ‘promise for a conversation’ business isn’t going to wash if nobody sets up an appointment to have the chat. I saw somewhere this turned into a ‘placeholder for a conversation’. To me, this is chaos, when does the conversation happen, in the planning meeting? Welcome to the 3 day planning and frustration meeting. Lean says ‘eliminate waste’. Requirements questions should be handled in ‘analysis time’ not programmer’s time. ‘It’s not Agile’ – all well. It’s not about no requirements, it’s about appropriate requirements.
    I’m interested in:
    • how to bring the PMO onboard
    • how to reconcile the need for ‘governance’ with Agile
    • how to give senior management confidence
    • what to do when the customer isn’t full time available
    • reconciling enterprise stories, project stories, release stories, iteration stories, constraints, acceptance criteria etc. into a big picture
    • how upfront requirements/stories can still be Agile (keep it simple, but no simpler than it needs to be)
    • a synthesis of Agile modeling and the best lightweight aspects of UML

    I’m blogging at I also write at Come visit me. Hope jury duty turned out more interesting…


  2. Hi Peter,

    Thanks for your comment. All very good points. I don’t think agile has still solved a lot of this. Agile/lean has certainly given us better tools to try and build “the right thing” (whatever that might be).

    I must admit though, I do like the “user story as a placeholder”. But you’re spot on – it cannot be the *only* conversation that happens. Ideally, the user stories are borne out of a conversation; the placeholder is to remind you what was said, and an opportunity to discuss again/in more detail. In my experience though, normally one or the other happens but rarely both. I.e. developers remember what was said, and implement what they remember, this normally means you had a 3 day planning session; or the conversation doesn’t happen at all up front and you suddenly discover an epic halfway through a sprint and the sprint is again wrecked by trying to re-engineer the requirements. I think its very difficult to get “the right level of requirements”.

    I’ve not had chance to read all your blog; but I like your point about security concerns. There’s a real challenge with “horizontal vs vertical” user stories. Some user stories make sense expressed from the end user’s viewpoint. But when you have cross-cutting concerns (security & other non-functional requirements) its difficult to integrate them with your user stories.

    Looking forward to reading more of your blog and seeing some of your thoughts on this. Definitely agile/lean isn’t the be all and end all – but its a start.


Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s