Read my latest article: Launching Rails projects, an open call for lessons learned (posted Tue, 23 Jun 2009 17:33:00 GMT)

The Art of Delivery, part 2

Posted by Robby Russell Thu, 22 May 2008 18:42:00 GMT

3 comments Latest by Finanzamt Mon, 26 May 2008 18:48:11 GMT

Two years ago, I wrote an article titled, The Art of Delivery. I wanted to post a few updates based on how our process has evolved since then (and continues to).

Over the past few years, we’ve been fortunate enough to work on quite a diverse collection of projects. This has enabled us to work with many different clients and solicit feedback on our process. This has given us an opportunity to evolve a set of best practices that fulfills the long-term project goals/budgets of our client while making sure that we’re able to maintain a design and development process that is agile.

As I’ve mentioned in previous posts, our team typically bills work per-iteration on projects rather than per-hour or a flat-bid per-project. Since iterations are bite-sized pieces of the entire project and limited to 1-2 weeks, our teams estimates are much more accurate and we’re able to keep things rolling and on track.

stay on track

The basic structure of our project looks like this.

  • A Project has many releases
  • A Release has many iterations
  • An Iteration has many deliverables
  • A Deliverable has many tasks

Before we begin working on an iteration, we outline a set of goals that we want to create solutions for. This process comes out of discussions between our client and us until we agree on what is the highest value/most critical to the success of the project, based on our shared understanding of where we are today. These goals translate into Deliverables, which in a typical iteration might require Interaction Design, Interface Design, or Development. We tend to break our process up into stages so that Interaction Design on Module XYZ would be implemented in a following iteration. This is because it’s unrealistic to expect someone to provide an accurate estimate on how long it’ll take to implement something before you know how people will interact with it.

Within any given iteration, our team is spread across several sets of deliverables. As a team, we breakdown these deliverables into smaller sets of tasks. It’s our aim to keep tasks smaller than a full days worth of work as it’s much easier to measure progress across the iteration when we can track tasks at a granular level.

Essentially, tasks are the individual steps needed to achieve these goals. We don’t go out of our way to list each one of those during an estimate process as some tasks take less time than it takes to generate an estimate for them. Each person providing estimates should avoid getting too granular and aim to find a good balance that compliments their workflow.

Like most things… mileage may vary.

Through this process, we can get calculate the estimated costs for each deliverable, which then provides us an cost for the entire iteration. In addition to deliverables, we also budget a set of hours/days so that we can be compensated for handling small requests, bug fixes, and project management. It’s important to factor these things into your process.

In future posts, I’ll discuss how we’re handling this process while working on multiple projects… as that’s where it can chaos can start if you’re not careful. ;-)

oops

How does your team work? As we’re always evolving our process in an effort so that we can be more efficient and speed up our delivery cycle, I’d love to learn from those in the community.

Subscribe to my RSS feed Enjoying the content? Be sure to subscribe to my RSS feed.
Comments

Leave a response

  1. Avatar
    Dylan Markow Fri, 23 May 2008 02:47:34 GMT

    We use a very similar system that works great. We have projects, milestones, deliverables, and then actions. Our company is a construction consultancy, but the system is really universal for any type of project. We have project managers coordinating work with 3-4 different people on a project “team” and using this system has really helped our people to manage their projects proactively rather than reactively (which is how we did it several years ago).

    Each of our staff is involved in 25-30 projects at any given time, and without these planning systems we would have to spend countless (non-billable) hours trying to “refresh” ourselves on what we promised to the clients. I run 4-5 internal programming projects as well (rails and merb stuff) and our company systems work perfectly for it.

    We’ve found recently that publishing this Project Plan to our clients early in the process really helps to make sure we’re all on the same page. (It also helps to avoid any surprises when invoices ship each month). Also, whereas we used to ship maybe one or two main deliverables on a project, we’re now trying to ship the “support deliverables” as well, resulting in as many as 10-15 different things getting pushed to the client. The more of this we provide, the more feedback we get sooner rather than later.

    I know we modeled a lot of our stuff after a basic Work Breakdown Structure which ensures that any given level of our planning captures 100% of the categories/sections necessary to achieve the desired end-result. We’re also looking into doing an Earned Value Analysis on each project to make sure we’re keeping in line with the schedule/budgeting.

    p.s. I think the sign has changed since you snapped it

  2. Avatar
    Theo Fri, 23 May 2008 16:01:34 GMT

    Hey Robby,

    The pay-by-iteration development methodology is certainly superior in the resulting quality of the product, but most of my new clients prefer a dollar amount up front. Sometimes I am required to submit a competitive bid with these figures included.

    I was curious to hear how you transitioned your old and new clients to the iterative payment model, and if you have any pointers for fixed bid contracts (or if you avoid them).

    Thanks!

    -Theo

  3. Avatar
    Finanzamt Mon, 26 May 2008 18:48:11 GMT

    Nice! :)

Share your thoughts... (really...I want to hear them)

Comments