Fixed Price vs. T&M

Fixed_Price_vs_T&M

I don’t like fixed price contracts, or at least not in my industry – software design and build. It’s not that I don’t like constraints and deadlines – on the contrary, I think they help one focus and sometimes accomplish more than within complete freedom of action. It is, however, artificial constraints that urge me to consider alternatives.

The most prominent alternative to fixed price is the Time & Material, or simply T&M, type of contract. I will assume that the differences between the two are obvious and won’t bore you with explanations of what they are. However, I will put them head to head in order to show why my feeling, which has gradually turned into a strong opinion through experience and analysis, indicates the fixed price model as the inferior one.

A couple of considerations before we get to it:

  • This comparison is done in the context of  the software delivery (design, development) services industry. This is not to say that the arguments would not apply to other industries, only that I am most confident to talk about the former.

  • I am making an assumption, albeit a strong one, that a fixed price contract necessarily implies upfront requirements that allow for a decent indication of expected effort. After all, if the requirements are not clear, how would someone then be able to size work and thus accept obligations of a fixed price contract?

  • The opposite then, although only optionally, is true for T&M. This means that there can be a level of upfront requirements, for instance, enough to gauge an expected budget, but they are not required, because a budget can also be set on mere availability of financial resources or a simple spending appetite.

With this in mind, here’s why I believe clients would be much better off with T&M contracts versus fixed price.

Fixed price contract myths

To begin, let’s look at the main reasons behind choosing a fixed price contract over a T&M. The very word ‘fixed’ implies that there is a better (perceived) clarity around the object of the contract, which in turn provides stronger guarantees relating to:

  • Total cost of delivery

  • Definition of final deliverable

  • Timeline of delivery

Let’s look at each one separately.

Myth #1. Fixed price contract will help me manage costs better.

It will help you manage costs. However, it won’t let you do it better than a T&M contract would, as it’s just as easy, and just as common, to set up a budget for the latter.

Even if we assume that maximum spend can be equally well controlled by both, I would argue that business value received for the budget would be lower in a fixed price engagement, and here’s why:

  • A vendor will always overestimate effort required to deliver the outcome in order to ensure against the risk of not doing so, and the client ends up paying more for the equivalent amount of work, or receives less for the equivalent budget.

  • Part of that budget will also be spent on change management overhead, as opposed to delivering additional business value through software.

Change management is an important consideration here. Since a fixed price contract shifts all risk to the vendor, after contingency premium, change management is vendor’s primary tool for mitigating that risk. Since the purpose of change management is to identify any deviation from baseline requirements, price it and charge for it as additional work, this more often than not results in the final cost of delivery ending up higher than that in the original contract, thus hindering the effort to control total spend.

Myth #2. Fixed price defines final deliverables better.

Even though the name refers to a fixed price, or fixed fee, what really sets it apart from a T&M contract is a fixed scope. However, I think it’s needless to say that in most projects, especially in software projects, definition of exhaustive detailed requirements prior to commencement of delivery is very impractical  – not impossible, but impractical. What makes it so:

  • While people are really good at saying what they like or don’t like about something they see (one of the fundamental ideas behind agile delivery), we are quite bad at saying in sufficient detail what we want upfront. Which translates into incomplete or inaccurate requirements and the necessity for continuous requirements’ refinement.

  • Our own experience with upfront detailed requirements shows that due to changes in direction and priorities, as well as feedback to product deliveries, up to 40% of original requirements (including designs) do not make it into the final product. This is pure wasted effort.

Say, you do decide to define full requirements upfront. This requires a very concentrated effort and exceptional analytical skills. However, even if it is done, the following financial implications have to be considered:

  • Postponed revenue. Gathering and refinement of requirements is a time-consuming activity, and an attempt to accomplish it before beginning of development is done at a cost of delayed development and thus time-to-market.

  • Higher cost. If you contract specific resources, such as visual designers, you would be forced to use their services longer, because not only would they need to work on requirements, but also provide support to developers during delivery, as requirements are never good and clear enough on their own.

Therefore, a fixed price contract type is only applicable in a situation that is impractical to begin with.

Myth #3. A fixed price contract provides me with guarantees of when the final product is to be delivered.

This is true. If a vendor is falling behind a delivery schedule, the team can be ramped up, or development speed increased in other ways, if necessary, to meet the delivery deadlines. However, the same can be achieved with a T&M contract when working towards a milestone in a release or delivery plan. After all, a T&M contract often only defines the daily rate and total budget with sufficient flexibility in budget burn rate while working towards delivery goals.

Furthermore, the fixed price approach implies that, in order to deliver a fixed scope in a fixed amount of time, one needs to indicate, evaluate and contain any project-external influences and dependencies on any third party or client’s own internal resources that can impede a fluent delivery of the final solution – an extremely difficult task that often ends up with inflated SLAs and other commitments that are designed to act as insurance against non-delivery as opposed to reasonable coordination of efforts. With a ticking T&M meter, on the other hand, it is in the client’s best interest – mind you, both for vendor’s (smooth uninterrupted delivery) and client’s (efficient spending, fast delivery) sake – to ensure actions of different parties are orchestrated within the reasonable planning horizon to minimise/eliminate any downtime of project resources.

Product & requirements management

OK, so if we take away all the ‘comforts’ of the ‘clarity’ of the fixed price contract, and move all the risk back to the client, how can I possibly say that a client would be much better off with a T&M contract? Because, believe it or not, this is exactly what I am saying.

Well, the biggest issue, which I have witnessed all too often, is to do with the mentality behind a fixed price approach. Once a fixed price project is signed and in the drawer, the client goes into a state of mind which is something like ‘Ah… I can finally kick back, relax and just wait until my product is delivered to me’. And while this might be true for when you order a pizza, this is never the case when you order custom-made software.

What is the single most important input into software delivery? It’s requirements. There’s a reason why Scrum identifies Product Owner as indisputably the most important role in a project. And while development, QA, design and a number of other skill-sets are extremely important, it is the business value delivered through well conceived and prioritised requirements that determines success and failure of a project to the business.

And get this – product/requirements’ management is always (or should always be) the function of the client. And while T&M approach leaves all the risk with the client, it is an illusion that this risk can be outsourced or sold at a premium. The only way to deal with this risk is to manage it, and the best and only tool to do that is good requirements’ management.

I have already made a point that it makes little sense to prepare upfront full-detail requirements, but  more often than not one would want to do some upfront requirements definition/design – only enough to understand the scope of the project, inform architectural considerations as well as allow for very high-level sizing and estimation – never a commitment. Instead, as requirements are being produced and refined, they are also prioritised to make sure that more important functionality will be implemented before the more trivial.

So, where fixed price approach is trying to box requirements with time and cost constraints, T&M merely uses either or both of the constraints as a line which can easily be crossed (through trade-offs) while performing the task of continuous (re)prioritisation with the goal of delivering highest business value within the constraint.

So… what’s so great about T&M?

I believe that what a T&M contract does is create one simple thing, and that is a healthy collaborative environment that is critical to any project’s success. And it does so by correctly defining the two key ingredients of a good project:

  • Skill-set. The very reason for a client to consider a service provider is the need for specific skills (design, technological, IT architecture, project/programme management, etc.) that it lacks within its own organisation. And a vendor provides these skills at an agreed price – the daily rate.

  • Leadership in the form of requirements’ management, as it not only entails the direction of the product to be built, but also bears the responsibility of success or failure of the project. I believe it is self-deceit that this responsibility can be outsourced, or concentrated into a short effort before the beginning of the project.

No project will succeed without these two components. And if T&M provides a great basis for these working together, why the overhead of a fixed price?

Conclusion

This article is, without a doubt, very one-sided in favour of T&M contracts. And for a number of good reasons which, if I did a good or at least a decent job, are clear and indisputable. However, it would be wrong to say that there is no place for fixed price contracts – there certainly is.

What kind of project could qualify for a fixed price? A small one. How small is small enough? I believe the best way to gauge that is to see what project management approach you would feel more comfortable applying:

  • If the requirements are small, clear and detailed enough so that you can construct a robust waterfall plan that you are confident you will deliver with little slippage, then there’s no harm in going fixed price.

  • However, if you think that too much time would be wasted on getting a deep understanding of requirements at the outset of the project, and a resulting sequential plan still urges you to slap a big fat contingency on the price, then agile approach with a T&M contract seems a better candidate.

In any case, when you think about what services we normally buy for fixed price, it’s usually something relatively simple, something repetitive – a shoe sole to be repaired, a haircut, a wedding photographer hire even. However, you rarely expect a price upfront for fixing a car after an accident, or for legal services to draw up a proprietary contract without a raft of ‘if‘ clauses. Less so should we expect to give a fixed price for building software, which is neither simple nor repetitive. Agile approach to software delivery was invented for this exact reason that it is so difficult (virtually impossible) to plan out software for A to Z, and if you can’t plan it, you can’t reliably estimate and cost it.

designer and developer caricature

10 ways to improve your working relationship with your developers

— a UXers guide by Amanda Wright —

1. Respect your developers

As user experience professionals we demand respect for our ‘craft’ and so you should respect your developer’s code. Remember, it’s easier to imagine than it is to build.

2. Don’t throw things over the fence
There’s nothing worse than finishing everything to the nth degree, handing it over to the developers and then vanishing, with scarcely a thought given to the implementation.

If you leave the developers to their own devices, don’t complain when they start to fill in any blanks or make decisions for you. Make sure you are around to answer questions and help with the QA and release process.

Being available post-release to monitor feedback channels can provide you with valuable feedback and help identify bugs that may have slipped through.

3. Work (largely) in parallel
This is a controversial one, particularly in agency environments where signing off deliverables and meeting deadlines is key. Once sketches have been agreed, developers can start thinking about how to structure the application, giving you a chance to move onto higher fidelity wireframes. Once these are agreed, developers can move onto building the interface. This allows for problems to be identified and solutions to be devised as a team (and documented for posterity if needed).

One caveat is that the visual design should be relatively fixed before you hand over to development as a complete rework of CSS and Javascript is painful. This shouldn’t prevent you from tightening up things as part of a normal design review process.

4. Embrace developers’ problem solving powers
We often like to think of ourselves as the champion problem solvers, but guess what? Developers like to solve a challenge or two as well. I’ve found that identifying the areas in which developers can add value, or even just leaving them a little space to make their own mark on the experience, can do wonders.

During implementation, if they identify a problem that needs resolving, allow them to suggest a solution first before you jump in with one of your own, they might just surprise you.

5. Involve developers in user testing
Bringing to life the voice of people who use to your website or service is one of the key objectives for someone in a user experience role. Go one step further by sharing videos and feedback from testing with your developers. If possible, allow them to observe if they have time to attend sessions. Watching people struggle in a user study is worth a thousand times more than just banging on about a user-centred design approach.

6. Use Shared Nomenclature
For an industry that intends to make things clearer, we do love a good buzzword and have a tendency to use lots of acronyms. Using plain language should start when you communicate to your developers and the wider team. The user experience community has recently adopted development terminology and made it our own (Agile and Lean UX spring to mind) so it’s important that everyone is clear what we mean when we use these terms, especially as the mental models can often differ.

7. Make time to share learnings from your industry
Just as you have to contend with countless user experience methods, new interaction paradigms and fine tuning your soft skills, developers (I’m talking largely front-end here) need to overcome the latest browser quirks, keep up to date with new languages and the endless parade of new shiny devices. Both tribes face significant challenges in order to keep up to date. Make time to share what you’ve learned so you both are aware of what’s going on in each other’s world.

8. Learn to be lazy
Sounds a little odd but there is a long running joke that a good programmer is a lazy programmer. Developers will strive to overcome redundancy and automate anything that needs to be done more than twice. Rather than reinventing the wheel, we should look to adopt standard patterns where appropriate and build upon existing user experience work. One way of doing something, is always better than three – especially on the same website or service!

9. Be pragmatic
This doesn’t mean that you should stick to something ‘safe’ when you are designing an experience, it means that you should be realistic about budgets and technical constraints that you have to deal with. A simple, functional and well-executed solution is more valuable to your client or company than a stripped back, half-finished solution that would have been great if all the bells and whistles were included. When it comes down to the crunch, the bells and whistles are always the first to go.

10. Don’t be the “I” in team
As the cliché goes, “there’s no “I” in team. It doesn’t matter if you designed the best experience in the world, if the implementation is poor, slow or full of bugs. You are only as good as the developers you are working with.