Managing Budgets and Billing while Practicing Agile Development

When we started transitioning into using an Agile development method just over a year ago, one of the first and most constant challenges we ran into was how to make it work for our clients. Agile has been a fantastic tool for defining internal processes that really work for us at Affinity Bridge. Many of our clients, being non-profit organizations and academic institutions, however, are accountable to boards who have to review and approve their budgets ahead of time. They're not able to bill according to work done during agile sprints, without having budgeted for the work ahead of time. Here are a few tips from the lessons we've learned for doing agile development while managing estimates and budgets in a way that works for our clients.

Fixed bid Request For Proposals (RFPs) are still a fact of life

We've been lucky enough to have a few ongoing projects where we have been able to do truly agile billing. The client knows how much our work costs, we ballpark for them how much work the features they're requesting will cost, and then we get to work with this understanding. But more often than not, when an organization wants to do a redesign of their website or begin a new web development project, they often need to know how much that is going to cost upfront so that they can request budget from whoever approves spending. When working with corporate clients, sometimes the Product Owner (the person who represents the client when working with us) is the person who manages spending, and has a lot more flexibility to decide how budget is managed. But with non-profits, government funded projects, and academic institutions, this is almost always not the case.

How to contend with this? Use estimates, not quotes. Estimates mean there are factors you are unsure of that might cause the final cost to be higher or lower than your best guess. Prospective clients should be made aware that oftentimes research is necessary prior to being able to give a well-educated estimate for a project... sometimes a lot of research. If you are reviewing an RFP, and get that gut feeling that the project's developer hours (hours of actual development work, not including meetings, documentation, etc.) could be anything between 150 and 700, stop right there! Never act like you can guarantee an estimate when you are this unsure.

If there are complicated parts to this project, such as database migrations from unknown sources, or major API integrations that you have not had a lot of experience with, be honest about this! Tell the client that it would be dishonest to give a very concrete estimate without first digging into the database or coding a proof-of-concept for the API integration. Don't just tell them what you think they want to hear to land the contract. Honesty is always the best policy, and will prevent you from breaking your word down the road.

If they are extremely wary of having a separate initial project phase that entails only research, give them an escape route: don't make them commit to having you do the build. If you trust your technical and interpersonal skills, and your team, this is a good way to build trust with the client, and show them that you are 100% confident you will do an excellent job completing the project. 

After you've done your discovery work, then you can go ahead and provide a much more detailed and accurate estimate for completing the project. This estimate for the second phase (the main development phase) is what you can substitute as your "fixed bid" estimate. But it's not really a fixed bid, because you're working within an agile framework. What this number represents, is a concrete cost for the main build phase. Which brings us to...

Flexibility and the three legs of the project sustainability stool

There's a widely used concept in sustainable development, the "three pillars" of sustainability, which are society, economy, and the environment. You can think of it like a three legged stool; if one leg is weak, you're sure to fall down, ie. lack long term sustainability. 

In web development, the three pillars tend to be seen as scope (the feature set and complexity of the project), cost (actual cost in dollars), and time (when the project is completed). Whereas in most fixed bid projects these are all set in stone from the beginning, and changes are a process in and of themselves, with agile development, we are much more flexible. That said, if there is a request to change one of these, the others will need to bend and accommodate. If you are actively accommodating your client's requests to modify the initial technical specifications (what features there will be and how they'll be built) during the course of a project, they need to fully understand that no change comes without a consequence.

If they want to add features (scope), they will either need to cut other features, or the project will cost more and take more time to complete. If they want to cut costs, they will need to cut features to accommodate. If they want a quicker completion, they may need to both increase budget (so you can hire extra developers) and cut features. We give our clients a fair amount of control over these things (within reason) as long as they understand the interplay of these three factors. This can only work when you have a solid relationship with your client, that is based in honesty and trust. If either of you doesn't hold up your end of the deal, this method will be a lot more risky.

Some clients may not want to contend with the risk and complexity this adds, and won't ask for any changes during the course of the project. This is totally okay, and makes for a quick and tidy project. But because we do some fairly complex projects at Affinity Bridge, many of the clients we've worked with find they start discovering new needs they did not know they had, or different needs than what was in their RFP. This is especially common once they start seeing exactly what it is we're building; we demo our in-progress builds to our clients early and often, and this leads to more discovery on their side about their business needs.

Some companies are completely against this approach, because obviously scope creep can be risky business. But we've found that the flexibility agile provides becomes a huge asset, and helps our clients to be more satisfied with, and have more of their needs met by, the completed project.

Phased development helps bridge the gap

One of the best ways we've found to contend with flexibility, while meeting the expectations and needs of both ourselves and our clients, is working with phased development. Breaking a big project into a few smaller phases helps cut down on the risk involved on both sides, while providing the time and structure to build trust with your client. 

We tend to work with three main phases:

  1. Discovery
  2. Build
  3. Additional Features

Sometimes in bigger projects, there are more than one "Build" phase, for example if there are huge custom feature sets, or a big database migration to tackle. The "Additional Features" phase is a nice way to contend with scope creep (ie. client requests for additional features to be pushed into the project without any give on the time or cost). It allows us to evaluate feature requests, consider whether they are a high enough priority to be accommodated in the main "Build" phase. And if not, push them into an upcoming phase that the clients know will actually happen (ie. not just brushing off the requests).

Finally, we almost always (unless the client has an internal developer/team to hand the project over to upon completion) follw the final phase of development with ongoing maintenance, that might sometimes involve future "Phases" if there is a larger feature/change needed. All Drupal sites require a small amount of maintenance to keep modules and the core system up to date on security updates. Often, there are also smaller follow-up requests from the clients as they use their new site and discover needs they weren't anticipating initially.

Resources

A lot of these lessons have come purely through experience, but in talking with other project managers, I've found that this is a system that is becoming fairly common among Drupal webdesign and development companies, especially those experimenting with using agile development practices. Here are some general resources I found helpful early on in the transition, as well as articles more specifically on the topic of agile estimating:

If you're confused about what Agile Development is, or by some of the language I've used, I highly recommend reading Practices of an Agile Developer or at least Wikipedia's page on Agile software development.

Comments

An exceptionally useful

An exceptionally useful summary, thank you. We are a small drupal shop that work a lot with non-profits and we have forever been grappling with the issues in fixed bid RFPs. After reading Victor Kane's book on Drupal with an agile approach, we have been looking to move to it but without much success because of the client issues you have summarized so nicely here. I will be bookmarking this article for our internal reference and discussion. The list of resources also appear very helpful. Thank you for taking the time to write.

Great to hear you found it

Great to hear you found it useful! The agile estimating book by Mike Cohn is really great just for getting a better feel of how to get started with estimating the work that goes into projects and individual sprints if you've recently been moving to agile. Our company ranges from 6-10 people (depending on who's in school and whether our two remote team members are actively on our projects), so I know the risk that is associated with fixed bids for a small company can be very high. We've definitely found that these changes in our process have been helping us transition more smoothly in regards to how it affects our clients. And overall, ending up with more cleanly managed projects with happier faces all around!

While i'm a believer in Agile

While i'm a believer in Agile for a host of reasons, i'm yet to see anyone address what implications the Drupal platform has for doing agile web development. Your post is an awesome start towards that!

In reading the "theory" of Agile, it's easy to overlook that site building in Drupal is quite different than traditional software development, given that (typically) a minimum of 80% of the heavy lifting is done with Drupal core and contributed modules, chosen with an eye towards stability and their relation to the evolution of the Drupal project as a whole. It's often the other 20% of the requirements that cost clients quite a bit more--maybe corresponding to your "Additional features" phase.

I've been using developing a lighter weight, agile-oriented version of the CivicActions estimating worksheet for a lot of projects, i'll try to find some time to generalize it for others and post it. It is meant to be more easily read by the client, and include a priority column that produces an estimate for each level of priority, perhaps as a google doc template.

Hi Kev - Drupal impacts on

Hi Kev -

Drupal impacts on Agile development..... sounds like good fodder for another post! Drupal is definitely a different beast when you go through thinking about how to build everything, how all the pieces will be put together, and the not so tiny matter of maintenance (which is very different than when using all custom code).

We often do piece of custom development (or the "other 20%") as part of the main build if it was part of the initial plan. But when things that look like custom work come up late in the game, it's often wise to push it to the next phase, where you also have more time to do extra research and make *sure* there's not already an existing module or tool to do the job. A lot of people, especially who are new to Drupal seem to rely too heavily on custom coding even simple things, just because they don't realize how much you can do just using core, contrib, and some fancy configuration tricks.

It'd be fantastic if you were up for posting that, Palantir also just posted some similar info about their estimating process http://www.palantir.net/blog/can-we-share-our-process-you - would love it if you posted it to the Drupal Project Management group so others could see too! http://groups.drupal.org/project-management

Thanks for the great feedback!

Not limited to agile

Great post A!

I don't really see anything in here that's limited to agile though, instead I think this post is useful to ANY web development company or freelancer for project estimation no matter what dev methodology they're using. Even in medium sized projects it's often impossible to account for everything in an estimate and I've never had a project where a client didn't try and squeeze in new features half way through the project.

I think the 3 phased approach really makes sense, but would you guys charge a client for the discovery phase if they decided not to accept your more accurate estimate?

One of the biggest issues in estimated development projects is that it's still too low-level for people to catch all the issues and necessary features. I'm hoping that re-usable features and install profiles will start making projects easier to estimate by making project builds operate at a higher level (if that makes any sense :) ).

Hey Scott! Well, this is a

Hey Scott!

Well, this is a highly modified way of billing when doing agile development. In ideal terms, we'd just be billing (on an hourly basis) *after* the work had been done, on a per sprint or monthly billing cycle. So, even doing the estimating up front for the entire project phase is going a bit against the grain. But these are some compromises that we've had to make for most of our clients. But you're right, these definitely could apply to non-agile projects as well.

We do indeed charge for the discovery phase, as we deliver a great amount of useful research (and sometimes prototyping) after this phase, which they could take away and use with another dev shop if they wanted to (ie. if for some reason they didn't want to work with us), so it's low risk for both us and the client. Fortunately, by the end of the discovery phase, it's usually obvious that we're very competent and can carry the project through to completion, so haven't had any cases where this has happened so far.

That's totally true about low-level estimating being fraught with peril, also why true agile billing would be much more beneficial for most dev shops (but not so easy for clients). But we are also seeing the same future, where using features and install profiles more and more will make it easy to attach a specific cost to for estimates. We've actually just started tracking time on specific feature builds more closely so that we can start having a very clear idea of how much each takes to build and use that as our pricing guide.

Discovery is consulting

Yeah, you pretty much have to charge for any non-trivial discovery. It is legitimate, valuable work (some consultants make a good living pretty much only doing discovery).

RFP bidding

I don't use Drupal, but more often than not, many of the companies (especially larger ones) we work with would rather have a fixed cost even if it's higher than to have to approve additional budgets. I guess you could say that large companies aren't very "agile."

True this happens a lot, but

True this happens a lot, but we tend to translate that fixed cost into the budget we're working within when defining scope. It doesn't mean the scope has to be fixed or that they can't push out the timeline if they want to. As long as only one of the three (time/scope/cost) is inflexible, it's usually possible to keep it somewhat agile.

Post new comment

The content of this field is kept private and will not be shown publicly.
  • Web page addresses and e-mail addresses turn into links automatically.
  • Allowed HTML tags: <a> <em> <strong> <cite> <code> <ul> <ol> <li> <dl> <dt> <dd>
  • Lines and paragraphs break automatically.

More information about formatting options