Iterative development is not unplanned development

What the...

I got a great question from a software developer who also happens to be a fellow CMU alum.

I have a question related to managing scope creep with respect to “on-going”/iterative development processes.

I’m currently managing a project where we’re redesigning my application’s primary workflow. Simply put, the app is currently designed to have users to signoff all items and we’re redesigning it to be exception-based (only require certain items to be signed off).

As we’ve progressed down the path of planned iterative development, a lot of good/new ideas for future enhancements/requirements spring up. I find myself regularly working with my users and “working group” to prioritize and analyze if any of these new ideas need to be considered to build sooner rather than later (and thus triggering plan adjustments or delays).

I often feel like I’ll end up delivering a product that does deliver the initial vision, but still doesn’t make my users happy, as they’ve already shifted their expectations to wanted the “next” thing (aka phase 2).

Do you have any other tips about how to manage this process?

I’ve used things like taking a timeline-style roadmap and adjusting it by overlaying the new requirements and shifting the timeline out. Do you have an recommendations of ways to present this type of information?

Curious your thoughts. Thanks.

— Seth L.

Iterative software development can be a really useful—and highly effective—tool for software development, but it’s also one of the most abused tools I’ve seen. Even as recently as a few days ago, someone in charge of a software team that’s critical to his comapny came to me with the (incorrect) assertion that iteration just means diving into a prototype without talking to anyone or doing any investigation. Iteration done well can lead to very high quality software. But as Seth saw, iteration done poorly can lead to scope creep and serious planning issues.

Making your users “happy” means managing their expectations. They need to see exactly what you’re working on, and what’s coming next. If all people see is deadlines and they don’t have a sense of what’s going on, then they naturally start looking to the next deadline, because that’s all they see. The more visibility you can give them into the way you build software, the more understanding they’ll have – that’s just human nature.

There are a few things that work well for improving visibility into your project’s iterations. One of them is a task board, which typically involves sticking index cards with your user stories or scenarios on a whiteboard or wall. This means that you actually need to have user stories or scenarios. Scope creep is often an indication of a requirements problem, and getting consensus on at least the scenario level about exactly what’s going into the iteration. Having the index cards arrayed on a task board, with each index card showing the status (“planned”, “in development”, “completed”, “out of scope”) gives a lot more visibility into exactly what you’re building and how you’re building it. In a lot of ways, this is a sort of iterative development project plan.

Another way to prevent iteration-related scope problems is committing to delivering releasable code at the end of each iteration. Test-driven development (or, at least, developing complete unit tests) and continuous integration are effective ways to help make that happen. If your stakeholders are comfortable that you’ll deliver high-quality code at each iteration, they’ll feel less pressure to get the new features in immediately, and will be more willing to wait until the next iteration.

If this sounds like something that might help you, I definitely recommend reading the interview Jenny and I did with Mike Cohn for Beautiful Teams, who knows more about agile and iterative planning than pretty much everyone . He has a lot to say about effective iteration planning. There are pictures of task boards he’s used in the past.

That gets me back to the basic idea—one which I give Mike a whole lot of credit for helping people understand—that iterative development, especially in an Agile project, works best when we take the time to plan each iteration. It still faces the same problems: requirements need to be discovered, scope needs to be controlled, and progress needs to be communicated to everyone who cares about it… especially to anyone who can potentially make the developers’ lives more difficult. That’s why the most successful Agile development projects collect requirements and document them using user stories (or other techniques for writing down what the software needs to do). They plan their progress using task boards, forecast them using calculations and charts like project velocity and burn down rates, and constantly keep any business owners and other stakeholders up to date on their progress.

It’s a great way to develop software, and it’s been really effective for a lot of teams. And I think it shows that iterative development does not necessarily mean unplanned development.

When I sent this to the developer who sent me the question, he had an interesting follow-up, which I thought deserved a response:

So I’ve been digesting this a bit and I am curious to get your thoughts about adapting project management fundamentals into the often fluid process of app management. I manage a few virtual projects within my company and at times have struggled to keep things focused as business demands and/or interests shift over time. Similarly, the “iterative” approach has helped to clarify requirements while building out new flows/apps, but as you pointed out can be very tricky to get “right”.

It’s funny how often I hear people say, “Well, this project management stuff works in theory, but my project is fluid” (or “changing,” or “under too much pressure from the business,” or “critical,” etc.). It turns out that pretty much every project is challenging, and project management is set up specifically to deal with that kind of challenging project.

Here are two thoughts I had relating to this idea.

First, the iterative development model works very well, as long as you’re committed to delivering a high-quality product at the end of each iteration. Whether or not you develop using an iterative approach, you need to manage change: prevent unnecessary changes, and make sure you understand the impact of any change that you make. It also means that you need some sort of scope baseline, so that you know what is and is not a change. It’s faster and easier to update software on paper, before it’s written into code, so the more changes you can move to the “write it down and review it” phase of your project, the better.

And second, if your business is overly demanding, it often means that you could manage your stakeholders’ expectations better. Make sure you identify them – and write down their names and needs! – from the very beginning of the project. Talk to them… a lot. Make sure they’re in the loop. If possible, see them so often that they’re sick of seeing you. If they’re always aware of what you’re doing, there won’t be nearly as many surprises. Also, the more your stakeholders understand the details of the work that you’re doing, the more slack they’ll cut you when they ask you for changes. Often, when someone puts a lot of pressure on you to do the impossible, it’s because they don’t realize that’s what they’re asking.

Announcing Head First PMP, 2nd edition!

Head First PMP cover

“I teach Project Management for for a project management firm and its clients. Using Head First PMP exclusively as the course material, my students have an 84% first time passing rate for the PMP and CAPM. This is by far the very best and most complete book for anyone looking to improve their project management skills and pass the PMP exam.”

—Rocket Williams, PMP, MCITP, MCT
Director of Business Development and Project Management Processes
AdaQuest, Inc.


Jenny and I just put the finishing touches on the second edition of Head First PMP, and it should be out in bookstores as soon as it comes off the presses. We’ve brought it completely up to date to provide 100% coverage of the new version of the PMP exam. It was definitely a lot of work — and in case I haven’t mentioned it lately, I’m lucky to have a coauthor who’s as committed, hard-working, and quality-oriented as Jenny! You can download Head First PMP, 2nd Edition today as an O’Reilly Rough Cut PDF (see the end of this post for details).

I’m really impressed with all the changes that PMI put into the PMBOK® Guide, 4th Edition (which is what the PMP exam is based on). When we first wrote Head First PMP, there were a few concepts and ideas in the third edition that Jenny and I found a little challenging to explain in a straightforward way that’s easy to understand. When we read the new PMBOK Guide for the first time, I was happy to see that they’d improved some of the more cumbersome concepts that people had a really tough time understanding — like the difference between a scope statement and a preliminary scope statement, for example. Now that the preliminary scope statement’s gone, scope management makes a lot more sense.

And there are new additions that made me really happy. It was great to see a whole new process dedicated to collecting requirements. If you’ve read my Requirements posts, you know how important I think requirements management is to making sure your projects are successful. I’ve believed for a very long time that project managers — especially for software projects — have a responsibility, even an obligation, to make sure the whole team understands the project’s requirements. That’s why we put a whole chapter on requirements in our first book! So the Collect Requirements process is a really welcome edition to the PMBOK Guide.

There was another really interesting addition: the addition of iterative project phases. I think it’s really useful that the project management world has increasingly embraced iterative project development, especially in software. Personally, I attribute this, at least in part, to the fact that Agile development has soared in popularity over the last few years. The fact that project managers are being trained to work with teams working iteratively is a really good development, and it’s great to see that being reflected on the PMP exam.

Also, it was nice to see that the Manage Stakeholders process got a new name: it’s now the Manage Stakeholder Expectations process. I always thought it seemed a little… unrealistic? yes, that’s a good word — it always seemed a little unrealistic to think that a project manager could actually manage stakeholders on a real project. But managing their expectations is something that every project manager needs to do in order to keep a project running.

There are lots of other PMBOK® Guide changes, big and small, and we’ve put months of painstaking effort into tracking down each one and making sure the book is completely up to date. And we put together a phenomenal review team to help us ensure that Head First PMP, 2nd edition has 100% coverage of the new version of the PMP exam based on the PMBOK® Guide, 4th Edition.

Oh, one more thing. I wanted to take a minute and thank all of the people who’ve been writing to us and asking when the new edition of the book is coming out. I’m sorry I couldn’t write back to each of you individually; we’ve been working really hard to make sure the new edition is as accurate and easy to use as possible, and we just didn’t have time to answer all of your e-mails. But we definitely heard you, and want you to know that we think the second edition is even better than the first! And, as always, if you’ve got questions about project management or difficult PMP topics, definitely send them to us. We get a lot of questions and e-mails, and don’t always have time to answer each one, but we do love Q&A and if it’s a good question we’ll try to write a good answer!

Head First PMP back cover

You can download Head First PMP, 2nd Edition today as an O’Reilly Rough Cut. They’ve got a great deal where you can get the online rough cut PDF today when you pre-order the book! Or you can just pre-order the book and get 35% off.

Check out our O’Reilly Week in Review podcast interview

Edison Phonograph

James Turner‘s weekly O’Reilly Week in Review podcast this week features an interview with Jenny and me about Beautiful Teams, and what goes into making a team work well.

I’ll transcribe a quick excerpt from the interview – we’re talking about our interview in the book with NASA manager and team leader Peter Glück:

Jenny: You hear all your life about what it’s like to work at NASA. There were so many times we’d want to put in place a practice, and you’d hear, “Well, this isn’t NASA”. So to hear about how NASA actually did stuff was really exciting. It was such a revelation that they pretty much do stuff like everybody else, you know?

Andrew: I kind of had a feeling of, “They put their pants on one leg at a time, just like everyone else.” They build the same way, they test the same way, it’s just that they put a whole lot more time, money and effort into testing. And there are some things they can’t to. We talked about continuous integration. I asked him, “Do you do continuous integration?” Well, no, they don’t do continuous integration, because that involves integrating with a hardware platform that they have to take into a clean room. If your inegration process involves a clean room, it probably can’t be automated.

If you want a little background about what goes into building an O’Reilly book, working with the folks there, and some of the thought process behind Beautiful Teams, definitely have a listen. You can hear the whole interview here!