Architecture in an agile project

Monday, January 21, 2008 9:22:46 AM (Mountain Standard Time, UTC-07:00)

Something our team has wrestled with over the course of our agile adoption is how architecture and framework development fit into our Scrum process.  We strive to deliver an increment of functionality to our client at the conclusion of each sprint.  However, in many of our early sprints, we have to do architecture and framework development.  The things we develop on these types of architecture/functionality tasks are not really useable by our clients and we really can't demo them either.  Brian Noyle recently wrote a post on his blog asking a similar question.

So, we've decided that the best of course of action is to strike a good balance between architecture/framework and functionality development.  In earlier sprints, we've accepted that architecture/framework will be a big part of what we're working on.  But we've also become cognizant of the fact that we need to show something to the client in terms of functionality.  So, we usually comb through the backlog and pick the highest prioritized backlog item that we can complete early in the first sprints, while still doing the architecture/framework tasks we need to get done.  In this way, we ensure that the client sees forward progress that they can touch and understand right out of the gate, and we build the architecture and framework to support future development efforts on the project.  As we progress through our development, architecture/framework tasks become fewer and our delivery of functionality increases steadily.  In graphic form, it looks something like this:

image

Monday, January 21, 2008 10:05:15 AM (Mountain Standard Time, UTC-07:00)
This is a common problem that we face on a regular basis in building solutions for our clients. One principal we emphasize is that even when building infrastructure/framework functionality we always ensure that there is some business functionality that we can associate with it which can be demoed. You should be able to associate a story to any application infrastructure and even if what is demoed relies heavily on mock/stubbed functionality or shows only one or two simple input screens, it still associates infrastructure needs to the business functionality that will consume them. It also makes it easier to communicate to the product owners the value of investing in these frameworks or infrastructure (otherwise they have a tendency to get suspicious on how this effort really supports their needs).

Bryan
Bryan Campbell
Monday, January 21, 2008 3:33:28 PM (Mountain Standard Time, UTC-07:00)
I agree wholeheartedly to the blog contribution, but want to add a comment to the graph. Architecture or framework related work does not disappear. It may get less over time, but at some point increase again, based on new functionality requested that requires refactoring and adapation. Or, business requires may change requiring different/new technology or a new platform.
Ulla
Monday, January 21, 2008 3:35:21 PM (Mountain Standard Time, UTC-07:00)
At Ulla: Thanks and I agree with you. My graph was just meant as a generalization to illustrate a basic point.

Chris
Chris Spagnuolo
Comments are closed.