If you find this site useful, you should try my 55-page eBook here

Keeping Sight of the Bigger Picture

by Kelly Waters

Email This Post Print This Post Save As PDF
Keeping sight of the bigger pictureWith an agile development approach, there is no big spec and no big design up-front. Scope is variable. Requirements emerge and evolve. Features can be added, changed and removed throughout the project lifecycle.

So, with this moving target, how do you keep sight of the bigger picture?

Although agile development is all about breaking things down - breaking things down into micro pieces and delivering on a piecemeal basis - it is also very important to have some overall guiding context.

From my perspective, this context comes in 3 major forms:
  • Business Context
  • Project Context
  • Solution Context

Business Context

What is the business vision? What are the challenges and opportunities from a business point of view? What are the business goals - short, medium and longer term? Who are the customers? Why do they buy, and what do they use the solution for? What do they like and dislike about the product? Who is the competition and what are their solutions like?

Without this over-arching contextual information, any product development team is working with a major disadvantage.

In my experience, development people can be quite innovative. With this information - if development teams have a real insight into the business context - people on the development team can be proactive. Without necessarily being asked to work on a problem, or without being asked to come up with an idea, solutions to problems and new innovations will come to mind.

Project Context

If the development team is working on a project, many of the things defined in a more traditional project initiation phase are just as important in an agile development environment.

What is the specific problem or opportunity that the project is seeking to address? What is the vision for the project? What are the project objectives? What is the scope (broadly speaking)? What is the likely cost and timeframe? What are the benefits and how will they be realised? Who will work on the project and what is the project structure?

The answers to these questions (and more, of course) give people important guidance. And that guidance is more important than ever in an agile development approach, because of the freedom to change things along the way.

With this guidance, the project team has some parameters to work within, and a clear understanding of the expected outcomes.

Solution Context

I'm a big fan of User Stories. I've written quite a few entries on my blog about them recently, and how to write good User Stories. I love the fact they are so small. So self contained. So manageable. It really does keep things simple. But what should you do before you get down to the detail of individual User Stories?

It is important to look at individual User Stories in context of the overall solution. So what artifacts help us to do this? There may be others, but here are some things I certainly like to see before getting down to User Stories on a Sprint-by-Sprint basis:

  • High-level Product Roadmap - broad timeline across the top, perhaps in months or quarters; highlighting key product features or milestones. Unlike a plan, a Product Roadmap is indicative and evolves as things change. This provides the team with some structure around Sprint Planning, with the Product Roadmap helping to inform the priorities of each Sprint and set Sprint Goals.

  • High-level Visuals - this could be wireframes for key screens, Creative visuals of a web site, a conceptual story board for the UI (User Interface), etc. Whatever form it takes, it's a high level outline of how the solution will hang together from a user's perspective. The visuals don't need to cover every single screen. They don't need to show every feature. And the solution may not look exactly like the visuals when it's finished. In fact it almost certainly won't. But it's a guide to what's intended at the outset, and should cover the main scenarios for an everyday user.

  • High-level Solution Architecture - this doesn't need to be a detailed design, but you do need some architectural guidance in order to understand key technologies, product structure and how the overall solution hangs together from a technical perspective. In my view, this can be an evolving picture, the kind of thing that is sketched on a whiteboard at the start of the project, with more details being filled in as the project progresses and as technical decisions are taken.

Summary

So, in summary, an agile development team might break things into small pieces and deliver incrementally, but this makes it even more important to have the overall context always in mind. My advice would be to keep key guidance artifacts (such as project objectives, product roadmap, solution architecture) high level, lightweight and visual, and stick them on the wall along with the team's User Stories and daily tasks.

Kelly.

P.S. Click one of the icons below to join the growing community of people reading this blog by RSS or by email...
subscribe by rss feedsubscribe by email


Photo by b1uefish

  • Digg
  • del.icio.us
  • StumbleUpon
  • Yahoo! Buzz
  • Technorati
  • Facebook
  • TwitThis
  • MySpace
  • LinkedIn
  • Live
  • Google
  • Reddit
  • Sphinn
  • Propeller
  • Slashdot
  • Netvibes

4 comments:

  1. Mike Cottmeyer said...

    Hi Kelly,

    First I'd like to say that I enjoy reading your blog. I agree with this article 100% but see challenge for the Agile community here.

    The process of creating business vision and architectural vision is not well defined in Agile circles. You see Schwaber talking some about this in Managing Projecs with Scrum and Ambler is all over this idea with AUP. I have found reference to this in DeCarlo's work on Extreme Project Management.

    I think that in large part Agile assumes the business vision has been worked out by the product owner before the team gets involved. Agile also assumes that the architecture will emerge but there are clearly times when we need to be more intentional about key architectural decisions.

    It would be nice to see us embrace some language and/or process for defining these key decisions in a lightweight manner. I think many of us are so concerned with avoiding the BUFD we have neglected to emphasize that there are a few key decisions that DO need to be made early.

    Thanks the for post!

  2. Kelly Waters said...

    Hi Mike

    Thanks for your feedback; I agree with your comments.

    For things like the Product Roadmap I referred to, and a Solution Architecture diagram, I would characterise them as statements of intent, rather than plans or decisions.

    In that capacity they can be a very useful guide to the project team, and can evolve as requirements emerge and decisions are made.

    Kelly.

  3. Anonymous said...

    Kelly,

    Characterizing the solutions architecture as a ‘statement of intent’ implies that there could be enough change in the design to impact any preconceived ideas of budgets and timescales. The project sign-off process in most organizations set both cost and delivery timescales in stone. Your thoughts would be greatly appreciated.

    Regards

    Attilla Winstanley
    Solutions Architect

  4. Kelly Waters said...

    Hi Attilla

    Yes, you're right, this is certainly a delicate balance.

    There is definitely a difference between filling in details as you go, versus making fundamental architectural changes that materially impact the project's costs and timescales.

    I'm advocating the first point - draw an outline architecture stating your intent up-front, which serves as a useful guide and allows details to be filled in later as the project progresses and requirements emerge and evolve.

    Clearly in the latter case - where there is a fundamental shift in the intended architecture - this can potentially have a big impact on the project's initial assumptions.

    This, of course, has to be managed as an exception and decisions have to be taken about what to do in response.

    Responses to a problem like this are the usual suspects - add cost, extend timescales, reduce features.

    In my experience, doing a full specification and big design up-front doesn't avoid these pitfalls.

    It's impossible to know everything you need to know up-front, and even if you do, things have a habit of changing. Therefore, inevitably this risk exists in software development, whether you follow an agile methodology or not.

    Is this risk any worse with agile? Personally I don't think so. As long as an architecture outline does exist up-front, and that the right level of diligence is applied to the design of key components and their interfaces (at the time of development), I honestly don't see the risk as any greater. In fact, I see it as lower, because key components are being designed when there is more information available and therefore more certainty.

    Of course, in agile development methods, or in waterfall, there is no mitigation for poor design or a solution architecture that has not been thought through. Obviously architecture and design still requires expertise, whatever your preferred methodology.

    The only point of debate for me is not whether you do the solution architecture, but how much of it you choose to do up-front, and what bits can be left to be done as key components are developed.

    Identifying the outline architecture early should help you to make this judgement appropriately, according to the nature of your project.

    Kelly.

10 Key Principles of Agile Development

How To Implement Scrum in 10 Easy Steps

User Stories - Agile Requirements

Agile Project Management

10 Key Principles of Agile

How To Implement Scrum

Most Read

Agile Leadership

Agile Requirements - User Stories

Agile Estimating

Agile Testing

Agile Project Management

Lean Software Development

Agile Teams