I'm often asked how you could possibly do agile software development given a fixed budget. The good news is that, yes, in many cases, it is in fact possible to work under these sorts of restrictions and still be agile. Because your budget isn't the only potential restriction you may face, this month I explore strategies for dealing with the common constraints your business stakeholders may choose to put on software development teams.
A common concept within the project management community is the iron triangle (Figure 1), which says that of the three factors of resources, schedule, and scope at least one must vary, otherwise quality will suffer. Quality suffers because of shortcuts and/or poor decisions made by technical staff in order to conform to the constraints placed upon them. Ideally all three factors should be allowed to vary, giving you the greatest management flexibility, but that rarely occurs in practice. I explored this concept in detail in my March 2003 column "Iron Triangle: Something's Gotta Give" (www.ddj.com/dept/architect/184414962).
An implication of the iron triangle is that although your team may face some constraints, you still have some room to maneuver if some factors are not constrained. Although many people say they are worried about how to manage a "fixed-price" or "fixed-estimate" project, their real concern is how to manage a "fixed-everything" project. This is the worst-case scenario, so let's not start there. Instead, let's explore strategies for how to work when each individual factor is allowed to vary. With this knowledge in hand it becomes much clearer what management options you still have for your given situation.